Explain the remaining switch-offs, warm stars and W1 dimmers, refit the dark comets' normal terms with radar, and add four null tests
Browse files- LEDGER.md +15 -11
- README.md +10 -6
- RESULTS.md +49 -17
- coverage.db +2 -2
- setitools/flashes.py +77 -0
- setitools/infrared.py +146 -17
- setitools/lasers.py +116 -0
- setitools/radio_sky.py +96 -14
- setitools/solar_system.py +227 -12
- setitools/transits.py +89 -0
LEDGER.md
CHANGED
|
@@ -223,7 +223,7 @@ is its docstring, and its calls are in the recipes of `README.md`.
|
|
| 223 |
| 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`) |
|
| 224 |
| 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`) |
|
| 225 |
| 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`) |
|
| 226 |
-
| Warm stars in Earth's transit zone | Gaia Catalogue of Nearby Stars with its WISE photometry; SIMBAD |
|
| 227 |
| 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`) |
|
| 228 |
| 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`) |
|
| 229 |
| 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`) |
|
|
@@ -259,7 +259,7 @@ is its docstring, and its calls are in the recipes of `README.md`.
|
|
| 259 |
| 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 |
|
| 260 |
| 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 |
|
| 261 |
| 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 |
|
| 262 |
-
| 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
|
| 263 |
| 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 |
|
| 264 |
| 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 |
|
| 265 |
| 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 |
|
|
@@ -277,7 +277,7 @@ is its docstring, and its calls are in the recipes of `README.md`.
|
|
| 277 |
| 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's 6.20 h, 1.38 times the maximum in one solution, stands against the TOI table's measured 3.75 h, 0.84 of it; none unexplained |
|
| 278 |
| 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 |
|
| 279 |
| 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; the 10 left are Gaia's: the table's frequencies pile up at 38-41, 51-55 and 66-69 cycles a day, where six of the 10 sit, five are catalogued rotators, an eclipsing binary or delta Scuti stars, and TESS two-minute light curves of four hold 3-13 ppm at Gaia's frequencies against its 13,000-27,000; none unexplained |
|
| 280 |
-
| 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,
|
| 281 |
| 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 |
|
| 282 |
| 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) |
|
| 283 |
| 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 |
|
|
@@ -320,7 +320,7 @@ is its docstring, and its calls are in the recipes of `README.md`.
|
|
| 320 |
| 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`) |
|
| 321 |
| 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`) |
|
| 322 |
| 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`) |
|
| 323 |
-
| 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 |
|
| 324 |
| 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`) |
|
| 325 |
| 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`) |
|
| 326 |
| 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`) |
|
|
@@ -342,8 +342,8 @@ is its docstring, and its calls are in the recipes of `README.md`.
|
|
| 342 |
| 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`) |
|
| 343 |
| 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`) |
|
| 344 |
| 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`) |
|
| 345 |
-
| 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,
|
| 346 |
-
| 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,
|
| 347 |
| 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`) |
|
| 348 |
| 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`) |
|
| 349 |
| 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`) |
|
|
@@ -371,7 +371,7 @@ is its docstring, and its calls are in the recipes of `README.md`.
|
|
| 371 |
| 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`) |
|
| 372 |
| 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`) |
|
| 373 |
| 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`) |
|
| 374 |
-
| 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);
|
| 375 |
| 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`) |
|
| 376 |
| 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`) |
|
| 377 |
| 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`) |
|
|
@@ -384,7 +384,7 @@ is its docstring, and its calls are in the recipes of `README.md`.
|
|
| 384 |
| 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`) |
|
| 385 |
| 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`) |
|
| 386 |
| 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`) |
|
| 387 |
-
| 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`) |
|
| 388 |
| 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`) |
|
| 389 |
| 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`) |
|
| 390 |
| 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`) |
|
|
@@ -403,6 +403,10 @@ is its docstring, and its calls are in the recipes of `README.md`.
|
|
| 403 |
| Atmospheres of the rocky planets of red dwarfs | ESO Phase 3 (HARPS, ESPRESSO, NIRPS, CRIRES, UVES), the CADC (CFHT SPIRou) and KOA (Keck NIRSPEC): 1,611 spectra in or beside the transits of 42 of the 114 planets below 1.8 Earth radii of stars cooler than 4000 K within 50 pc, 13 planets with four or more spectra on each side of a transit, each night's out-of-transit median as the star; the 229 HARPS spectra of the Moon through the Venus transit of 2012 June 6 as the control | 27 planet-instrument-line tests and no planetary absorption: 3 sigma limits on He I 10830 in the planet's frame (the core mean, the reversed trail's residual folded in) of 0.12 per cent at GJ 486 b from 86 SPIRou in-transit spectra, below the 0.2 published from two of its transits, 0.16 and 0.30 at HD 260655 b and c, 0.50 and 0.57 at L 98-59 d and c, 0.75 at TOI-270 b, 2.1 at LP 791-18 d and 15.7 at TRAPPIST-1 b, the first helium limits for all but GJ 486 b and TRAPPIST-1 b; the M dwarfs' H alpha and Na D cores move by 1-13 per cent with the sky's sodium and the stars' flares, every excursion matched by the reversed trail; the Moon through the Venus transit shows a -2.9 per cent core residual in both lines from the night's airmass, matched by the reversed trail as well; a 0.5 per cent line injected in the planet's frame returns 0.12-0.20 in the core mean, 0.4 of a 4 km/s line's depth (`rocky_dwarfs_shoreline`) |
|
| 404 |
| Planet-frame compositions of the giant planets | ESO Phase 3 and the CADC: the 48 HARPS and ESPRESSO transit sets of four or more in-transit spectra among the 945 giant planets brighter than V 11 (588 of their 800 hosts hold archived spectra), 2,463 in-transit spectra of 45 planets with the same nights' spectra beside them, and the SPIRou sets of WASP-76 b and HD 209458 b and the NIRPS sets of WASP-76 b and WASP-121 b; Kurucz's gfall lines for Fe I, Fe II, Ti I, V I, Cr I, Na I, Ca I, Mg I and K I, petitRADTRANS cross-sections for CO and water; SIMBAD's velocity where the archive lacks one | 47 planet-instrument sets searched and one species found: vanadium in WASP-121 b at 6.2 sigma on the orbit against a sham of 2.8 (Ben-Yami et al. 2020 found it at 4.5 from the same spectra), chromium there at 2.5 and in WASP-76 b at 3.1 under the threshold; a species resting on one line (Ca I, Mg I) or two (Na I, K I) is left to the line tests, since a deep stellar line's transit distortion sums along every trail; the shadow fit is bounded, kept to the optical atomic templates and given to the sham rows as well, since laid into the in-transit rows alone it sums to tens of sigma at rest; water in WASP-76 b at 4.7 sigma on the orbit from its 87 archived SPIRou in-transit spectra after three SysRem passes, the sham at 1.9 and the map's peak at K_p 50, so held under the rule (Hood et al. 2024 found it in one of those transits), CO there at 3.4; water in HD 209458 b's 13 SPIRou spectra at 3.9 with the map's peak off the orbit; HD 209458 b empty in the optical as published; sodium in WASP-69 b, a published detection, at 1.0 sigma in the cross-correlation, its two D lines left to the line tests; every other orbital value below 6 sigma or matched by the sham, the K dwarf HD 189733's own iron pattern reaching 5.4 against a sham of 6.4 and WASP-101 b's Fe II 5.7 with the map's peak at K_p 30, which the rule refuses; WASP-189 b, an A star rotating at 93 km/s, beyond the shadow model and flagged; the NIRPS sets of WASP-76 b and WASP-121 b, whose telluric residuals drive the sham maps to -12 and -90 sigma, marked not measured; a 0.5 per cent iron line injected into WASP-76 b adds 0.8 sigma; reflected starlight, the star's own spectrum as the template with the pattern and five principal components taken out of the rows and the gain measured by a 100 ppm copy laid into the same spectra: none from 51 Peg b at 43 ppm (3 sigma) from 300 HARPS and ESPRESSO spectra, the probe returned at 0.90, which places the contrast of 6e-5 claimed by Martins et al. 2015 at 4.2 sigma in the map, and tau Boo b's 299 campaign spectra near superior conjunction, where the components take 0.79 of the probe, at 546 ppm (`giants_planet_frame`) |
|
| 405 |
| Companions of single-lined binaries along their known orbits | ESO Phase 3: the 37 EBLM binaries with Gaia DR3 single-lined orbits and archived HARPS series of 20 or more spectra above S/N 10, periods below 100 d covered three or more times, up to 300 spectra each spread over the span, and TOI-1338's 260 ESPRESSO spectra; Gaia DR3 non-single-star orbits and SB9 for the catalogue orbits; an M1 V template from GJ 367's archived HARPS spectra and a G0 V velocity template from J0310-31's own | four companions at 5 sigma or more on their own nulls, each summit at an offset of +1.0 km/s set against 10,000 draws of each null with a Gumbel law for the tail: TOI-1338's (ESPRESSO) at a false-alarm probability of 1e-11, J0310-31's at 8e-12, HD 4875's (J0050-18) at 1e-8 and J2101-45's at 4e-9, the last at 1.5e-7 (5.1 sigma) across the survey's 35 binaries; with the companion's systemic offset free, K2 of 77.27 +- 0.10 +- 0.15, 88.12 +- 0.18 +- 0.34 and 75.29 +- 0.30 +- 0.87 km/s (statistical, then systematic from the series' parts by date and its seasons) for the three with published values (77.16 +- 0.48, 88.27 +- 0.46 and 75.13 +- 0.16), masses within 0.6 per cent of the published dynamical ones and the companions' lines +1.05 to +1.25 km/s from the primary's systemic velocity, which held at zero moves K2 by up to 0.55 km/s; J2101-45 at K2 65.41 +- 0.32 +- 0.32 km/s with minimum masses of 1.415 and 0.552 Msun, held under 3 and 8 principal components, either half of the band and an L 98-59 template and recovered when injected into its spectra; J0649-27, J0825-67 and J1141-37 candidates at 3.9, 3.6 and 3.3 sigma alone and 3.0, 2.6 and 2.1 across the survey; TOI-1338's 73 HARPS spectra at 2.8 sigma and J1928-38's 74 at 0.3 at their published K2; J0543-57 and J2126-28 too thin to search (`binaries_eblm_known_orbits`) |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 406 |
|
| 407 |
## Queued
|
| 408 |
|
|
@@ -538,7 +542,7 @@ Results about natural objects, instruments and catalogues that the searches prod
|
|
| 538 |
|---|---|---|
|
| 539 |
| (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 |
|
| 540 |
| 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 |
|
| 541 |
-
| PSR J1420-6048
|
| 542 |
| 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 |
|
| 543 |
| 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 |
|
| 544 |
| 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 |
|
|
@@ -556,8 +560,8 @@ Results about natural objects, instruments and catalogues that the searches prod
|
|
| 556 |
| 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 |
|
| 557 |
| 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 |
|
| 558 |
| 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 |
|
| 559 |
-
| CNEOS fireballs since 2018 faster than the Sun lets anything bound move:
|
| 560 |
-
| 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 |
|
| 561 |
| 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 |
|
| 562 |
| 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 |
|
| 563 |
| EBLM J2101-45's M-dwarf companion, measured for the first time, from 75 archived HARPS spectra over 2298 d: K2 65.41 +- 0.32 +- 0.32 km/s (statistical, then systematic from its eight seasons) at false-alarm probabilities of 4.3e-9 (5.8 sigma) on its own nulls and 1.5e-7 (5.1 sigma) across the survey's 35 binaries, the five variants of the analysis giving 65.26-65.91 km/s and a companion injected at a flux ratio of 1e-3 recovered at 65.61 km/s; minimum masses of 1.415 +- 0.024 and 0.552 +- 0.006 Msun, within 0.7 per cent of the masses themselves since the binary eclipses and its primary's Gaia DR3 radius of 2.67 Rsun then needs sin^3 i above 0.993, against the model-based 1.29 +- 0.10 and 0.523 +- 0.043 Msun of Triaud et al. (2017); HD 4875's companion, measured before only in the near-infrared, is detected in the optical, and the companions of J0649-27, J0825-67 and J1141-37 remain candidates at 2.1-3.0 sigma across the survey | `binaries_eblm_known_orbits` | papers/double_lined |
|
|
|
|
| 223 |
| 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`) |
|
| 224 |
| 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`) |
|
| 225 |
| 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`) |
|
| 226 |
+
| Warm stars in Earth's transit zone | Gaia Catalogue of Nearby Stars with its WISE photometry; SIMBAD | 0 warm of 911 stars in the zone against 2.31 expected from the 35 of 13800 stars 1-5 deg away (p 1), with every colour taken from AllWISE's plain W1: the proper-motion-fitted W1 of the Catalogue of Nearby Stars runs 0.3-1.1 mag faint for bright and fast stars and made 2712 stars look warm (`etz_warm_stars`) |
|
| 227 |
| 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`) |
|
| 228 |
| 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`) |
|
| 229 |
| 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`) |
|
|
|
|
| 259 |
| 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 |
|
| 260 |
| 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 |
|
| 261 |
| 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 |
|
| 262 |
+
| 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, all artefacts: 6 carry AllWISE flags and the rest lose their excess with AllWISE's plain W1, the catalogue's proper-motion-fitted W1 being 0.3-0.5 mag faint for these K and M dwarfs moving 0.4-1.0 arcsec a year (`w3_only_excess`) |
|
| 263 |
| 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 |
|
| 264 |
| 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 |
|
| 265 |
| 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 |
|
|
|
|
| 277 |
| 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's 6.20 h, 1.38 times the maximum in one solution, stands against the TOI table's measured 3.75 h, 0.84 of it; none unexplained |
|
| 278 |
| 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 |
|
| 279 |
| 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; the 10 left are Gaia's: the table's frequencies pile up at 38-41, 51-55 and 66-69 cycles a day, where six of the 10 sit, five are catalogued rotators, an eclipsing binary or delta Scuti stars, and TESS two-minute light curves of four hold 3-13 ppm at Gaia's frequencies against its 13,000-27,000; none unexplained |
|
| 280 |
+
| 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, 35 saturated or flagged, 16 matched to another source or split by their motion; the 6 M6-L3 dwarfs moving 0.4-0.9 arcsec a year hold their AllWISE W1 within 0.15 mag across NEOWISE's single exposures of 2014-2024, so CatWISE's proper-motion fit, not the stars, is faint (`allwise_catwise_w1_change`) |
|
| 281 |
| 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 |
|
| 282 |
| 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) |
|
| 283 |
| 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 |
|
|
|
|
| 320 |
| 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`) |
|
| 321 |
| 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`) |
|
| 322 |
| 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`) |
|
| 323 |
+
| 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 | 1 warm, a G 14.9 star with a W4 excess, against 0.41 expected from the band's share (p 0.34), with every colour taken from AllWISE's plain W1; with the ultraviolet count of the zone's stars this closes the Jupiter-zone programme (`jupiter_zone_warm_stars`) |
|
| 324 |
| 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`) |
|
| 325 |
| 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`) |
|
| 326 |
| 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`) |
|
|
|
|
| 342 |
| 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`) |
|
| 343 |
| 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`) |
|
| 344 |
| 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`) |
|
| 345 |
+
| 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; then RACS-mid, RACS-high, RACS-low3 and LoTSS DR2 within 30 arcsec, RACS-mid and TGSS within 90 arcsec for the lobes of brighter sources, and the VLASS quick-look images at the CADC | 281 missing, all explained: 132 of known types, 12 beside sources above 5 Jy, 130 still shining in a later survey, in the component list's holes or above 10 sigma in the VLASS images themselves (the four north of +70 deg at 75-223 mJy across all three epochs), and 7 hotspots of bright doubles such as 3C 192, 3C 263 and 3C 382, catalogued 54-80 arcsec away as one source (`nvss_vlass_switchoffs`) |
|
| 346 |
+
| 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 are dark comets of Seligman et al. (2024); refitted in ASSIST, 2016 GW221 keeps A3 +3.4e-11 au/d^2 at 8.1 sigma with site weights and 3.9 sigma with each night as one position once JPL's Arecibo delay of 2019 is fitted to 0.1 us, at 4.7 sigma or more with any apparition left out, while 2013 XY20's A3 of 4.3 sigma with site weights falls to 2.5 with nights and vanishes without its 2019 apparition; none unexplained (`sbdb_out_of_plane`, `darkcomet_normal_2016_gw221`, `darkcomet_normal_2013_xy20`) |
|
| 347 |
| 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`) |
|
| 348 |
| 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`) |
|
| 349 |
| 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`) |
|
|
|
|
| 371 |
| 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`) |
|
| 372 |
| 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`) |
|
| 373 |
| 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`) |
|
| 374 |
+
| 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); 2026-04-01, 51.8 km/s heliocentric from CNEOS and the Polar-IM of Cloete and Loeb (2026), is 41.5 and 41.1 km/s on the two velocities Silber et al. (2026) triangulate from GOES-East's lightning mapper and MTG-I1's lightning imager, 18 per cent slower, below the 42.1 km/s escape speed and hyperbolic in 35 per cent of draws within their errors; 2021-05-06 (43.7 km/s) and 2022-07-28 (47.4 km/s, CNEOS-22) are bound in none of 20,000 and are not explained (`cneos_hyperbolic_fireballs`) |
|
| 375 |
| 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`) |
|
| 376 |
| 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`) |
|
| 377 |
| 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`) |
|
|
|
|
| 384 |
| 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`) |
|
| 385 |
| 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`) |
|
| 386 |
| 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`) |
|
| 387 |
+
| 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; HSC-SSP DR3 covers J000744+022626 and J231637+015200 and holds nothing within an arcsecond at S/N 4 or more in g, r or z, to about r 26 (`crates_hostless_nir`) |
|
| 388 |
| 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`) |
|
| 389 |
| 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`) |
|
| 390 |
| 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`) |
|
|
|
|
| 403 |
| Atmospheres of the rocky planets of red dwarfs | ESO Phase 3 (HARPS, ESPRESSO, NIRPS, CRIRES, UVES), the CADC (CFHT SPIRou) and KOA (Keck NIRSPEC): 1,611 spectra in or beside the transits of 42 of the 114 planets below 1.8 Earth radii of stars cooler than 4000 K within 50 pc, 13 planets with four or more spectra on each side of a transit, each night's out-of-transit median as the star; the 229 HARPS spectra of the Moon through the Venus transit of 2012 June 6 as the control | 27 planet-instrument-line tests and no planetary absorption: 3 sigma limits on He I 10830 in the planet's frame (the core mean, the reversed trail's residual folded in) of 0.12 per cent at GJ 486 b from 86 SPIRou in-transit spectra, below the 0.2 published from two of its transits, 0.16 and 0.30 at HD 260655 b and c, 0.50 and 0.57 at L 98-59 d and c, 0.75 at TOI-270 b, 2.1 at LP 791-18 d and 15.7 at TRAPPIST-1 b, the first helium limits for all but GJ 486 b and TRAPPIST-1 b; the M dwarfs' H alpha and Na D cores move by 1-13 per cent with the sky's sodium and the stars' flares, every excursion matched by the reversed trail; the Moon through the Venus transit shows a -2.9 per cent core residual in both lines from the night's airmass, matched by the reversed trail as well; a 0.5 per cent line injected in the planet's frame returns 0.12-0.20 in the core mean, 0.4 of a 4 km/s line's depth (`rocky_dwarfs_shoreline`) |
|
| 404 |
| Planet-frame compositions of the giant planets | ESO Phase 3 and the CADC: the 48 HARPS and ESPRESSO transit sets of four or more in-transit spectra among the 945 giant planets brighter than V 11 (588 of their 800 hosts hold archived spectra), 2,463 in-transit spectra of 45 planets with the same nights' spectra beside them, and the SPIRou sets of WASP-76 b and HD 209458 b and the NIRPS sets of WASP-76 b and WASP-121 b; Kurucz's gfall lines for Fe I, Fe II, Ti I, V I, Cr I, Na I, Ca I, Mg I and K I, petitRADTRANS cross-sections for CO and water; SIMBAD's velocity where the archive lacks one | 47 planet-instrument sets searched and one species found: vanadium in WASP-121 b at 6.2 sigma on the orbit against a sham of 2.8 (Ben-Yami et al. 2020 found it at 4.5 from the same spectra), chromium there at 2.5 and in WASP-76 b at 3.1 under the threshold; a species resting on one line (Ca I, Mg I) or two (Na I, K I) is left to the line tests, since a deep stellar line's transit distortion sums along every trail; the shadow fit is bounded, kept to the optical atomic templates and given to the sham rows as well, since laid into the in-transit rows alone it sums to tens of sigma at rest; water in WASP-76 b at 4.7 sigma on the orbit from its 87 archived SPIRou in-transit spectra after three SysRem passes, the sham at 1.9 and the map's peak at K_p 50, so held under the rule (Hood et al. 2024 found it in one of those transits), CO there at 3.4; water in HD 209458 b's 13 SPIRou spectra at 3.9 with the map's peak off the orbit; HD 209458 b empty in the optical as published; sodium in WASP-69 b, a published detection, at 1.0 sigma in the cross-correlation, its two D lines left to the line tests; every other orbital value below 6 sigma or matched by the sham, the K dwarf HD 189733's own iron pattern reaching 5.4 against a sham of 6.4 and WASP-101 b's Fe II 5.7 with the map's peak at K_p 30, which the rule refuses; WASP-189 b, an A star rotating at 93 km/s, beyond the shadow model and flagged; the NIRPS sets of WASP-76 b and WASP-121 b, whose telluric residuals drive the sham maps to -12 and -90 sigma, marked not measured; a 0.5 per cent iron line injected into WASP-76 b adds 0.8 sigma; reflected starlight, the star's own spectrum as the template with the pattern and five principal components taken out of the rows and the gain measured by a 100 ppm copy laid into the same spectra: none from 51 Peg b at 43 ppm (3 sigma) from 300 HARPS and ESPRESSO spectra, the probe returned at 0.90, which places the contrast of 6e-5 claimed by Martins et al. 2015 at 4.2 sigma in the map, and tau Boo b's 299 campaign spectra near superior conjunction, where the components take 0.79 of the probe, at 546 ppm (`giants_planet_frame`) |
|
| 405 |
| Companions of single-lined binaries along their known orbits | ESO Phase 3: the 37 EBLM binaries with Gaia DR3 single-lined orbits and archived HARPS series of 20 or more spectra above S/N 10, periods below 100 d covered three or more times, up to 300 spectra each spread over the span, and TOI-1338's 260 ESPRESSO spectra; Gaia DR3 non-single-star orbits and SB9 for the catalogue orbits; an M1 V template from GJ 367's archived HARPS spectra and a G0 V velocity template from J0310-31's own | four companions at 5 sigma or more on their own nulls, each summit at an offset of +1.0 km/s set against 10,000 draws of each null with a Gumbel law for the tail: TOI-1338's (ESPRESSO) at a false-alarm probability of 1e-11, J0310-31's at 8e-12, HD 4875's (J0050-18) at 1e-8 and J2101-45's at 4e-9, the last at 1.5e-7 (5.1 sigma) across the survey's 35 binaries; with the companion's systemic offset free, K2 of 77.27 +- 0.10 +- 0.15, 88.12 +- 0.18 +- 0.34 and 75.29 +- 0.30 +- 0.87 km/s (statistical, then systematic from the series' parts by date and its seasons) for the three with published values (77.16 +- 0.48, 88.27 +- 0.46 and 75.13 +- 0.16), masses within 0.6 per cent of the published dynamical ones and the companions' lines +1.05 to +1.25 km/s from the primary's systemic velocity, which held at zero moves K2 by up to 0.55 km/s; J2101-45 at K2 65.41 +- 0.32 +- 0.32 km/s with minimum masses of 1.415 and 0.552 Msun, held under 3 and 8 principal components, either half of the band and an L 98-59 template and recovered when injected into its spectra; J0649-27, J0825-67 and J1141-37 candidates at 3.9, 3.6 and 3.3 sigma alone and 3.0, 2.6 and 2.1 across the survey; TOI-1338's 73 HARPS spectra at 2.8 sigma and J1928-38's 74 at 0.3 at their published K2; J0543-57 and J2126-28 too thin to search (`binaries_eblm_known_orbits`) |
|
| 406 |
+
| A silicon photovoltaic edge | Gaia Catalogue of Nearby Stars with its 2MASS photometry: 132,153 single-looking stars at BP-RP 0.5-3.0 with J and Ks to 0.03 mag, RP-J five locus widths and five errors above the running median at their colour with J-Ks on its own locus, against the stars as far below; 2MASS flags, Gaia neighbours within 4 arcsec and the height above the main sequence | 574 above against 16 below: 422 blends inside the 2MASS beam, 2 with 2MASS flags, 30 twins above the main sequence; 120 left, 36 of them more than a magnitude below the main sequence where subdwarfs and white dwarfs beside M dwarfs lie and the rest on it; RP-J at fixed BP-RP also rises with metallicity, so photometry alone does not separate a collector from a metal-rich star (`pv_edge_rp_j`) |
|
| 407 |
+
| Single-transit flashes in Hipparcos | Hipparcos epoch photometry of the 12,589 stars within 100 pc with a Gaia DR3 best neighbour and a scatter below 0.02 mag: a clean transit 0.3 mag and five robust deviations brighter than the star's median, against the transits as much fainter; catalogue-wide events, recurrence, Hipparcos's and SIMBAD's variability and RUWE as vets, and the pass partner 20.6 minutes away through the other field of view | 34 stars brighter against 51 fainter: 14 and 22 variables, 2 and 10 catalogue-wide events; 18 unexplained against 19, and the pass partner shares none of the 18, so the single brighter transits are the photometric outliers the fainter side shows as often (`hipparcos_single_flashes`) |
|
| 408 |
+
| Transit-timing residuals that compress | Holczer et al. (2016) Kepler transit times: 1552 KOIs with 30 or more clean times, a line and the two strongest sinusoids removed, the residual in four quantile symbols compressed with zlib against 300 shuffles and 300 first-order autoregressive surrogates at its own lag-one correlation | 2 below both nulls at p 0.0033 against 0.02 by chance: KOI-984.01, a published large timing variation with reduced chi2 13 after the sinusoids, and KOI-1809.02, 93 bytes against 98 shuffled, at the chance count; 0.8 per cent below 0.01 against shuffles alone (`kepler_ttv_compressibility`) |
|
| 409 |
+
| Telecom-band laser lines | the shoreline programme's cached NIRPS and SPIRou spectra: 852 spectra of 19 instrument-star groups of nearby M dwarfs; unresolved emission above six local deviations at 1260-1330 and 1530-1625 nm, Paschen beta masked, recurring within 1.5 km/s in the star's frame on three or more nights whose barycentric corrections spread over 3 km/s, against the dips the same test finds | 27 recurring peaks against 204 recurring dips: 16 hold their wavelength better at the telescope than in the star (sky emission the subtraction left), 2 recur in other stars; the 9 left, 6 of them in L 98-59 and TOI-1078 and 3 in TRAPPIST-1, are fewer than the dips no laser makes (`telecom_band_lasers`) |
|
| 410 |
|
| 411 |
## Queued
|
| 412 |
|
|
|
|
| 542 |
|---|---|---|
|
| 543 |
| (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 |
|
| 544 |
| 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 |
|
| 545 |
+
| PSR J1420-6048 glitches on a schedule: the eight glitches from MJD 51600 to 58555 come at intervals of 994 +- 196 days, a scatter random intervals give once in four thousand draws; the pulsar lies at -61 deg, where Jodrell Bank does not observe, and every row of the Jodrell Bank table for it cites another paper (Yu et al. 2012, Weltevrede et al. 2011, Lower et al. 2021, Liu et al. 2024), the latest timing being Liu et al.'s Fermi-LAT and Parkes series to MJD 59453, 898 days after the eighth glitch and inside the interval the schedule gives | `jbo_glitch_schedules` | a young pulsar of Vela's kind; the published record ends before the ninth glitch falls due, and the next published timing dates it |
|
| 546 |
| 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 |
|
| 547 |
| 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 |
|
| 548 |
| 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 |
|
|
|
|
| 560 |
| 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 |
|
| 561 |
| 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 |
|
| 562 |
| 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 |
|
| 563 |
+
| CNEOS fireballs since 2018 faster than the Sun lets anything bound move: 2022-07-28 01:36:07 UTC (CNEOS-22 of Cloete and Loeb 2026), 47.4 against 41.8 km/s, and 2021-05-06 05:54:26 UTC, 43.7 against 41.9 km/s, neither bound in 20,000 draws within the post-2018 errors Peña-Asensio et al. (2025) measured against ground-based networks; 2026-04-01 02:13:14 UTC over the South Atlantic, 51.8 km/s heliocentric from CNEOS and the Polar-IM of Cloete and Loeb (2026), is 41.5 and 41.1 km/s on the velocities Silber et al. (2026) triangulate from GOES-East's lightning mapper and MTG-I1's lightning imager, 18 per cent below CNEOS's and bound; 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; GOES-16 and GOES-17 saw 2022-07-28, their triangulated trail descending 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 2022 sighting fixes that event's time and place; the mappers' trail speeds scatter too widely to test its 21 per cent excess, so an infrasound or seismometer record would settle its speed |
|
| 564 |
+
| 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, and the two HSC-SSP DR3 covers show nothing to about r 26 | `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 |
|
| 565 |
| 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 |
|
| 566 |
| 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 |
|
| 567 |
| EBLM J2101-45's M-dwarf companion, measured for the first time, from 75 archived HARPS spectra over 2298 d: K2 65.41 +- 0.32 +- 0.32 km/s (statistical, then systematic from its eight seasons) at false-alarm probabilities of 4.3e-9 (5.8 sigma) on its own nulls and 1.5e-7 (5.1 sigma) across the survey's 35 binaries, the five variants of the analysis giving 65.26-65.91 km/s and a companion injected at a flux ratio of 1e-3 recovered at 65.61 km/s; minimum masses of 1.415 +- 0.024 and 0.552 +- 0.006 Msun, within 0.7 per cent of the masses themselves since the binary eclipses and its primary's Gaia DR3 radius of 2.67 Rsun then needs sin^3 i above 0.993, against the model-based 1.29 +- 0.10 and 0.523 +- 0.043 Msun of Triaud et al. (2017); HD 4875's companion, measured before only in the near-infrared, is detected in the optical, and the companions of J0649-27, J0825-67 and J1141-37 remain candidates at 2.1-3.0 sigma across the survey | `binaries_eblm_known_orbits` | papers/double_lined |
|
README.md
CHANGED
|
@@ -281,7 +281,7 @@ on any vet that is not a code.
|
|
| 281 |
| 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` |
|
| 282 |
| 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` |
|
| 283 |
| 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]` |
|
| 284 |
-
| 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 |
|
| 285 |
| 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` |
|
| 286 |
| 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]` |
|
| 287 |
| 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` |
|
|
@@ -415,25 +415,28 @@ on any vet that is not a code.
|
|
| 415 |
| 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]` |
|
| 416 |
| 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]` |
|
| 417 |
| 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]` |
|
| 418 |
-
| 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
|
| 419 |
| 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]` |
|
|
|
|
| 420 |
| 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]` |
|
| 421 |
| 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]` |
|
| 422 |
| 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]` |
|
| 423 |
| 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]` |
|
| 424 |
| 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]` |
|
| 425 |
| 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]` |
|
|
|
|
| 426 |
| 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]` |
|
| 427 |
| 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]` |
|
| 428 |
| 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]` |
|
| 429 |
| 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]` |
|
| 430 |
| 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]` |
|
|
|
|
| 431 |
| 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]` |
|
| 432 |
| 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]` |
|
| 433 |
| 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]` |
|
| 434 |
| 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]` |
|
| 435 |
| 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]` |
|
| 436 |
-
| 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
|
| 437 |
| 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]` |
|
| 438 |
| 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]` |
|
| 439 |
| 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]` |
|
|
@@ -454,6 +457,7 @@ on any vet that is not a code.
|
|
| 454 |
| 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]` |
|
| 455 |
| 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]` |
|
| 456 |
| 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]` |
|
|
|
|
| 457 |
| 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]` |
|
| 458 |
| 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]` |
|
| 459 |
| 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]` |
|
|
@@ -498,7 +502,7 @@ on any vet that is not a code.
|
|
| 498 |
| 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]` |
|
| 499 |
| 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]` |
|
| 500 |
| 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]` |
|
| 501 |
-
| 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]` |
|
| 502 |
| 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]` |
|
| 503 |
| 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]` |
|
| 504 |
| 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]` |
|
|
@@ -539,7 +543,7 @@ on any vet that is not a code.
|
|
| 539 |
| 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]` |
|
| 540 |
| 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]` |
|
| 541 |
| 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]` |
|
| 542 |
-
| 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]` |
|
| 543 |
| 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]` |
|
| 544 |
| 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]` |
|
| 545 |
| 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]` |
|
|
@@ -623,7 +627,7 @@ The sky-fibre search, `seti.py lasers skyfibre search`, reads each BOSS/eBOSS sp
|
|
| 623 |
| 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` |
|
| 624 |
| 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` |
|
| 625 |
| 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]` |
|
| 626 |
-
| 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]` |
|
| 627 |
| 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]` |
|
| 628 |
| 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]` |
|
| 629 |
| 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]` |
|
|
|
|
| 281 |
| 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` |
|
| 282 |
| 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` |
|
| 283 |
| 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]` |
|
| 284 |
+
| 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; gravity, A2, A2 and A3, and all three terms with and without JPL's radar delays, the round trip computed leg by leg with light time and the Sun's Shapiro delay, judged by BIC on the observations every model keeps, with A3 refitted with each apparition left out | `seti.py solar_system darkcomet fetch\|thermal\|variants\|refit\|record\|precovery\|robust\|blockcov\|frames\|field\|locus\|census\|forecast\|normal\|normal-record DESIG`; `papers/dark_comet/make_numbers.py`; `papers/dark_comet/README.md` lists the paper's data files and the command behind each |
|
| 285 |
| 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` |
|
| 286 |
| 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]` |
|
| 287 |
| 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` |
|
|
|
|
| 415 |
| 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]` |
|
| 416 |
| 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]` |
|
| 417 |
| 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]` |
|
| 418 |
+
| 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, a W4 excess at three errors and an excess that AllWISE's plain W1 at the 2010.5 position removes 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]` |
|
| 419 |
| 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]` |
|
| 420 |
+
| Telecom-band laser lines | NIRPS and SPIRou spectra of nearby M dwarfs; unresolved emission in the O and C/L bands recurring in the star's frame on three nights with different barycentric corrections, against the recurring dips, with sky residuals (steadier at the telescope) and features shared between stars as vets | `seti.py lasers telecom [record] [--sig 6] [--tol-kms 1.5] [--min-nights 3] [--min-berv-spread 3] [--edge 30]` |
|
| 421 |
| 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]` |
|
| 422 |
| 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]` |
|
| 423 |
| 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]` |
|
| 424 |
| 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]` |
|
| 425 |
| 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]` |
|
| 426 |
| 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]` |
|
| 427 |
+
| A silicon photovoltaic edge | Gaia Catalogue of Nearby Stars objects with clean J and Ks; RP-J five widths and five errors above the single-star locus at their BP-RP while J-Ks stays within two widths, against the stars as far below; 2MASS flags, Gaia neighbours in the 2MASS beam and the height above the main sequence as vets | `seti.py infrared pvedge [record] [--widths 5] [--jk-widths 2] [--emax 0.03] [--beam-arcsec 4] [--twin-mag 0.4]` |
|
| 428 |
| 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]` |
|
| 429 |
| 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]` |
|
| 430 |
| 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]` |
|
| 431 |
| 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]` |
|
| 432 |
| 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]` |
|
| 433 |
+
| Single-transit flashes in Hipparcos | Hipparcos epoch photometry of quiet stars within 100 pc; one transit 0.3 mag and five robust deviations brighter than the median against the transits as much fainter, with catalogue-wide events, recurrence, variability and RUWE as vets and the pass partner as the test of a real flash | `seti.py flashes hipflash [record] [--mag 0.3] [--sig 5] [--quiet 0.02] [--pair-days 0.02] [--plx-min 10]` |
|
| 434 |
| 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]` |
|
| 435 |
| 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]` |
|
| 436 |
| 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]` |
|
| 437 |
| 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]` |
|
| 438 |
| 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]` |
|
| 439 |
+
| 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, the proper motion and NEOWISE's single exposures of 2014-2024 holding the AllWISE W1 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] [--neowise-tol 0.15]` |
|
| 440 |
| 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]` |
|
| 441 |
| 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]` |
|
| 442 |
| 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]` |
|
|
|
|
| 457 |
| 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]` |
|
| 458 |
| 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]` |
|
| 459 |
| 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]` |
|
| 460 |
+
| Transit-timing residuals that compress | Kepler transit times of Holczer et al. (2016); the residual after a line and two sinusoids in four quantile symbols compressed with zlib, against shuffles and AR(1) surrogates, with published timing variations and the chance count as vets | `seti.py transits ttvzip [record] [--min-n 30] [--draws 300] [--seed 31]` |
|
| 461 |
| 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]` |
|
| 462 |
| 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]` |
|
| 463 |
| 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]` |
|
|
|
|
| 502 |
| 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]` |
|
| 503 |
| 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]` |
|
| 504 |
| 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]` |
|
| 505 |
+
| 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, then the later surveys, the lobes of brighter sources and the VLASS images themselves | `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] [--later-arcsec 30] [--lobe-arcsec 90] [--image-sigma 10]` |
|
| 506 |
| 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]` |
|
| 507 |
| 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]` |
|
| 508 |
| 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]` |
|
|
|
|
| 543 |
| 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]` |
|
| 544 |
| 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]` |
|
| 545 |
| 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]` |
|
| 546 |
+
| 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; the HSC-SSP DR3 g, r and z images where they reach | `seti.py radio_sky hostlessnir record [--arcsec 2] [--hsc-pix 0.168]` |
|
| 547 |
| 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]` |
|
| 548 |
| 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]` |
|
| 549 |
| 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]` |
|
|
|
|
| 627 |
| 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` |
|
| 628 |
| 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` |
|
| 629 |
| 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]` |
|
| 630 |
+
| 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, a warm star kept only when AllWISE's plain W1 at the 2010.5 position keeps the excess; 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]` |
|
| 631 |
| 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]` |
|
| 632 |
| 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]` |
|
| 633 |
| 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]` |
|
RESULTS.md
CHANGED
|
@@ -4,7 +4,7 @@ Generated by `python -I seti.py store table` from the Searched table of `LEDGER.
|
|
| 4 |
|
| 5 |
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.
|
| 6 |
|
| 7 |
-
|
| 8 |
|
| 9 |
## Curved drift tracks, radio
|
| 10 |
|
|
@@ -1738,9 +1738,9 @@ A run is one row of the store's `searches` table. Its sample is the number of th
|
|
| 1738 |
|
| 1739 |
**Data.** Gaia Catalogue of Nearby Stars with its WISE photometry; SIMBAD
|
| 1740 |
|
| 1741 |
-
**Runs.** `etz_warm_stars`: 911 stars,
|
| 1742 |
|
| 1743 |
-
**Result.**
|
| 1744 |
|
| 1745 |
## Radio from Earth's transit zone
|
| 1746 |
|
|
@@ -2026,9 +2026,9 @@ A run is one row of the store's `searches` table. Its sample is the number of th
|
|
| 2026 |
|
| 2027 |
**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
|
| 2028 |
|
| 2029 |
-
**Runs.** `w3_only_excess`: 3,510 stars, 27 per-target rows,
|
| 2030 |
|
| 2031 |
-
**Result.** 27 above against 2 below
|
| 2032 |
|
| 2033 |
## Symmetric flares
|
| 2034 |
|
|
@@ -2170,9 +2170,9 @@ A run is one row of the store's `searches` table. Its sample is the number of th
|
|
| 2170 |
|
| 2171 |
**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
|
| 2172 |
|
| 2173 |
-
**Runs.** `allwise_catwise_w1_change`: 1,004 stars, 94 per-target rows,
|
| 2174 |
|
| 2175 |
-
**Result.** 92 fainter in CatWISE against 2 brighter: 14 variables, 29 blends,
|
| 2176 |
|
| 2177 |
## Systems turned face-on to us
|
| 2178 |
|
|
@@ -2514,9 +2514,9 @@ A run is one row of the store's `searches` table. Its sample is the number of th
|
|
| 2514 |
|
| 2515 |
**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
|
| 2516 |
|
| 2517 |
-
**Runs.** `jupiter_zone_warm_stars`: 175 stars,
|
| 2518 |
|
| 2519 |
-
**Result.**
|
| 2520 |
|
| 2521 |
## Two pulsars at one spot
|
| 2522 |
|
|
@@ -2688,19 +2688,19 @@ A run is one row of the store's `searches` table. Its sample is the number of th
|
|
| 2688 |
|
| 2689 |
## Radio sources that switched off
|
| 2690 |
|
| 2691 |
-
**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
|
| 2692 |
|
| 2693 |
-
**Runs.** `nvss_vlass_switchoffs`: 37,223 sources, 281 per-target rows,
|
| 2694 |
|
| 2695 |
-
**Result.** 281 missing: 132 of known types, 12 beside sources above 5 Jy,
|
| 2696 |
|
| 2697 |
## Bodies pushed out of their orbital planes
|
| 2698 |
|
| 2699 |
**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
|
| 2700 |
|
| 2701 |
-
**Runs.** `sbdb_out_of_plane`: 123 bodies, 28 per-target rows, 28 vetted
|
| 2702 |
|
| 2703 |
-
**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,
|
| 2704 |
|
| 2705 |
## Gamma rays harder than any shock
|
| 2706 |
|
|
@@ -2922,9 +2922,9 @@ A run is one row of the store's `searches` table. Its sample is the number of th
|
|
| 2922 |
|
| 2923 |
**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
|
| 2924 |
|
| 2925 |
-
**Runs.** `cneos_hyperbolic_fireballs`: 360 fireballs, 8 per-target rows,
|
| 2926 |
|
| 2927 |
-
**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);
|
| 2928 |
|
| 2929 |
## The temperate rocky-planet hosts in every band
|
| 2930 |
|
|
@@ -3028,7 +3028,7 @@ A run is one row of the store's `searches` table. Its sample is the number of th
|
|
| 3028 |
|
| 3029 |
**Runs.** `crates_hostless_nir`: 22 sources, 22 per-target rows
|
| 3030 |
|
| 3031 |
-
**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`)
|
| 3032 |
|
| 3033 |
## Spectral classes of the worst-fitted nearby M dwarfs
|
| 3034 |
|
|
@@ -3173,3 +3173,35 @@ A run is one row of the store's `searches` table. Its sample is the number of th
|
|
| 3173 |
**Runs.** `binaries_eblm_known_orbits`: 37 binaries, 38 per-target rows, 6 vetted
|
| 3174 |
|
| 3175 |
**Result.** four companions at 5 sigma or more on their own nulls, each summit at an offset of +1.0 km/s set against 10,000 draws of each null with a Gumbel law for the tail: TOI-1338's (ESPRESSO) at a false-alarm probability of 1e-11, J0310-31's at 8e-12, HD 4875's (J0050-18) at 1e-8 and J2101-45's at 4e-9, the last at 1.5e-7 (5.1 sigma) across the survey's 35 binaries; with the companion's systemic offset free, K2 of 77.27 +- 0.10 +- 0.15, 88.12 +- 0.18 +- 0.34 and 75.29 +- 0.30 +- 0.87 km/s (statistical, then systematic from the series' parts by date and its seasons) for the three with published values (77.16 +- 0.48, 88.27 +- 0.46 and 75.13 +- 0.16), masses within 0.6 per cent of the published dynamical ones and the companions' lines +1.05 to +1.25 km/s from the primary's systemic velocity, which held at zero moves K2 by up to 0.55 km/s; J2101-45 at K2 65.41 +- 0.32 +- 0.32 km/s with minimum masses of 1.415 and 0.552 Msun, held under 3 and 8 principal components, either half of the band and an L 98-59 template and recovered when injected into its spectra; J0649-27, J0825-67 and J1141-37 candidates at 3.9, 3.6 and 3.3 sigma alone and 3.0, 2.6 and 2.1 across the survey; TOI-1338's 73 HARPS spectra at 2.8 sigma and J1928-38's 74 at 0.3 at their published K2; J0543-57 and J2126-28 too thin to search (`binaries_eblm_known_orbits`)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
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.
|
| 6 |
|
| 7 |
+
517 runs of 400 approaches; 514270 per-target rows over 432573 distinct target identifiers.
|
| 8 |
|
| 9 |
## Curved drift tracks, radio
|
| 10 |
|
|
|
|
| 1738 |
|
| 1739 |
**Data.** Gaia Catalogue of Nearby Stars with its WISE photometry; SIMBAD
|
| 1740 |
|
| 1741 |
+
**Runs.** `etz_warm_stars`: 911 stars, 0 per-target rows
|
| 1742 |
|
| 1743 |
+
**Result.** 0 warm of 911 stars in the zone against 2.31 expected from the 35 of 13800 stars 1-5 deg away (p 1), with every colour taken from AllWISE's plain W1: the proper-motion-fitted W1 of the Catalogue of Nearby Stars runs 0.3-1.1 mag faint for bright and fast stars and made 2712 stars look warm (`etz_warm_stars`)
|
| 1744 |
|
| 1745 |
## Radio from Earth's transit zone
|
| 1746 |
|
|
|
|
| 2026 |
|
| 2027 |
**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
|
| 2028 |
|
| 2029 |
+
**Runs.** `w3_only_excess`: 3,510 stars, 27 per-target rows, 27 vetted
|
| 2030 |
|
| 2031 |
+
**Result.** 27 above against 2 below, all artefacts: 6 carry AllWISE flags and the rest lose their excess with AllWISE's plain W1, the catalogue's proper-motion-fitted W1 being 0.3-0.5 mag faint for these K and M dwarfs moving 0.4-1.0 arcsec a year (`w3_only_excess`)
|
| 2032 |
|
| 2033 |
## Symmetric flares
|
| 2034 |
|
|
|
|
| 2170 |
|
| 2171 |
**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
|
| 2172 |
|
| 2173 |
+
**Runs.** `allwise_catwise_w1_change`: 1,004 stars, 94 per-target rows, 94 vetted
|
| 2174 |
|
| 2175 |
+
**Result.** 92 fainter in CatWISE against 2 brighter: 14 variables, 29 blends, 35 saturated or flagged, 16 matched to another source or split by their motion; the 6 M6-L3 dwarfs moving 0.4-0.9 arcsec a year hold their AllWISE W1 within 0.15 mag across NEOWISE's single exposures of 2014-2024, so CatWISE's proper-motion fit, not the stars, is faint (`allwise_catwise_w1_change`)
|
| 2176 |
|
| 2177 |
## Systems turned face-on to us
|
| 2178 |
|
|
|
|
| 2514 |
|
| 2515 |
**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
|
| 2516 |
|
| 2517 |
+
**Runs.** `jupiter_zone_warm_stars`: 175 stars, 1 per-target row, 1 vetted
|
| 2518 |
|
| 2519 |
+
**Result.** 1 warm, a G 14.9 star with a W4 excess, against 0.41 expected from the band's share (p 0.34), with every colour taken from AllWISE's plain W1; with the ultraviolet count of the zone's stars this closes the Jupiter-zone programme (`jupiter_zone_warm_stars`)
|
| 2520 |
|
| 2521 |
## Two pulsars at one spot
|
| 2522 |
|
|
|
|
| 2688 |
|
| 2689 |
## Radio sources that switched off
|
| 2690 |
|
| 2691 |
+
**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; then RACS-mid, RACS-high, RACS-low3 and LoTSS DR2 within 30 arcsec, RACS-mid and TGSS within 90 arcsec for the lobes of brighter sources, and the VLASS quick-look images at the CADC
|
| 2692 |
|
| 2693 |
+
**Runs.** `nvss_vlass_switchoffs`: 37,223 sources, 281 per-target rows, 281 vetted
|
| 2694 |
|
| 2695 |
+
**Result.** 281 missing, all explained: 132 of known types, 12 beside sources above 5 Jy, 130 still shining in a later survey, in the component list's holes or above 10 sigma in the VLASS images themselves (the four north of +70 deg at 75-223 mJy across all three epochs), and 7 hotspots of bright doubles such as 3C 192, 3C 263 and 3C 382, catalogued 54-80 arcsec away as one source (`nvss_vlass_switchoffs`)
|
| 2696 |
|
| 2697 |
## Bodies pushed out of their orbital planes
|
| 2698 |
|
| 2699 |
**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
|
| 2700 |
|
| 2701 |
+
**Runs.** `sbdb_out_of_plane`: 123 bodies, 28 per-target rows, 28 vetted; `darkcomet_normal_2013_xy20`: 1 asteroid, 1 per-target row, 1 vetted; `darkcomet_normal_2016_gw221`: 1 asteroid, 1 per-target row, 1 vetted
|
| 2702 |
|
| 2703 |
+
**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 are dark comets of Seligman et al. (2024); refitted in ASSIST, 2016 GW221 keeps A3 +3.4e-11 au/d^2 at 8.1 sigma with site weights and 3.9 sigma with each night as one position once JPL's Arecibo delay of 2019 is fitted to 0.1 us, at 4.7 sigma or more with any apparition left out, while 2013 XY20's A3 of 4.3 sigma with site weights falls to 2.5 with nights and vanishes without its 2019 apparition; none unexplained (`sbdb_out_of_plane`, `darkcomet_normal_2016_gw221`, `darkcomet_normal_2013_xy20`)
|
| 2704 |
|
| 2705 |
## Gamma rays harder than any shock
|
| 2706 |
|
|
|
|
| 2922 |
|
| 2923 |
**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
|
| 2924 |
|
| 2925 |
+
**Runs.** `cneos_hyperbolic_fireballs`: 360 fireballs, 8 per-target rows, 6 vetted
|
| 2926 |
|
| 2927 |
+
**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); 2026-04-01, 51.8 km/s heliocentric from CNEOS and the Polar-IM of Cloete and Loeb (2026), is 41.5 and 41.1 km/s on the two velocities Silber et al. (2026) triangulate from GOES-East's lightning mapper and MTG-I1's lightning imager, 18 per cent slower, below the 42.1 km/s escape speed and hyperbolic in 35 per cent of draws within their errors; 2021-05-06 (43.7 km/s) and 2022-07-28 (47.4 km/s, CNEOS-22) are bound in none of 20,000 and are not explained (`cneos_hyperbolic_fireballs`)
|
| 2928 |
|
| 2929 |
## The temperate rocky-planet hosts in every band
|
| 2930 |
|
|
|
|
| 3028 |
|
| 3029 |
**Runs.** `crates_hostless_nir`: 22 sources, 22 per-target rows
|
| 3030 |
|
| 3031 |
+
**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; HSC-SSP DR3 covers J000744+022626 and J231637+015200 and holds nothing within an arcsecond at S/N 4 or more in g, r or z, to about r 26 (`crates_hostless_nir`)
|
| 3032 |
|
| 3033 |
## Spectral classes of the worst-fitted nearby M dwarfs
|
| 3034 |
|
|
|
|
| 3173 |
**Runs.** `binaries_eblm_known_orbits`: 37 binaries, 38 per-target rows, 6 vetted
|
| 3174 |
|
| 3175 |
**Result.** four companions at 5 sigma or more on their own nulls, each summit at an offset of +1.0 km/s set against 10,000 draws of each null with a Gumbel law for the tail: TOI-1338's (ESPRESSO) at a false-alarm probability of 1e-11, J0310-31's at 8e-12, HD 4875's (J0050-18) at 1e-8 and J2101-45's at 4e-9, the last at 1.5e-7 (5.1 sigma) across the survey's 35 binaries; with the companion's systemic offset free, K2 of 77.27 +- 0.10 +- 0.15, 88.12 +- 0.18 +- 0.34 and 75.29 +- 0.30 +- 0.87 km/s (statistical, then systematic from the series' parts by date and its seasons) for the three with published values (77.16 +- 0.48, 88.27 +- 0.46 and 75.13 +- 0.16), masses within 0.6 per cent of the published dynamical ones and the companions' lines +1.05 to +1.25 km/s from the primary's systemic velocity, which held at zero moves K2 by up to 0.55 km/s; J2101-45 at K2 65.41 +- 0.32 +- 0.32 km/s with minimum masses of 1.415 and 0.552 Msun, held under 3 and 8 principal components, either half of the band and an L 98-59 template and recovered when injected into its spectra; J0649-27, J0825-67 and J1141-37 candidates at 3.9, 3.6 and 3.3 sigma alone and 3.0, 2.6 and 2.1 across the survey; TOI-1338's 73 HARPS spectra at 2.8 sigma and J1928-38's 74 at 0.3 at their published K2; J0543-57 and J2126-28 too thin to search (`binaries_eblm_known_orbits`)
|
| 3176 |
+
|
| 3177 |
+
## A silicon photovoltaic edge
|
| 3178 |
+
|
| 3179 |
+
**Data.** Gaia Catalogue of Nearby Stars with its 2MASS photometry: 132,153 single-looking stars at BP-RP 0.5-3.0 with J and Ks to 0.03 mag, RP-J five locus widths and five errors above the running median at their colour with J-Ks on its own locus, against the stars as far below; 2MASS flags, Gaia neighbours within 4 arcsec and the height above the main sequence
|
| 3180 |
+
|
| 3181 |
+
**Runs.** `pv_edge_rp_j`: 132,153 stars, 574 per-target rows, 454 vetted
|
| 3182 |
+
|
| 3183 |
+
**Result.** 574 above against 16 below: 422 blends inside the 2MASS beam, 2 with 2MASS flags, 30 twins above the main sequence; 120 left, 36 of them more than a magnitude below the main sequence where subdwarfs and white dwarfs beside M dwarfs lie and the rest on it; RP-J at fixed BP-RP also rises with metallicity, so photometry alone does not separate a collector from a metal-rich star (`pv_edge_rp_j`)
|
| 3184 |
+
|
| 3185 |
+
## Single-transit flashes in Hipparcos
|
| 3186 |
+
|
| 3187 |
+
**Data.** Hipparcos epoch photometry of the 12,589 stars within 100 pc with a Gaia DR3 best neighbour and a scatter below 0.02 mag: a clean transit 0.3 mag and five robust deviations brighter than the star's median, against the transits as much fainter; catalogue-wide events, recurrence, Hipparcos's and SIMBAD's variability and RUWE as vets, and the pass partner 20.6 minutes away through the other field of view
|
| 3188 |
+
|
| 3189 |
+
**Runs.** `hipparcos_single_flashes`: 12,589 stars, 85 per-target rows, 85 vetted
|
| 3190 |
+
|
| 3191 |
+
**Result.** 34 stars brighter against 51 fainter: 14 and 22 variables, 2 and 10 catalogue-wide events; 18 unexplained against 19, and the pass partner shares none of the 18, so the single brighter transits are the photometric outliers the fainter side shows as often (`hipparcos_single_flashes`)
|
| 3192 |
+
|
| 3193 |
+
## Transit-timing residuals that compress
|
| 3194 |
+
|
| 3195 |
+
**Data.** Holczer et al. (2016) Kepler transit times: 1552 KOIs with 30 or more clean times, a line and the two strongest sinusoids removed, the residual in four quantile symbols compressed with zlib against 300 shuffles and 300 first-order autoregressive surrogates at its own lag-one correlation
|
| 3196 |
+
|
| 3197 |
+
**Runs.** `kepler_ttv_compressibility`: 1,552 KOIs, 2 per-target rows, 2 vetted
|
| 3198 |
+
|
| 3199 |
+
**Result.** 2 below both nulls at p 0.0033 against 0.02 by chance: KOI-984.01, a published large timing variation with reduced chi2 13 after the sinusoids, and KOI-1809.02, 93 bytes against 98 shuffled, at the chance count; 0.8 per cent below 0.01 against shuffles alone (`kepler_ttv_compressibility`)
|
| 3200 |
+
|
| 3201 |
+
## Telecom-band laser lines
|
| 3202 |
+
|
| 3203 |
+
**Data.** the shoreline programme's cached NIRPS and SPIRou spectra: 852 spectra of 19 instrument-star groups of nearby M dwarfs; unresolved emission above six local deviations at 1260-1330 and 1530-1625 nm, Paschen beta masked, recurring within 1.5 km/s in the star's frame on three or more nights whose barycentric corrections spread over 3 km/s, against the dips the same test finds
|
| 3204 |
+
|
| 3205 |
+
**Runs.** `telecom_band_lasers`: 19 instrument-star groups, 27 per-target rows, 27 vetted
|
| 3206 |
+
|
| 3207 |
+
**Result.** 27 recurring peaks against 204 recurring dips: 16 hold their wavelength better at the telescope than in the star (sky emission the subtraction left), 2 recur in other stars; the 9 left, 6 of them in L 98-59 and TOI-1078 and 3 in TRAPPIST-1, are fewer than the dips no laser makes (`telecom_band_lasers`)
|
coverage.db
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2afbf0e92ca54195eaf7c5f6054a9d287f4f9acd02a0b38f5502c3414ea1870c
|
| 3 |
+
size 110460928
|
setitools/flashes.py
CHANGED
|
@@ -4907,7 +4907,84 @@ def chirps_main(record=False, rate_max=60.0, rate_min=1.0, p_max=1e-12, tmag_max
|
|
| 4907 |
print("recorded")
|
| 4908 |
|
| 4909 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4910 |
APPROACHES = {
|
|
|
|
| 4911 |
"chirps": (lambda: core.run_cli(chirps_main), chirps_DOC),
|
| 4912 |
"tones": (lambda: core.run_cli(tones_main), tones_DOC),
|
| 4913 |
"flareecho": (lambda: core.run_cli(flareecho_main), flareecho_DOC),
|
|
|
|
| 4907 |
print("recorded")
|
| 4908 |
|
| 4909 |
|
| 4910 |
+
hipflash_DOC = r"""Single-transit brightenings in Hipparcos epoch photometry: stars within 100 pc with a Gaia DR3 best neighbour and a robust scatter below 0.02 mag, a clean transit brighter than the star's median by 0.3 mag and five robust deviations, against the transits as much fainter, the mirror; each read for a catalogue-wide event (two or more other stars within half an hour, the satellite's own), a recurrence on the same star, Hipparcos's variability type, SIMBAD's type and RUWE, and for the pass partner 20.6 minutes away, which sees the same star through the other field of view and shares a real flash.
|
| 4911 |
+
|
| 4912 |
+
python -I seti.py flashes hipflash [record] [--mag 0.3] [--sig 5] [--quiet 0.02] [--pair-days 0.02] [--plx-min 10]"""
|
| 4913 |
+
|
| 4914 |
+
|
| 4915 |
+
def hipflash_main(record=False, mag=0.3, sig=5.0, quiet=0.02, pair_days=0.02, plx_min=10.0):
|
| 4916 |
+
from collections import Counter
|
| 4917 |
+
from setitools import dimming
|
| 4918 |
+
hep = dimming.hipparcos_read_hep()
|
| 4919 |
+
g = core.gaia("SELECT h.original_ext_source_id AS hip, g.source_id, g.parallax, g.bp_rp, g.ruwe, g.phot_variable_flag "
|
| 4920 |
+
"FROM gaiadr3.hipparcos2_best_neighbour AS h JOIN gaiadr3.gaia_source AS g ON h.source_id = g.source_id WHERE g.parallax > %g" % plx_min)
|
| 4921 |
+
near = {int(r["hip"]): r for r in g}
|
| 4922 |
+
events_all, cand, n_quiet = {+1: [], -1: []}, {+1: [], -1: []}, 0
|
| 4923 |
+
for hip, s in hep.items():
|
| 4924 |
+
t, m, q = (np.array(s[k]) for k in ("t", "m", "q"))
|
| 4925 |
+
ok = (q & dimming.hipparcos_BAD) == 0
|
| 4926 |
+
t, m = t[ok], m[ok]
|
| 4927 |
+
if len(t) < 40:
|
| 4928 |
+
continue
|
| 4929 |
+
med = float(np.median(m))
|
| 4930 |
+
sd = float(1.4826 * np.median(np.abs(m - med)))
|
| 4931 |
+
quiet_star = hip in near and sd < quiet
|
| 4932 |
+
n_quiet += quiet_star
|
| 4933 |
+
for sign in (+1, -1):
|
| 4934 |
+
d = sign * (med - m)
|
| 4935 |
+
hit = d > max(sig * sd, mag)
|
| 4936 |
+
events_all[sign] += list(t[hit])
|
| 4937 |
+
if quiet_star and hit.any():
|
| 4938 |
+
i = int(np.argmax(np.where(hit, d, -np.inf)))
|
| 4939 |
+
partners = np.nonzero((np.abs(t - t[i]) < pair_days) & (np.arange(len(t)) != i))[0]
|
| 4940 |
+
cand[sign].append(dict(hip=hip, t=float(t[i]), d=float(d[i]), sd=sd, partners=int(partners.size), n_hits=int(hit.sum()),
|
| 4941 |
+
shared=bool(partners.size) and bool(np.any(sign * (med - m[partners]) > 0.5 * d[i])), vtype=s["vtype"],
|
| 4942 |
+
gaia=near[hip]["source_id"], ruwe=float(near[hip]["ruwe"] or 0)))
|
| 4943 |
+
sim = {}
|
| 4944 |
+
hips = sorted({c["hip"] for k in cand for c in cand[k]})
|
| 4945 |
+
for k in range(0, len(hips), 300):
|
| 4946 |
+
for r in core.simbad("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 hips[k:k + 300])):
|
| 4947 |
+
sim[int(r["id"].split()[-1])] = (" ".join(str(r["main_id"]).split()), str(r["otype"]).strip())
|
| 4948 |
+
for sign in (+1, -1):
|
| 4949 |
+
ev = np.sort(np.array(events_all[sign]))
|
| 4950 |
+
for c in cand[sign]:
|
| 4951 |
+
c["same_time"] = int(np.searchsorted(ev, c["t"] + pair_days) - np.searchsorted(ev, c["t"] - pair_days)) - 1
|
| 4952 |
+
c["simbad"] = sim.get(c["hip"], ("", ""))
|
| 4953 |
+
ot = c["simbad"][1]
|
| 4954 |
+
c["vet"] = ("field-event" if c["same_time"] >= 2 else "variable-star" if c["n_hits"] > 1 or c["vtype"] in ("P", "D", "M", "U") else
|
| 4955 |
+
"flare" if ot in ("UV*", "Fl*") else "variable-star" if any(ot.startswith(x) for x in dimming.hipparcos_SIMBAD_EXPLAINED) else
|
| 4956 |
+
"binary" if c["ruwe"] > 1.4 else None)
|
| 4957 |
+
left = {sign: [c for c in cand[sign] if c["vet"] is None] for sign in (+1, -1)}
|
| 4958 |
+
print("%d quiet stars within %g pc; transits %.1f mag and %g deviations brighter on %d stars, fainter on %d" % (
|
| 4959 |
+
n_quiet, 1000 / plx_min, mag, sig, len(cand[1]), len(cand[-1])))
|
| 4960 |
+
for sign, name in ((+1, "brighter"), (-1, "fainter")):
|
| 4961 |
+
print("%s: %s; %d unexplained, %d shared by the pass partner" % (name, dict(Counter(c["vet"] for c in cand[sign] if c["vet"])), len(left[sign]),
|
| 4962 |
+
sum(c["shared"] for c in left[sign])))
|
| 4963 |
+
for c in sorted(left[sign], key=lambda c: -c["d"])[:20]:
|
| 4964 |
+
print(" HIP %d %-24s %-5s %+.2f mag (scatter %.3f) on JD %.4f, pass partner %s" % (
|
| 4965 |
+
c["hip"], c["simbad"][0][:24], c["simbad"][1][:5], -sign * c["d"], c["sd"], c["t"] + 2440000.0,
|
| 4966 |
+
"shares" if c["shared"] else ("does not" if c["partners"] else "missing")))
|
| 4967 |
+
# unshared single transits are photometric outliers when the brighter ones are no commoner than the fainter
|
| 4968 |
+
mirror = len(left[1]) <= len(left[-1]) + 2 * math.sqrt(max(len(left[-1]), 1))
|
| 4969 |
+
if record:
|
| 4970 |
+
core.record_run(
|
| 4971 |
+
"hipparcos_single_flashes", "Single-transit flashes in Hipparcos", "Hipparcos epoch photometry (hep); Gaia DR3 hipparcos2_best_neighbour; SIMBAD",
|
| 4972 |
+
"%d stars within %g pc with Hipparcos scatter below %g mag" % (n_quiet, 1000 / plx_min, quiet), os.path.abspath(__file__), "hipflash",
|
| 4973 |
+
n_quiet, "stars", dict(mag=mag, sig=sig, quiet=quiet, pair_days=pair_days, plx_min=plx_min),
|
| 4974 |
+
dict(brighter=len(cand[1]), fainter=len(cand[-1]), unexplained_brighter=len(left[1]), unexplained_fainter=len(left[-1])),
|
| 4975 |
+
"a transit %.1f mag and %g robust deviations from the median of a star steady to %g mag" % (mag, sig, quiet),
|
| 4976 |
+
"%d brighter against %d fainter; unexplained %d against %d, %d of the brighter shared by the pass partner" % (
|
| 4977 |
+
len(cand[1]), len(cand[-1]), len(left[1]), len(left[-1]), sum(c["shared"] for c in left[1])),
|
| 4978 |
+
[dict(target="hip:%d#%s" % (c["hip"], "brighter" if sign > 0 else "fainter"), stat=round(-sign * c["d"], 3), unit="mag from the median, one transit",
|
| 4979 |
+
vet=c["vet"] or ("chance-rate" if mirror and not c["shared"] else None),
|
| 4980 |
+
note="JD %.4f; scatter %.3f; %d other stars within %g d; pass partner %s; SIMBAD %s" % (
|
| 4981 |
+
c["t"] + 2440000.0, c["sd"], c["same_time"], pair_days, "shares" if c["shared"] else ("does not" if c["partners"] else "missing"), c["simbad"]))
|
| 4982 |
+
for sign in (+1, -1) for c in cand[sign]])
|
| 4983 |
+
print("recorded")
|
| 4984 |
+
|
| 4985 |
+
|
| 4986 |
APPROACHES = {
|
| 4987 |
+
"hipflash": (lambda: core.run_cli(hipflash_main), hipflash_DOC),
|
| 4988 |
"chirps": (lambda: core.run_cli(chirps_main), chirps_DOC),
|
| 4989 |
"tones": (lambda: core.run_cli(tones_main), tones_DOC),
|
| 4990 |
"flareecho": (lambda: core.run_cli(flareecho_main), flareecho_DOC),
|
setitools/infrared.py
CHANGED
|
@@ -3183,7 +3183,7 @@ def bigdwarfs_main(record=False, ratio=1.2, sigma=3.0, logg_min=4.0, plx_min=10.
|
|
| 3183 |
print("recorded")
|
| 3184 |
|
| 3185 |
|
| 3186 |
-
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.
|
| 3187 |
|
| 3188 |
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.
|
| 3189 |
|
|
@@ -3206,7 +3206,7 @@ def etzwarm_main(record=False, planet="", zone_deg=0.264, control_min_deg=1.0, c
|
|
| 3206 |
x, y, z = math.cos(de) * math.cos(ra), math.cos(de) * math.sin(ra), math.sin(de)
|
| 3207 |
ye, ze = y * math.cos(eps) + z * math.sin(eps), -y * math.sin(eps) + z * math.cos(eps)
|
| 3208 |
return abs(math.degrees(math.asin(max(-1.0, min(1.0, x * normal[0] + ye * normal[1] + ze * normal[2])))))
|
| 3209 |
-
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, "
|
| 3210 |
"w1sigmpro_pm_wise, w3mpro_wise, w3sigmpro_wise, w4mpro_wise, w4sigmpro_wise",
|
| 3211 |
"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)
|
| 3212 |
st = []
|
|
@@ -3216,8 +3216,9 @@ def etzwarm_main(record=False, planet="", zone_deg=0.264, control_min_deg=1.0, c
|
|
| 3216 |
continue
|
| 3217 |
st.append(dict(id=r["source_id"], beta=latitude(float(r["ra"]), float(r["dec"])), bprp=bprp, w1=num(r["w1mpro_pm_wise"]),
|
| 3218 |
s1=num(r["w1sigmpro_pm_wise"]), w3=num(r["w3mpro_wise"]), s3=num(r["w3sigmpro_wise"]), w4=num(r["w4mpro_wise"]),
|
| 3219 |
-
s4=num(r["w4sigmpro_wise"]), g=num(r["phot_g_mean_mag"]), plx=num(r["parallax"])))
|
| 3220 |
-
|
|
|
|
| 3221 |
for band, lim in (("3", w3_err_max), ("4", w4_err_max)):
|
| 3222 |
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]
|
| 3223 |
col = np.array([s["w1"] - s["w" + band] for s in use])
|
|
@@ -3234,6 +3235,32 @@ def etzwarm_main(record=False, planet="", zone_deg=0.264, control_min_deg=1.0, c
|
|
| 3234 |
err = math.hypot(s["s1"], s["s" + band])
|
| 3235 |
if col[i] - med > max(widths * wid, errors * err):
|
| 3236 |
warm.setdefault(s["id"], {})[band] = round(float(col[i] - med), 2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3237 |
zone = [s for s in st if s["beta"] < zone_deg and (s["w3"] is not None or s["w4"] is not None)]
|
| 3238 |
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)]
|
| 3239 |
wz = [s for s in zone if s["id"] in warm]
|
|
@@ -3329,14 +3356,14 @@ def w2only_main(record=False, widths=5.0, errors=5.0, w3_widths=2.0, colour_min=
|
|
| 3329 |
print("recorded")
|
| 3330 |
|
| 3331 |
|
| 3332 |
-
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.
|
| 3333 |
|
| 3334 |
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]"""
|
| 3335 |
|
| 3336 |
|
| 3337 |
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):
|
| 3338 |
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, "
|
| 3339 |
-
"w4mpro_wise, w4sigmpro_wise, ra, dec",
|
| 3340 |
"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 "
|
| 3341 |
"AND w1sigmpro_pm_wise < 0.05 AND w3sigmpro_wise < 0.1 AND w4sigmpro_wise < 0.2" % (w1_min, w1_max), ranges=12)
|
| 3342 |
st = []
|
|
@@ -3345,9 +3372,9 @@ def w3only_main(record=False, widths=5.0, errors=5.0, w4_widths=2.0, colour_min=
|
|
| 3345 |
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:
|
| 3346 |
continue
|
| 3347 |
w1, w3, w4 = float(r["w1mpro_pm_wise"]), float(r["w3mpro_wise"]), float(r["w4mpro_wise"])
|
| 3348 |
-
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,
|
| 3349 |
e13=math.hypot(float(r["w1sigmpro_pm_wise"]), float(r["w3sigmpro_wise"])), e14=math.hypot(float(r["w1sigmpro_pm_wise"]), float(r["w4sigmpro_wise"])),
|
| 3350 |
-
ra=float(r["ra"]), dec=float(r["dec"])))
|
| 3351 |
bins = np.floor(np.array([s["c"] for s in st]) / 0.1).astype(int)
|
| 3352 |
for key in ("c13", "c14"):
|
| 3353 |
val = np.array([s[key] for s in st])
|
|
@@ -3361,9 +3388,15 @@ def w3only_main(record=False, widths=5.0, errors=5.0, w4_widths=2.0, colour_min=
|
|
| 3361 |
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]]
|
| 3362 |
flags = {}
|
| 3363 |
if up:
|
| 3364 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3365 |
if m["source_id"] not in flags or float(m["angDist"]) < flags[m["source_id"]][0]:
|
| 3366 |
-
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()
|
|
|
|
| 3367 |
sim = {}
|
| 3368 |
for k in range(0, len(up), 200):
|
| 3369 |
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(
|
|
@@ -3372,9 +3405,12 @@ def w3only_main(record=False, widths=5.0, errors=5.0, w4_widths=2.0, colour_min=
|
|
| 3372 |
for s in up:
|
| 3373 |
f = flags.get(s["id"])
|
| 3374 |
s["simbad"] = sim.get(s["id"])
|
| 3375 |
-
s["flags"] = f
|
|
|
|
|
|
|
|
|
|
| 3376 |
# 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
|
| 3377 |
-
s["vet"] = ("artefact" if (f and (f[1].strip("0") or f[2] not in ("", "0"))) or s["w3"] > w3_faint else
|
| 3378 |
"dust" if s["rc14"][0] > 3 * s["e14"] else
|
| 3379 |
"natural-type" if s["simbad"] and s["simbad"][1] not in ("*", "PM*", "HV*", "low-mass*") else None)
|
| 3380 |
# a second Gaia source inside the 6.5 arcsec W3 beam, within five magnitudes, shares the 12 um flux
|
|
@@ -3520,12 +3556,12 @@ def warmgalaxies_main(record=False, d_max_mpc=150.0, ssfr_max=-11.0, heat_min=-1
|
|
| 3520 |
print("recorded")
|
| 3521 |
|
| 3522 |
|
| 3523 |
-
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.
|
| 3524 |
|
| 3525 |
-
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]"""
|
| 3526 |
|
| 3527 |
|
| 3528 |
-
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):
|
| 3529 |
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, "
|
| 3530 |
"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)
|
| 3531 |
# AllWISE's profile magnitude at 2010.5 and CatWISE's at 2015.0, each matched at the star's position for its epoch
|
|
@@ -3552,6 +3588,7 @@ def irdim_main(record=False, plx_min=50.0, dmag=0.3, radius_arcsec=3.0, saturati
|
|
| 3552 |
continue
|
| 3553 |
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("/"),
|
| 3554 |
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),
|
|
|
|
| 3555 |
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))
|
| 3556 |
d = np.array([s["d"] for s in st])
|
| 3557 |
off = float(np.median(d)) if len(d) else 0.0
|
|
@@ -3577,6 +3614,24 @@ def irdim_main(record=False, plx_min=50.0, dmag=0.3, radius_arcsec=3.0, saturati
|
|
| 3577 |
"blend" if (s["ruwe"] or 0) > 1.4 or (s["multi"] or 0) > 2 or typ in ("**", "SB*") else
|
| 3578 |
"artefact" if s["flags"].replace("/", "").strip("0") or s["w1_all"] < saturation else
|
| 3579 |
"astrometry" if s["sep"] > match_arcsec or s["pm"] > fast_mas_yr else None)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3580 |
left = [s for s in both if s["vet"] is None]
|
| 3581 |
count = {v: sum(s["vet"] == v for s in both) for v in ("variable-star", "blend", "artefact", "astrometry")}
|
| 3582 |
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, "
|
|
@@ -3599,8 +3654,9 @@ def irdim_main(record=False, plx_min=50.0, dmag=0.3, radius_arcsec=3.0, saturati
|
|
| 3599 |
"%d fainter against %d brighter; %d variables, %d blends, %d flagged or saturated, %d matched to another source; %d unexplained" % (
|
| 3600 |
len(dim), len(bright), count["variable-star"], count["blend"], count["artefact"], count["astrometry"], len(left)),
|
| 3601 |
[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"],
|
| 3602 |
-
note="W1 %.3f to %.3f +- %.3f at %.1f arcsec, flags %s; G %s, RUWE %s, %s, %.0f mas/yr; SIMBAD %s" % (
|
| 3603 |
-
s["w1_all"], s["w1_cat"], s["e"], s["sep"], s["flags"] or "-", s["g"], s["ruwe"], s["var"], s["pm"], s["simbad"]
|
|
|
|
| 3604 |
print("recorded")
|
| 3605 |
|
| 3606 |
|
|
@@ -4516,7 +4572,80 @@ def coldcomp_main(record=False, t_min=2.8, t_max=10.0, sigmas=2.0, dust_alpha=2.
|
|
| 4516 |
print("recorded")
|
| 4517 |
|
| 4518 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4519 |
APPROACHES = {
|
|
|
|
| 4520 |
"coldcomp": (lambda: core.run_cli(coldcomp_main), coldcomp_DOC),
|
| 4521 |
"diskvoids": (lambda: core.run_cli(diskvoids_main), diskvoids_DOC),
|
| 4522 |
"gcdust": (lambda: core.run_cli(gcdust_main), gcdust_DOC),
|
|
|
|
| 3183 |
print("recorded")
|
| 3184 |
|
| 3185 |
|
| 3186 |
+
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, and still does with AllWISE's plain profile W1 in place of the catalogue's proper-motion-fitted W1, which runs faint for bright and fast stars; 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.
|
| 3187 |
|
| 3188 |
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.
|
| 3189 |
|
|
|
|
| 3206 |
x, y, z = math.cos(de) * math.cos(ra), math.cos(de) * math.sin(ra), math.sin(de)
|
| 3207 |
ye, ze = y * math.cos(eps) + z * math.sin(eps), -y * math.sin(eps) + z * math.cos(eps)
|
| 3208 |
return abs(math.degrees(math.asin(max(-1.0, min(1.0, x * normal[0] + ye * normal[1] + ze * normal[2])))))
|
| 3209 |
+
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, "
|
| 3210 |
"w1sigmpro_pm_wise, w3mpro_wise, w3sigmpro_wise, w4mpro_wise, w4sigmpro_wise",
|
| 3211 |
"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)
|
| 3212 |
st = []
|
|
|
|
| 3216 |
continue
|
| 3217 |
st.append(dict(id=r["source_id"], beta=latitude(float(r["ra"]), float(r["dec"])), bprp=bprp, w1=num(r["w1mpro_pm_wise"]),
|
| 3218 |
s1=num(r["w1sigmpro_pm_wise"]), w3=num(r["w3mpro_wise"]), s3=num(r["w3sigmpro_wise"]), w4=num(r["w4mpro_wise"]),
|
| 3219 |
+
s4=num(r["w4sigmpro_wise"]), g=num(r["phot_g_mean_mag"]), plx=num(r["parallax"]), ra=float(r["ra"]), dec=float(r["dec"]),
|
| 3220 |
+
pmra=num(r["pmra"]) or 0.0, pmdec=num(r["pmdec"]) or 0.0))
|
| 3221 |
+
warm, loci = {}, {}
|
| 3222 |
for band, lim in (("3", w3_err_max), ("4", w4_err_max)):
|
| 3223 |
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]
|
| 3224 |
col = np.array([s["w1"] - s["w" + band] for s in use])
|
|
|
|
| 3235 |
err = math.hypot(s["s1"], s["s" + band])
|
| 3236 |
if col[i] - med > max(widths * wid, errors * err):
|
| 3237 |
warm.setdefault(s["id"], {})[band] = round(float(col[i] - med), 2)
|
| 3238 |
+
loci[(s["id"], band)] = (med, wid, err)
|
| 3239 |
+
# the catalogue's W1 is AllWISE's proper-motion fit, which runs up to a magnitude faint of the plain profile W1 for bright and fast stars:
|
| 3240 |
+
# each warm star's colour taken again with the plain W1 at its 2010.5 position, against the same locus
|
| 3241 |
+
by_id = {s["id"]: s for s in st}
|
| 3242 |
+
pts = [dict(source_id=str(i), ra=core.star_at(by_id[i]["ra"], by_id[i]["dec"], by_id[i]["pmra"], by_id[i]["pmdec"], 2016.0, 2010.5)[0] % 360,
|
| 3243 |
+
dec=core.star_at(by_id[i]["ra"], by_id[i]["dec"], by_id[i]["pmra"], by_id[i]["pmdec"], 2016.0, 2010.5)[1]) for i in warm]
|
| 3244 |
+
plain = {}
|
| 3245 |
+
for k in range(0, len(pts), 2000):
|
| 3246 |
+
for m in core.xmatch(pts[k:k + 2000], "II/328/allwise", 3.0):
|
| 3247 |
+
w1 = num(m.get("W1mag"))
|
| 3248 |
+
if w1 is not None and (m["source_id"] not in plain or float(m["angDist"]) < plain[m["source_id"]][0]):
|
| 3249 |
+
plain[m["source_id"]] = (float(m["angDist"]), w1)
|
| 3250 |
+
fitted = 0
|
| 3251 |
+
for i in list(warm):
|
| 3252 |
+
p = plain.get(str(i))
|
| 3253 |
+
if p is None:
|
| 3254 |
+
continue
|
| 3255 |
+
s = by_id[i]
|
| 3256 |
+
still = {band: round(float(p[1] - s["w" + band] - loci[(i, band)][0]), 2) for band in warm[i]
|
| 3257 |
+
if p[1] - s["w" + band] - loci[(i, band)][0] > max(widths * loci[(i, band)][1], errors * loci[(i, band)][2])}
|
| 3258 |
+
if not still:
|
| 3259 |
+
del warm[i]
|
| 3260 |
+
fitted += 1
|
| 3261 |
+
else:
|
| 3262 |
+
warm[i] = still
|
| 3263 |
+
print("%d warm by the catalogue's proper-motion-fitted W1 lose their excess with AllWISE's plain W1" % fitted)
|
| 3264 |
zone = [s for s in st if s["beta"] < zone_deg and (s["w3"] is not None or s["w4"] is not None)]
|
| 3265 |
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)]
|
| 3266 |
wz = [s for s in zone if s["id"] in warm]
|
|
|
|
| 3356 |
print("recorded")
|
| 3357 |
|
| 3358 |
|
| 3359 |
+
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 at its 2010.5 position for its contamination and variability flags and its plain profile W1, against which the catalogue's proper-motion-fitted W1 runs faint for bright and fast stars, 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.
|
| 3360 |
|
| 3361 |
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]"""
|
| 3362 |
|
| 3363 |
|
| 3364 |
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):
|
| 3365 |
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, "
|
| 3366 |
+
"w4mpro_wise, w4sigmpro_wise, ra, dec, pmra, pmdec",
|
| 3367 |
"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 "
|
| 3368 |
"AND w1sigmpro_pm_wise < 0.05 AND w3sigmpro_wise < 0.1 AND w4sigmpro_wise < 0.2" % (w1_min, w1_max), ranges=12)
|
| 3369 |
st = []
|
|
|
|
| 3372 |
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:
|
| 3373 |
continue
|
| 3374 |
w1, w3, w4 = float(r["w1mpro_pm_wise"]), float(r["w3mpro_wise"]), float(r["w4mpro_wise"])
|
| 3375 |
+
st.append(dict(id=r["source_id"], c=bp - rp, g=num(r["phot_g_mean_mag"]), w1=w1, w3=w3, c13=w1 - w3, c14=w1 - w4,
|
| 3376 |
e13=math.hypot(float(r["w1sigmpro_pm_wise"]), float(r["w3sigmpro_wise"])), e14=math.hypot(float(r["w1sigmpro_pm_wise"]), float(r["w4sigmpro_wise"])),
|
| 3377 |
+
ra=float(r["ra"]), dec=float(r["dec"]), pmra=num(r["pmra"]) or 0.0, pmdec=num(r["pmdec"]) or 0.0))
|
| 3378 |
bins = np.floor(np.array([s["c"] for s in st]) / 0.1).astype(int)
|
| 3379 |
for key in ("c13", "c14"):
|
| 3380 |
val = np.array([s[key] for s in st])
|
|
|
|
| 3388 |
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]]
|
| 3389 |
flags = {}
|
| 3390 |
if up:
|
| 3391 |
+
# AllWISE at each star's 2010.5 position, its flags and its plain profile W1
|
| 3392 |
+
pts = []
|
| 3393 |
+
for s in up:
|
| 3394 |
+
ra10, de10 = core.star_at(s["ra"], s["dec"], s["pmra"], s["pmdec"], 2016.0, 2010.5)
|
| 3395 |
+
pts.append(dict(source_id=s["id"], ra=ra10 % 360, dec=de10))
|
| 3396 |
+
for m in core.xmatch(pts, "II/328/allwise", 3.0):
|
| 3397 |
if m["source_id"] not in flags or float(m["angDist"]) < flags[m["source_id"]][0]:
|
| 3398 |
+
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(),
|
| 3399 |
+
num(m.get("W1mag")))
|
| 3400 |
sim = {}
|
| 3401 |
for k in range(0, len(up), 200):
|
| 3402 |
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(
|
|
|
|
| 3405 |
for s in up:
|
| 3406 |
f = flags.get(s["id"])
|
| 3407 |
s["simbad"] = sim.get(s["id"])
|
| 3408 |
+
s["flags"] = f[:4] if f else None
|
| 3409 |
+
# the excess taken again with AllWISE's plain profile W1, since the catalogue's proper-motion-fitted W1 runs faint for bright and fast stars
|
| 3410 |
+
s["w1_plain"] = f[4] if f else None
|
| 3411 |
+
plain_gone = s["w1_plain"] is not None and s["rc13"][0] + (s["w1_plain"] - s["w1"]) <= max(widths * s["rc13"][1], errors * s["e13"])
|
| 3412 |
# 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
|
| 3413 |
+
s["vet"] = ("artefact" if (f and (f[1].strip("0") or f[2] not in ("", "0"))) or s["w3"] > w3_faint or plain_gone else
|
| 3414 |
"dust" if s["rc14"][0] > 3 * s["e14"] else
|
| 3415 |
"natural-type" if s["simbad"] and s["simbad"][1] not in ("*", "PM*", "HV*", "low-mass*") else None)
|
| 3416 |
# a second Gaia source inside the 6.5 arcsec W3 beam, within five magnitudes, shares the 12 um flux
|
|
|
|
| 3556 |
print("recorded")
|
| 3557 |
|
| 3558 |
|
| 3559 |
+
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; a star still unexplained is read in NEOWISE's single exposures of 2014-2024 at its own position on each date, and one holding AllWISE's W1 there to 0.15 mag did not fade, CatWISE's proper-motion-fitted W1 of a fast star having moved instead.
|
| 3560 |
|
| 3561 |
+
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] [--neowise-tol 0.15]"""
|
| 3562 |
|
| 3563 |
|
| 3564 |
+
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, neowise_tol=0.15):
|
| 3565 |
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, "
|
| 3566 |
"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)
|
| 3567 |
# AllWISE's profile magnitude at 2010.5 and CatWISE's at 2015.0, each matched at the star's position for its epoch
|
|
|
|
| 3588 |
continue
|
| 3589 |
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("/"),
|
| 3590 |
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),
|
| 3591 |
+
ra=float(r["ra"]), dec=float(r["dec"]), pmra=num(r["pmra"]) or 0.0, pmdec=num(r["pmdec"]) or 0.0, neowise=None,
|
| 3592 |
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))
|
| 3593 |
d = np.array([s["d"] for s in st])
|
| 3594 |
off = float(np.median(d)) if len(d) else 0.0
|
|
|
|
| 3614 |
"blend" if (s["ruwe"] or 0) > 1.4 or (s["multi"] or 0) > 2 or typ in ("**", "SB*") else
|
| 3615 |
"artefact" if s["flags"].replace("/", "").strip("0") or s["w1_all"] < saturation else
|
| 3616 |
"astrometry" if s["sep"] > match_arcsec or s["pm"] > fast_mas_yr else None)
|
| 3617 |
+
# the rest against NEOWISE's single exposures of 2014-2024, each read at the star's own position on its date: a star whose 3.4 um light holds at
|
| 3618 |
+
# AllWISE's level there did not fade, and CatWISE's proper-motion-fitted W1 of a fast star is what moved
|
| 3619 |
+
for s in both:
|
| 3620 |
+
if s["vet"] is not None:
|
| 3621 |
+
continue
|
| 3622 |
+
ra19, de19 = core.star_at(s["ra"], s["dec"], s["pmra"], s["pmdec"], 2016.0, 2019.5)
|
| 3623 |
+
found = core.tap("irsa", "SELECT mjd, ra, dec, w1mpro, qual_frame FROM neowiser_p1bs_psd WHERE CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.6f)) = 1"
|
| 3624 |
+
% (ra19 % 360, de19, 9 / 3600.0), timeout=900)
|
| 3625 |
+
w = []
|
| 3626 |
+
for x in found:
|
| 3627 |
+
if num(x["w1mpro"]) is None or (num(x["qual_frame"]) or 0) <= 0:
|
| 3628 |
+
continue
|
| 3629 |
+
pr, pd = core.star_at(s["ra"], s["dec"], s["pmra"], s["pmdec"], 2016.0, 2000.0 + (float(x["mjd"]) - 51544.5) / 365.25)
|
| 3630 |
+
if math.hypot((float(x["ra"]) - pr) * math.cos(math.radians(pd)), float(x["dec"]) - pd) * 3600 < 2.0:
|
| 3631 |
+
w.append(float(x["w1mpro"]))
|
| 3632 |
+
s["neowise"] = (len(w), float(np.median(w))) if w else (0, None)
|
| 3633 |
+
if len(w) >= 10 and abs(s["neowise"][1] - s["w1_all"]) < neowise_tol:
|
| 3634 |
+
s["vet"] = "artefact"
|
| 3635 |
left = [s for s in both if s["vet"] is None]
|
| 3636 |
count = {v: sum(s["vet"] == v for s in both) for v in ("variable-star", "blend", "artefact", "astrometry")}
|
| 3637 |
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, "
|
|
|
|
| 3654 |
"%d fainter against %d brighter; %d variables, %d blends, %d flagged or saturated, %d matched to another source; %d unexplained" % (
|
| 3655 |
len(dim), len(bright), count["variable-star"], count["blend"], count["artefact"], count["astrometry"], len(left)),
|
| 3656 |
[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"],
|
| 3657 |
+
note="W1 %.3f to %.3f +- %.3f at %.1f arcsec, flags %s; G %s, RUWE %s, %s, %.0f mas/yr; SIMBAD %s%s" % (
|
| 3658 |
+
s["w1_all"], s["w1_cat"], s["e"], s["sep"], s["flags"] or "-", s["g"], s["ruwe"], s["var"], s["pm"], s["simbad"],
|
| 3659 |
+
"; NEOWISE 2014-2024: %d single exposures, median W1 %.3f" % s["neowise"] if s.get("neowise") and s["neowise"][1] is not None else "")) for s in both])
|
| 3660 |
print("recorded")
|
| 3661 |
|
| 3662 |
|
|
|
|
| 4572 |
print("recorded")
|
| 4573 |
|
| 4574 |
|
| 4575 |
+
pvedge_DOC = r"""A silicon photovoltaic edge: a star wrapped in silicon collectors absorbs below 1.1 um and passes the J band, so RP-J rises at fixed BP-RP while J-Ks stays on its locus; Gaia Catalogue of Nearby Stars members at BP-RP 0.5-3.0 with RUWE below 1.4, one image peak and J and Ks measured to 0.03 mag, RP-J more than five locus widths and five errors above the running median at their colour with J-Ks within two widths of its own, against the stars as far below; each read for 2MASS quality and contamination flags, a Gaia neighbour within 4 arcsec and 6 mag inside the 2MASS beam, and the height above the main sequence in M_G at the same colour, where an unresolved twin sits 0.4-0.75 mag above it; RP-J at fixed BP-RP also rises with metallicity, so a photometric excess alone does not separate a collector from a metal-rich star.
|
| 4576 |
+
|
| 4577 |
+
python -I seti.py infrared pvedge [record] [--widths 5] [--jk-widths 2] [--emax 0.03] [--beam-arcsec 4] [--twin-mag 0.4]"""
|
| 4578 |
+
|
| 4579 |
+
|
| 4580 |
+
def pvedge_main(record=False, widths=5.0, jk_widths=2.0, emax=0.03, beam_arcsec=4.0, twin_mag=0.4):
|
| 4581 |
+
rows = catalogues.gcns("source_id, ra, dec, parallax, phot_g_mean_mag, phot_bp_mean_mag, phot_rp_mean_mag, j_m_2mass, j_msig_2mass, k_m_2mass, k_msig_2mass, ruwe, ipd_frac_multi_peak, pmra, pmdec",
|
| 4582 |
+
"gcns_prob > 0.9 AND wd_prob < 0.1 AND ruwe < 1.4 AND ipd_frac_multi_peak <= 2 AND j_msig_2mass < %g AND k_msig_2mass < %g AND j_m_2mass > 5" % (emax, emax), ranges=12)
|
| 4583 |
+
st = []
|
| 4584 |
+
for r in rows:
|
| 4585 |
+
bp, rp, g, j, k, plx = (num(r[c]) for c in ("phot_bp_mean_mag", "phot_rp_mean_mag", "phot_g_mean_mag", "j_m_2mass", "k_m_2mass", "parallax"))
|
| 4586 |
+
if None in (bp, rp, g, j, k, plx) or not 0.5 <= bp - rp <= 3.0:
|
| 4587 |
+
continue
|
| 4588 |
+
st.append(dict(id=str(r["source_id"]), ra=float(r["ra"]), dec=float(r["dec"]), c=bp - rp, g=g, mg=g + 5 * math.log10(plx / 100), rpj=rp - j, jk=j - k,
|
| 4589 |
+
e=math.hypot(float(r["j_msig_2mass"]), 0.003), pm=math.hypot(num(r["pmra"]) or 0, num(r["pmdec"]) or 0)))
|
| 4590 |
+
bins = np.floor(np.array([s["c"] for s in st]) / 0.05).astype(int)
|
| 4591 |
+
for key in ("rpj", "jk", "mg"):
|
| 4592 |
+
v = np.array([s[key] for s in st])
|
| 4593 |
+
for b in set(bins.tolist()):
|
| 4594 |
+
i = np.nonzero(bins == b)[0]
|
| 4595 |
+
med = float(np.median(v[i]))
|
| 4596 |
+
wid = 1.4826 * float(np.median(np.abs(v[i] - med)))
|
| 4597 |
+
for t in i:
|
| 4598 |
+
st[t]["r" + key] = (v[t] - med, wid) if len(i) >= 30 else None
|
| 4599 |
+
ok = [s for s in st if s["rrpj"] and s["rjk"]]
|
| 4600 |
+
up = [s for s in ok if s["rrpj"][0] > max(widths * s["rrpj"][1], widths * s["e"]) and abs(s["rjk"][0]) < jk_widths * s["rjk"][1]]
|
| 4601 |
+
down = [s for s in ok if -s["rrpj"][0] > max(widths * s["rrpj"][1], widths * s["e"]) and abs(s["rjk"][0]) < jk_widths * s["rjk"][1]]
|
| 4602 |
+
flags = {}
|
| 4603 |
+
for k0 in range(0, len(up), 2000):
|
| 4604 |
+
for m in core.xmatch([dict(source_id=s["id"], ra=s["ra"], dec=s["dec"]) for s in up[k0:k0 + 2000]], "II/246/out", 5.0):
|
| 4605 |
+
if m["source_id"] not in flags or float(m["angDist"]) < flags[m["source_id"]][0]:
|
| 4606 |
+
flags[m["source_id"]] = (float(m["angDist"]), str(m.get("Qfl") or m.get("Qflg") or "").strip(), str(m.get("Cfl") or m.get("Cflg") or "").strip())
|
| 4607 |
+
near = {}
|
| 4608 |
+
for k0 in range(0, len(up), 50):
|
| 4609 |
+
chunk = up[k0:k0 + 50]
|
| 4610 |
+
where = " OR ".join("1 = CONTAINS(POINT('ICRS', ra, dec), CIRCLE('ICRS', %.6f, %.6f, %.6f))" % (s["ra"], s["dec"], beam_arcsec / 3600) for s in chunk)
|
| 4611 |
+
for r in core.tap("gaia", "SELECT source_id, ra, dec, phot_g_mean_mag FROM gaiadr3.gaia_source WHERE " + where):
|
| 4612 |
+
for s in chunk:
|
| 4613 |
+
if str(r["source_id"]) != s["id"] and sep_arcsec(float(r["ra"]), float(r["dec"]), s["ra"], s["dec"]) < beam_arcsec \
|
| 4614 |
+
and (num(r["phot_g_mean_mag"]) is None or num(r["phot_g_mean_mag"]) < s["g"] + 6):
|
| 4615 |
+
near.setdefault(s["id"], []).append(num(r["phot_g_mean_mag"]))
|
| 4616 |
+
for s in up:
|
| 4617 |
+
f = flags.get(s["id"])
|
| 4618 |
+
s["tmass"] = f
|
| 4619 |
+
s["near"] = near.get(s["id"], [])
|
| 4620 |
+
s["mg_off"] = -s["rmg"][0] if s.get("rmg") else None
|
| 4621 |
+
s["vet"] = ("blend" if s["near"] else "artefact" if f and (f[1][:1] != "A" or f[1][2:3] != "A" or f[2].strip("0")) else
|
| 4622 |
+
"binary" if s["mg_off"] is not None and s["mg_off"] > twin_mag else None)
|
| 4623 |
+
left = [s for s in up if s["vet"] is None]
|
| 4624 |
+
print("%d stars at BP-RP 0.5-3.0 with clean J and Ks; RP-J above by %g widths with J-Ks on its locus: %d; as far below: %d; "
|
| 4625 |
+
"%d blends, %d with 2MASS flags, %d above the main sequence by %g mag; %d left" % (
|
| 4626 |
+
len(ok), widths, len(up), len(down), sum(s["vet"] == "blend" for s in up), sum(s["vet"] == "artefact" for s in up),
|
| 4627 |
+
sum(s["vet"] == "binary" for s in up), twin_mag, len(left)))
|
| 4628 |
+
for s in sorted(left, key=lambda s: -s["rrpj"][0] / s["rrpj"][1])[:30]:
|
| 4629 |
+
print(" Gaia DR3 %s BP-RP %.2f G %.2f RP-J +%.3f (%.1f widths) J-Ks %+.3f, M_G %+.2f from the sequence, pm %.0f mas/yr" % (
|
| 4630 |
+
s["id"], s["c"], s["g"], s["rrpj"][0], s["rrpj"][0] / s["rrpj"][1], s["rjk"][0], s["mg_off"] or 0, s["pm"]))
|
| 4631 |
+
if record:
|
| 4632 |
+
core.record_run(
|
| 4633 |
+
"pv_edge_rp_j", "A silicon photovoltaic edge", "Gaia Catalogue of Nearby Stars with its 2MASS photometry; 2MASS PSC (II/246) by CDS XMatch; Gaia DR3",
|
| 4634 |
+
"%d single-looking stars at BP-RP 0.5-3.0 with J and Ks to %g mag" % (len(ok), emax), os.path.abspath(__file__), "pvedge", len(ok), "stars",
|
| 4635 |
+
dict(widths=widths, jk_widths=jk_widths, emax=emax, beam_arcsec=beam_arcsec, twin_mag=twin_mag), dict(above=len(up), below=len(down)),
|
| 4636 |
+
"RP-J %g locus widths and errors above the running median at the star's colour with J-Ks on its locus" % widths,
|
| 4637 |
+
"%d above against %d below: %d blends, %d with 2MASS flags, %d twins above the main sequence; %d left, which the metallicity dependence of RP-J at fixed BP-RP "
|
| 4638 |
+
"leaves undecided by photometry" % (len(up), len(down), sum(s["vet"] == "blend" for s in up), sum(s["vet"] == "artefact" for s in up),
|
| 4639 |
+
sum(s["vet"] == "binary" for s in up), len(left)),
|
| 4640 |
+
[dict(target="gaia_dr3:%s" % s["id"], stat=round(s["rrpj"][0] / s["rrpj"][1], 1), unit="RP-J locus widths above the median", vet=s["vet"],
|
| 4641 |
+
note="BP-RP %.2f, G %.2f, RP-J +%.3f, J-Ks %+.3f, M_G %s from the sequence, 2MASS %s, neighbours %s" % (
|
| 4642 |
+
s["c"], s["g"], s["rrpj"][0], s["rjk"][0], "%+.2f" % s["mg_off"] if s["mg_off"] is not None else "-", s["tmass"], s["near"] or "none"))
|
| 4643 |
+
for s in up])
|
| 4644 |
+
print("recorded")
|
| 4645 |
+
|
| 4646 |
+
|
| 4647 |
APPROACHES = {
|
| 4648 |
+
"pvedge": (lambda: core.run_cli(pvedge_main), pvedge_DOC),
|
| 4649 |
"coldcomp": (lambda: core.run_cli(coldcomp_main), coldcomp_DOC),
|
| 4650 |
"diskvoids": (lambda: core.run_cli(diskvoids_main), diskvoids_DOC),
|
| 4651 |
"gcdust": (lambda: core.run_cli(gcdust_main), gcdust_DOC),
|
setitools/lasers.py
CHANGED
|
@@ -4996,7 +4996,123 @@ def skyfibre_cli():
|
|
| 4996 |
skyfibre_summary()
|
| 4997 |
|
| 4998 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4999 |
APPROACHES = {
|
|
|
|
| 5000 |
"skyfibre": (skyfibre_cli, skyfibre_DOC),
|
| 5001 |
"rvs": (rvs_cli, rvs_DOC),
|
| 5002 |
"eso": (eso_cli, eso_DOC),
|
|
|
|
| 4996 |
skyfibre_summary()
|
| 4997 |
|
| 4998 |
|
| 4999 |
+
telecom_DOC = r"""Telecom-band laser lines: the cached NIRPS and SPIRou spectra of the shoreline programme's M dwarfs, unresolved emission two to six samples wide above six local deviations in the O band (1260-1330 nm) and the C and L bands (1530-1625 nm), Paschen beta masked, recurring within 1.5 km/s in the star's frame on three or more nights whose barycentric corrections spread over 3 km/s, so a feature fixed at the telescope cannot recur, against the absorption-like dips the same test finds, the mirror; a recurring peak whose wavelengths scatter less in the telescope's frame than in the star's is sky emission the subtraction left, and one seen in more than one star sits on the stars' shared molecular pseudo-continuum rather than on one star.
|
| 5000 |
+
|
| 5001 |
+
python -I seti.py lasers telecom [record] [--sig 6] [--tol-kms 1.5] [--min-nights 3] [--min-berv-spread 3] [--edge 30]"""
|
| 5002 |
+
|
| 5003 |
+
telecom_WINDOWS = ((12600.0, 13300.0), (15300.0, 16250.0))
|
| 5004 |
+
telecom_MASK = ((12815.0, 12822.0),) # Paschen beta in air, in emission in active M dwarfs
|
| 5005 |
+
|
| 5006 |
+
|
| 5007 |
+
def telecom_features(w, f, sign, sig, edge):
|
| 5008 |
+
"""Unresolved features of one sign above SIG local deviations in the windows: (wavelength, significance)."""
|
| 5009 |
+
from scipy.ndimage import median_filter
|
| 5010 |
+
out = []
|
| 5011 |
+
for lo, hi in telecom_WINDOWS:
|
| 5012 |
+
m = (w > lo) & (w < hi) & np.isfinite(f)
|
| 5013 |
+
if m.sum() < 500:
|
| 5014 |
+
continue
|
| 5015 |
+
ww, ff = w[m], f[m]
|
| 5016 |
+
r = sign * (ff / median_filter(ff, size=41, mode="nearest") - 1.0)
|
| 5017 |
+
n = len(r)
|
| 5018 |
+
sd = 1.4826 * median_filter(np.abs(r - median_filter(r, size=401, mode="nearest")), size=401, mode="nearest")
|
| 5019 |
+
sd = np.where(sd > 0.2 * np.nanmedian(sd), sd, np.inf)
|
| 5020 |
+
# zero-filled stretches repeat a value exactly
|
| 5021 |
+
z = np.where(np.r_[False, np.diff(ff) == 0], 0.0, r / sd)
|
| 5022 |
+
for i in np.nonzero((z > sig) & (z >= np.roll(z, 1)) & (z >= np.roll(z, -1)))[0]:
|
| 5023 |
+
if i < 3 or i > n - 4 or any(a < ww[i] < b for a, b in telecom_MASK) or not lo + edge < ww[i] < hi - edge:
|
| 5024 |
+
continue
|
| 5025 |
+
j0, j1 = i, i
|
| 5026 |
+
while j0 > 0 and z[j0 - 1] > z[i] / 2:
|
| 5027 |
+
j0 -= 1
|
| 5028 |
+
while j1 < n - 1 and z[j1 + 1] > z[i] / 2:
|
| 5029 |
+
j1 += 1
|
| 5030 |
+
# a line through the spectrograph spans two to six samples above half its height; one sample is a hit on the detector
|
| 5031 |
+
if 2 <= j1 - j0 + 1 <= 6:
|
| 5032 |
+
out.append((float(ww[i]), float(z[i])))
|
| 5033 |
+
return out
|
| 5034 |
+
|
| 5035 |
+
|
| 5036 |
+
def telecom_main(record=False, sig=6.0, tol_kms=1.5, min_nights=3, min_berv_spread=3.0, edge=30.0):
|
| 5037 |
+
from astropy.io import fits
|
| 5038 |
+
from setitools import biosignatures, composition
|
| 5039 |
+
c = 299792.458
|
| 5040 |
+
root = os.path.join(biosignatures.shoreline_ROOT, "spectra")
|
| 5041 |
+
groups = collections.defaultdict(list)
|
| 5042 |
+
for inst in ("NIRPS", "SPIRou"):
|
| 5043 |
+
for p in sorted(glob.glob(os.path.join(root, inst, "*.fits"))):
|
| 5044 |
+
try:
|
| 5045 |
+
obj = str(fits.getheader(p).get("OBJECT", "")).strip().upper()
|
| 5046 |
+
except Exception:
|
| 5047 |
+
continue
|
| 5048 |
+
groups[(inst, re.sub(r"[ _-]", "", obj))].append(p)
|
| 5049 |
+
res, n_dips, n_spec = [], 0, sum(len(v) for v in groups.values())
|
| 5050 |
+
for (inst, obj), paths in sorted(groups.items()):
|
| 5051 |
+
if len(paths) < min_nights:
|
| 5052 |
+
continue
|
| 5053 |
+
loaded = []
|
| 5054 |
+
for p in paths:
|
| 5055 |
+
try:
|
| 5056 |
+
loaded.append(biosignatures.shoreline_load(p))
|
| 5057 |
+
except Exception:
|
| 5058 |
+
continue
|
| 5059 |
+
if not loaded:
|
| 5060 |
+
continue
|
| 5061 |
+
vsys = composition.companions_vsys(loaded)
|
| 5062 |
+
found = {+1: [], -1: []}
|
| 5063 |
+
for w, f, e, meta in loaded:
|
| 5064 |
+
rv = meta.get("rv") if meta.get("rv") is not None else vsys
|
| 5065 |
+
berv = meta.get("berv") or 0.0
|
| 5066 |
+
for sign in (+1, -1):
|
| 5067 |
+
for lam, z in telecom_features(np.asarray(w, float), np.asarray(f, float), sign, sig, edge):
|
| 5068 |
+
found[sign].append(dict(rest=lam / (1.0 + rv / c), obs=lam / (1.0 + berv / c), z=z, night=math.floor(meta["mjd"] + 0.3), berv=berv))
|
| 5069 |
+
rec = {}
|
| 5070 |
+
for sign in (+1, -1):
|
| 5071 |
+
runs = []
|
| 5072 |
+
for x in sorted(found[sign], key=lambda x: x["rest"]):
|
| 5073 |
+
if runs and (x["rest"] - runs[-1][-1]["rest"]) / x["rest"] * c < tol_kms:
|
| 5074 |
+
runs[-1].append(x)
|
| 5075 |
+
else:
|
| 5076 |
+
runs.append([x])
|
| 5077 |
+
# scatter of the feature's wavelength in the star's frame and in the telescope's, in km/s
|
| 5078 |
+
rec[sign] = [dict(rest=float(np.median([x["rest"] for x in g])), nights=len({x["night"] for x in g}), z=max(x["z"] for x in g),
|
| 5079 |
+
spread=max(x["berv"] for x in g) - min(x["berv"] for x in g),
|
| 5080 |
+
sd_star=float(np.std([x["rest"] for x in g]) / g[0]["rest"] * c), sd_tel=float(np.std([x["obs"] for x in g]) / g[0]["obs"] * c))
|
| 5081 |
+
for g in runs if len({x["night"] for x in g}) >= min_nights]
|
| 5082 |
+
rec[sign] = [r for r in rec[sign] if r["spread"] > min_berv_spread]
|
| 5083 |
+
for r in rec[+1]:
|
| 5084 |
+
res.append(dict(inst=inst, obj=obj, **r))
|
| 5085 |
+
n_dips += len(rec[-1])
|
| 5086 |
+
print("%-7s %-16s %3d spectra: recurring peaks %d, recurring dips %d" % (inst, obj[:16], len(paths), len(rec[+1]), len(rec[-1])), flush=True)
|
| 5087 |
+
# a peak at one rest wavelength in two or more stars belongs to the M dwarfs' shared spectrum
|
| 5088 |
+
# a peak that holds its wavelength better at the telescope than in the star is sky emission left by the subtraction
|
| 5089 |
+
for r in res:
|
| 5090 |
+
others = {(x["inst"], x["obj"]) for x in res if abs(x["rest"] - r["rest"]) / r["rest"] * c < 3 * tol_kms and x["obj"] != r["obj"]}
|
| 5091 |
+
r["vet"] = "atmospheric-line" if r["sd_tel"] <= r["sd_star"] else "shared-feature" if others else None
|
| 5092 |
+
left = [r for r in res if r["vet"] is None]
|
| 5093 |
+
print("%d spectra in %d groups; %d recurring peaks against %d recurring dips; %d steadier at the telescope than in the star, %d seen in more than one star, %d left" % (
|
| 5094 |
+
n_spec, len(groups), len(res), n_dips, sum(r["vet"] == "atmospheric-line" for r in res), sum(r["vet"] == "shared-feature" for r in res), len(left)))
|
| 5095 |
+
for r in left:
|
| 5096 |
+
print(" %s %s: %.3f A in the star's frame, %d nights, %.1f sigma, BERV spread %.1f km/s, scatter %.2f km/s in the star and %.2f at the telescope" % (
|
| 5097 |
+
r["inst"], r["obj"], r["rest"], r["nights"], r["z"], r["spread"], r["sd_star"], r["sd_tel"]))
|
| 5098 |
+
if record:
|
| 5099 |
+
# one-star peaks are the photometric tail when the dips, which no laser makes, outnumber them
|
| 5100 |
+
mirror = len(left) <= n_dips
|
| 5101 |
+
core.record_run(
|
| 5102 |
+
"telecom_band_lasers", "Telecom-band laser lines", "ESO Phase 3 (NIRPS) and the CADC (CFHT SPIRou): the shoreline programme's cached spectra",
|
| 5103 |
+
"%d spectra of %d instrument-star groups" % (n_spec, len(groups)), os.path.abspath(__file__), "telecom", len(groups), "instrument-star groups",
|
| 5104 |
+
dict(sig=sig, tol_kms=tol_kms, min_nights=min_nights, min_berv_spread=min_berv_spread, edge=edge, windows=telecom_WINDOWS),
|
| 5105 |
+
dict(peaks=len(res), dips=n_dips), "an unresolved feature above %g local deviations recurring on %d nights in the star's frame" % (sig, min_nights),
|
| 5106 |
+
"%d recurring peaks against %d recurring dips; %d steadier at the telescope than in the star, %d in more than one star; %d left" % (
|
| 5107 |
+
len(res), n_dips, sum(r["vet"] == "atmospheric-line" for r in res), sum(r["vet"] == "shared-feature" for r in res), len(left)),
|
| 5108 |
+
[dict(target="%s#%.3f" % (r["obj"], r["rest"]), stat=round(r["z"], 1), unit="sigma, the strongest night", vet=r["vet"] or ("chance-rate" if mirror else None),
|
| 5109 |
+
note="%s; %d nights; BERV spread %.1f km/s; scatter %.2f km/s in the star, %.2f at the telescope" % (
|
| 5110 |
+
r["inst"], r["nights"], r["spread"], r["sd_star"], r["sd_tel"])) for r in res])
|
| 5111 |
+
print("recorded")
|
| 5112 |
+
|
| 5113 |
+
|
| 5114 |
APPROACHES = {
|
| 5115 |
+
"telecom": (lambda: core.run_cli(telecom_main), telecom_DOC),
|
| 5116 |
"skyfibre": (skyfibre_cli, skyfibre_DOC),
|
| 5117 |
"rvs": (rvs_cli, rvs_DOC),
|
| 5118 |
"eso": (eso_cli, eso_DOC),
|
setitools/radio_sky.py
CHANGED
|
@@ -4652,13 +4652,47 @@ def glitchsched_main(record=False, min_glitches=5, cv_max=0.3, draws=4000):
|
|
| 4652 |
print("recorded")
|
| 4653 |
|
| 4654 |
|
| 4655 |
-
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.
|
| 4656 |
|
| 4657 |
-
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]"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4658 |
|
| 4659 |
|
| 4660 |
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,
|
| 4661 |
-
racs_dec_max=41.0):
|
| 4662 |
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)
|
| 4663 |
sk = next(k for k in rows[0] if k.replace("_", ".").lower() == "s1.4") if rows else "S1.4"
|
| 4664 |
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]
|
|
@@ -4700,6 +4734,27 @@ def switchoff_main(record=False, flux_min_mjy=100.0, major_max_arcsec=25.0, radi
|
|
| 4700 |
s["around"] = int(n[0]["n"]) if n else 0
|
| 4701 |
if s["around"] == 0:
|
| 4702 |
s["vet"] = "catalogue-dropped"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4703 |
left = [s for s in gone if s["vet"] is None]
|
| 4704 |
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 "
|
| 4705 |
"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 "
|
|
@@ -4708,9 +4763,9 @@ def switchoff_main(record=False, flux_min_mjy=100.0, major_max_arcsec=25.0, radi
|
|
| 4708 |
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)))
|
| 4709 |
for s in sorted(gone, key=lambda s: -s["s"]):
|
| 4710 |
if s["vet"] != "natural-type":
|
| 4711 |
-
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" % (
|
| 4712 |
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 "",
|
| 4713 |
-
s["simbad"], s["vet"] or "unexplained"))
|
| 4714 |
json.dump(dict(n=len(src), compact=len(compact), gone=gone), open(core.results("radio_switchoffs.json"), "w"), indent=1)
|
| 4715 |
if record:
|
| 4716 |
core.record_run(
|
|
@@ -4725,8 +4780,9 @@ def switchoff_main(record=False, flux_min_mjy=100.0, major_max_arcsec=25.0, radi
|
|
| 4725 |
len(gone), len(compact), sum(s["vet"] == "natural-type" for s in gone), sum(s["vet"] == "bright-neighbour" for s in gone), bright_jy,
|
| 4726 |
sum(s["vet"] == "catalogue-dropped" for s in gone), len(left)),
|
| 4727 |
[dict(target="nvss:%s" % s["name"], stat=s["s"], unit="mJy at 1.4 GHz, absent from VLASS", vet=s["vet"],
|
| 4728 |
-
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,
|
| 4729 |
-
", near " + s["bright"] if s.get("bright") else "", s["simbad"]
|
|
|
|
| 4730 |
print("recorded")
|
| 4731 |
|
| 4732 |
|
|
@@ -5058,9 +5114,9 @@ def hostlesssed_main(record=False, controls=200):
|
|
| 5058 |
print("recorded")
|
| 5059 |
|
| 5060 |
|
| 5061 |
-
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.
|
| 5062 |
|
| 5063 |
-
python -I seti.py radio_sky hostlessnir [record] [--arcsec 2]"""
|
| 5064 |
|
| 5065 |
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))
|
| 5066 |
|
|
@@ -5077,7 +5133,7 @@ def kz_redshift(k):
|
|
| 5077 |
return 10 ** (0.5 * (lo + hi))
|
| 5078 |
|
| 5079 |
|
| 5080 |
-
def hostlessnir_main(record=False, arcsec=2.0):
|
| 5081 |
bare = [b for b in json.load(open(core.results("crates_hostless.json"))) if b.get("vet") is None]
|
| 5082 |
up = [dict(source_id=k, ra=b["ra"], dec=b["dec"]) for k, b in enumerate(bare)]
|
| 5083 |
for b in bare:
|
|
@@ -5106,9 +5162,33 @@ def hostlessnir_main(record=False, arcsec=2.0):
|
|
| 5106 |
b["k"], b["z"], b["z_kind"] = depth, kz_redshift(depth), "lower limit"
|
| 5107 |
else:
|
| 5108 |
b["k"], b["z"], b["z_kind"] = None, None, "not covered"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5109 |
det = [b for b in bare if b["z_kind"] == "estimate"]
|
| 5110 |
lim = [b for b in bare if b["z_kind"] == "lower limit"]
|
| 5111 |
-
|
|
|
|
|
|
|
| 5112 |
for b in sorted(bare, key=lambda b: -(b["z"] or 0)):
|
| 5113 |
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 "-",
|
| 5114 |
"%.1f" % b["z"] if b["z"] else "-", b["z_kind"]))
|
|
@@ -5118,10 +5198,12 @@ def hostlessnir_main(record=False, arcsec=2.0):
|
|
| 5118 |
"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)",
|
| 5119 |
"the hostless sources of crates_hostless_flat_spectrum: %d" % len(bare), os.path.abspath(__file__), "hostlessnir", len(bare), "sources", dict(arcsec=arcsec),
|
| 5120 |
"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",
|
| 5121 |
-
"%d with a counterpart, redshifts %s; %d covered with none, lower limits %s; %d outside the surveys" % (
|
| 5122 |
-
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)
|
|
|
|
| 5123 |
[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,
|
| 5124 |
-
note="K %s from %s" % ("%.2f" % b["k"] if b["k"] else "-", ", ".join(b["nir"]) or ", ".join(b["covered"]) or "no survey"
|
|
|
|
| 5125 |
print("recorded")
|
| 5126 |
|
| 5127 |
|
|
|
|
| 4652 |
print("recorded")
|
| 4653 |
|
| 4654 |
|
| 4655 |
+
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; the rest in the surveys made after VLASS epoch 1 (RACS-mid, RACS-high, RACS-low3, LoTSS DR2) within 30 arcsec, as a lobe or hotspot of a brighter source that RACS-mid or TGSS catalogue as one source within 90 arcsec, and in the VLASS quick-look images themselves at the CADC, where a source above 10 sigma within 30 arcsec in any epoch is one the component list dropped.
|
| 4656 |
|
| 4657 |
+
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] [--later-arcsec 30] [--lobe-arcsec 90] [--image-sigma 10]"""
|
| 4658 |
+
|
| 4659 |
+
|
| 4660 |
+
def switchoff_vlass_images(ra, dec, radius_arcsec=30.0):
|
| 4661 |
+
"""The brightest pixel within RADIUS_ARCSEC of a position in every VLASS quick-look image the CADC holds of it, in units of the image's noise: [(epoch, sigma, mJy within the radius)]."""
|
| 4662 |
+
import io
|
| 4663 |
+
from astropy.io import fits
|
| 4664 |
+
from astropy.io.votable import parse_single_table
|
| 4665 |
+
from astropy.wcs import WCS
|
| 4666 |
+
base = "https://ws.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/sia/v2query?"
|
| 4667 |
+
out = []
|
| 4668 |
+
t = parse_single_table(io.BytesIO(core.get(base + urllib.parse.urlencode({"POS": "CIRCLE %.5f %.5f 0.01" % (ra, dec), "COLLECTION": "VLASS"}), timeout=120))).to_table()
|
| 4669 |
+
for r in t:
|
| 4670 |
+
try:
|
| 4671 |
+
links = parse_single_table(io.BytesIO(core.get(str(r["access_url"]), timeout=120))).to_table()
|
| 4672 |
+
url = next((str(x["access_url"]) for x in links if str(x["semantics"]) == "#this" and all(k in str(x["access_url"]) for k in ("pbcor", "tt0", "subim"))), None)
|
| 4673 |
+
if not url:
|
| 4674 |
+
continue
|
| 4675 |
+
h = fits.open(io.BytesIO(core.get(url + "?" + urllib.parse.urlencode({"CIRCLE": "%.6f %.6f %.4f" % (ra, dec, 2 * radius_arcsec / 3600)}), timeout=300)))
|
| 4676 |
+
d = np.squeeze(h[0].data).astype(float)
|
| 4677 |
+
w = WCS(h[0].header).celestial
|
| 4678 |
+
pix = abs(h[0].header.get("CDELT1") or h[0].header.get("CD1_1"))
|
| 4679 |
+
beam = 1.1331 * h[0].header["BMAJ"] * h[0].header["BMIN"] / pix ** 2
|
| 4680 |
+
x, y = w.world_to_pixel_values(ra, dec)
|
| 4681 |
+
yy, xx = np.mgrid[:d.shape[0], :d.shape[1]]
|
| 4682 |
+
rr = np.hypot(xx - x, yy - y) * pix * 3600
|
| 4683 |
+
ok = np.isfinite(d)
|
| 4684 |
+
inner, outer = d[(rr <= radius_arcsec) & ok], d[(rr > radius_arcsec) & ok]
|
| 4685 |
+
if not len(inner) or len(outer) < 50:
|
| 4686 |
+
continue
|
| 4687 |
+
noise = 1.4826 * float(np.median(np.abs(outer - np.median(outer))))
|
| 4688 |
+
out.append((str(r["obs_id"]).split(".")[0], float(inner.max() / noise), float(inner.sum() / beam * 1e3)))
|
| 4689 |
+
except Exception:
|
| 4690 |
+
continue
|
| 4691 |
+
return out
|
| 4692 |
|
| 4693 |
|
| 4694 |
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,
|
| 4695 |
+
racs_dec_max=41.0, later_arcsec=30.0, lobe_arcsec=90.0, image_sigma=10.0):
|
| 4696 |
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)
|
| 4697 |
sk = next(k for k in rows[0] if k.replace("_", ".").lower() == "s1.4") if rows else "S1.4"
|
| 4698 |
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]
|
|
|
|
| 4734 |
s["around"] = int(n[0]["n"]) if n else 0
|
| 4735 |
if s["around"] == 0:
|
| 4736 |
s["vet"] = "catalogue-dropped"
|
| 4737 |
+
# the rest in the surveys made after VLASS epoch 1 (RACS-mid of 2020-21, RACS-high, RACS-low3, LoTSS DR2), as a lobe of a brighter source those surveys and TGSS catalogue
|
| 4738 |
+
# as one source within LOBE_ARCSEC (five times the NVSS flux at 1.4 GHz, or twenty-five times at 150 MHz), and in the VLASS images themselves
|
| 4739 |
+
later = (("J/other/PASA/41.3/sourcesm", "RACS-mid"), ("J/other/PASA/42.38/sourcesh", "RACS-high"), ("J/other/PASA/43.89/sources", "RACS-low3"), ("J/A+A/659/A1/catalog", "LoTSS DR2"))
|
| 4740 |
+
rest = [s for s in gone if s["vet"] is None]
|
| 4741 |
+
for cat, label in later:
|
| 4742 |
+
for m in core.xmatch([dict(source_id=s["name"], ra=s["ra"], dec=s["dec"]) for s in rest if s["vet"] is None], cat, later_arcsec):
|
| 4743 |
+
f = num(m.get("Ftot")) or num(m.get("Stotal")) or num(m.get("SpeakTot")) or num(m.get("Fpk"))
|
| 4744 |
+
for s in rest:
|
| 4745 |
+
if s["name"] == m["source_id"] and s["vet"] is None:
|
| 4746 |
+
s["vet"], s["later"] = "catalogue-dropped", "%s %s mJy at %.0f arcsec" % (label, "%.0f" % f if f else "?", float(m["angDist"]))
|
| 4747 |
+
for cat, label, factor in (("J/other/PASA/41.3/sourcesm", "RACS-mid", 5.0), ("J/A+A/598/A78/table3", "TGSS", 25.0)):
|
| 4748 |
+
for m in core.xmatch([dict(source_id=s["name"], ra=s["ra"], dec=s["dec"]) for s in rest if s["vet"] is None], cat, lobe_arcsec):
|
| 4749 |
+
f = num(m.get("Ftot")) or num(m.get("Stotal"))
|
| 4750 |
+
for s in rest:
|
| 4751 |
+
if s["name"] == m["source_id"] and s["vet"] is None and f and f > factor * s["s"] and float(m["angDist"]) > later_arcsec:
|
| 4752 |
+
s["vet"], s["later"] = "radio-hotspot", "%s %.0f mJy at %.0f arcsec" % (label, f, float(m["angDist"]))
|
| 4753 |
+
for s in rest:
|
| 4754 |
+
if s["vet"] is None:
|
| 4755 |
+
seen_img = [x for x in switchoff_vlass_images(s["ra"], s["dec"]) if x[1] > image_sigma]
|
| 4756 |
+
if seen_img:
|
| 4757 |
+
s["vet"], s["later"] = "catalogue-dropped", "VLASS images %s" % ", ".join("%s %.0f sigma, %.0f mJy" % x for x in seen_img)
|
| 4758 |
left = [s for s in gone if s["vet"] is None]
|
| 4759 |
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 "
|
| 4760 |
"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 "
|
|
|
|
| 4763 |
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)))
|
| 4764 |
for s in sorted(gone, key=lambda s: -s["s"]):
|
| 4765 |
if s["vet"] != "natural-type":
|
| 4766 |
+
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" % (
|
| 4767 |
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 "",
|
| 4768 |
+
s["simbad"], "; " + s["later"] if s.get("later") else "", s["vet"] or "unexplained"))
|
| 4769 |
json.dump(dict(n=len(src), compact=len(compact), gone=gone), open(core.results("radio_switchoffs.json"), "w"), indent=1)
|
| 4770 |
if record:
|
| 4771 |
core.record_run(
|
|
|
|
| 4780 |
len(gone), len(compact), sum(s["vet"] == "natural-type" for s in gone), sum(s["vet"] == "bright-neighbour" for s in gone), bright_jy,
|
| 4781 |
sum(s["vet"] == "catalogue-dropped" for s in gone), len(left)),
|
| 4782 |
[dict(target="nvss:%s" % s["name"], stat=s["s"], unit="mJy at 1.4 GHz, absent from VLASS", vet=s["vet"],
|
| 4783 |
+
note="%.0f x %.0f arcsec; b %+.1f; RACS %s mJy; %s components within %g deg%s; SIMBAD %s%s" % (s["maj"], s["min_"] or 0, s["b"], s["racs_mjy"], s["around"], hole_deg,
|
| 4784 |
+
", near " + s["bright"] if s.get("bright") else "", s["simbad"],
|
| 4785 |
+
"; " + s["later"] if s.get("later") else "")) for s in gone])
|
| 4786 |
print("recorded")
|
| 4787 |
|
| 4788 |
|
|
|
|
| 5114 |
print("recorded")
|
| 5115 |
|
| 5116 |
|
| 5117 |
+
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; and the HSC-SSP DR3 g, r and z images through the Legacy Survey viewer, the signal within an arcsecond against the same aperture at 200 random places in the cutout.
|
| 5118 |
|
| 5119 |
+
python -I seti.py radio_sky hostlessnir [record] [--arcsec 2] [--hsc-pix 0.168]"""
|
| 5120 |
|
| 5121 |
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))
|
| 5122 |
|
|
|
|
| 5133 |
return 10 ** (0.5 * (lo + hi))
|
| 5134 |
|
| 5135 |
|
| 5136 |
+
def hostlessnir_main(record=False, arcsec=2.0, hsc_pix=0.168):
|
| 5137 |
bare = [b for b in json.load(open(core.results("crates_hostless.json"))) if b.get("vet") is None]
|
| 5138 |
up = [dict(source_id=k, ra=b["ra"], dec=b["dec"]) for k, b in enumerate(bare)]
|
| 5139 |
for b in bare:
|
|
|
|
| 5162 |
b["k"], b["z"], b["z_kind"] = depth, kz_redshift(depth), "lower limit"
|
| 5163 |
else:
|
| 5164 |
b["k"], b["z"], b["z_kind"] = None, None, "not covered"
|
| 5165 |
+
# HSC-SSP DR3 through the Legacy Survey viewer: the signal within an arcsecond against the same aperture placed at random in the cutout
|
| 5166 |
+
import io
|
| 5167 |
+
from astropy.io import fits
|
| 5168 |
+
rng = np.random.default_rng(5)
|
| 5169 |
+
for b in bare:
|
| 5170 |
+
b["hsc"] = None
|
| 5171 |
+
raw = core.get("https://www.legacysurvey.org/viewer/fits-cutout?" + urllib.parse.urlencode(
|
| 5172 |
+
dict(ra="%.6f" % b["ra"], dec="%.6f" % b["dec"], layer="hsc-dr3", pixscale=hsc_pix, bands="grz", size=101)), timeout=120, soft=True)
|
| 5173 |
+
if not raw:
|
| 5174 |
+
continue
|
| 5175 |
+
cube = np.atleast_3d(fits.open(io.BytesIO(raw))[0].data.astype(float))
|
| 5176 |
+
cube = cube if cube.shape[0] == 3 else np.moveaxis(cube, -1, 0)
|
| 5177 |
+
if not np.any(np.nan_to_num(cube)):
|
| 5178 |
+
continue
|
| 5179 |
+
yy, xx = np.mgrid[:101, :101]
|
| 5180 |
+
snr = []
|
| 5181 |
+
for img in cube:
|
| 5182 |
+
img = np.nan_to_num(img)
|
| 5183 |
+
ap = np.hypot(xx - 50, yy - 50) * hsc_pix <= 1.0
|
| 5184 |
+
rand = [img[np.hypot(xx - x, yy - y) * hsc_pix <= 1.0].sum() for x, y in rng.integers(10, 91, size=(200, 2))]
|
| 5185 |
+
snr.append(round(float((img[ap].sum() - np.median(rand)) / (1.4826 * np.median(np.abs(rand - np.median(rand))))), 1))
|
| 5186 |
+
b["hsc"] = snr
|
| 5187 |
det = [b for b in bare if b["z_kind"] == "estimate"]
|
| 5188 |
lim = [b for b in bare if b["z_kind"] == "lower limit"]
|
| 5189 |
+
hsc = [b for b in bare if b["hsc"] is not None]
|
| 5190 |
+
print("%d hostless sources: %d with a near-infrared counterpart within %g arcsec, %d covered with none, %d outside the surveys; HSC-SSP DR3 covers %d: %s" % (
|
| 5191 |
+
len(bare), len(det), arcsec, len(lim), len(bare) - len(det) - len(lim), len(hsc), "; ".join("%s S/N g r z %s" % (b["name"], b["hsc"]) for b in hsc)))
|
| 5192 |
for b in sorted(bare, key=lambda b: -(b["z"] or 0)):
|
| 5193 |
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 "-",
|
| 5194 |
"%.1f" % b["z"] if b["z"] else "-", b["z_kind"]))
|
|
|
|
| 5198 |
"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)",
|
| 5199 |
"the hostless sources of crates_hostless_flat_spectrum: %d" % len(bare), os.path.abspath(__file__), "hostlessnir", len(bare), "sources", dict(arcsec=arcsec),
|
| 5200 |
"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",
|
| 5201 |
+
"%d with a counterpart, redshifts %s; %d covered with none, lower limits %s; %d outside the surveys; %d in HSC-SSP DR3, %d of them detected at S/N 5 in g, r or z" % (
|
| 5202 |
+
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),
|
| 5203 |
+
len(hsc), sum(max(b["hsc"]) >= 5 for b in hsc)),
|
| 5204 |
[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,
|
| 5205 |
+
note="K %s from %s%s" % ("%.2f" % b["k"] if b["k"] else "-", ", ".join(b["nir"]) or ", ".join(b["covered"]) or "no survey",
|
| 5206 |
+
"; HSC S/N g r z %s" % b["hsc"] if b["hsc"] is not None else "")) for b in bare])
|
| 5207 |
print("recorded")
|
| 5208 |
|
| 5209 |
|
setitools/solar_system.py
CHANGED
|
@@ -1361,7 +1361,9 @@ darkcomet_DOC = r"""One dark-comet candidate: NEOWISE NEATM size and albedo, and
|
|
| 1361 |
python -I seti.py solar_system darkcomet locus DESIG --night YYYY-MM-DD (the positions the other apparitions allow, A2 held at each value)
|
| 1362 |
python -I seti.py solar_system darkcomet forecast DESIG (daily ephemeris of both orbits at the next apparition, and the A2 it would measure)
|
| 1363 |
python -I seti.py solar_system darkcomet census DESIG --night YYYY-MM-DD [--workers 6] (moving sources in the whole CFHT frames, injected
|
| 1364 |
-
copies of the object, and the locus searched; needs the frames in cfht_<night>/full)
|
|
|
|
|
|
|
| 1365 |
|
| 1366 |
darkcomet_ROOT = os.environ.get("DARKCOMET_ROOT", core.data("darkcomet"))
|
| 1367 |
darkcomet_BANDS = {"w1": (3.3526e-6, 309.540), "w2": (4.6028e-6, 171.787)} # isophotal wavelength (m), zero point (Jy)
|
|
@@ -1640,8 +1642,8 @@ def darkcomet_observers(rows, sites, eph):
|
|
| 1640 |
return tdb, out
|
| 1641 |
|
| 1642 |
|
| 1643 |
-
def darkcomet_propagate(eph, t0, state, a2, times, a1=0.0):
|
| 1644 |
-
"""Barycentric positions at TDB JDs from a state at t0 in ASSIST, with transverse a2
|
| 1645 |
import assist
|
| 1646 |
import rebound
|
| 1647 |
out = np.zeros((len(times), 3))
|
|
@@ -1655,7 +1657,7 @@ def darkcomet_propagate(eph, t0, state, a2, times, a1=0.0):
|
|
| 1655 |
sim.t = t0 - eph.jd_ref
|
| 1656 |
sim.dt = -1.0 if times[sel[0]] < t0 else 1.0
|
| 1657 |
ex = assist.Extras(sim, eph)
|
| 1658 |
-
ex.particle_params = np.array([a1, a2,
|
| 1659 |
ex.alpha, ex.nk, ex.nm, ex.nn, ex.r0 = 1.0, 0.0, 2.0, 1.0, 1.0
|
| 1660 |
for i in sel:
|
| 1661 |
sim.integrate(times[i] - eph.jd_ref)
|
|
@@ -1939,6 +1941,198 @@ def darkcomet_refit(desig, ephem_dir=None):
|
|
| 1939 |
return out
|
| 1940 |
|
| 1941 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1942 |
darkcomet_POOL = {}
|
| 1943 |
|
| 1944 |
|
|
@@ -3498,7 +3692,7 @@ def darkcomet_stack(desig, vmax=21.6, half=20):
|
|
| 3498 |
def darkcomet_cli():
|
| 3499 |
p = argparse.ArgumentParser()
|
| 3500 |
p.add_argument("mode", choices=("fetch", "thermal", "refit", "record", "images", "precovery", "robust", "frames", "field", "stack",
|
| 3501 |
-
"blockcov", "locus", "forecast", "census", "variants"))
|
| 3502 |
p.add_argument("desig")
|
| 3503 |
p.add_argument("--ephem", default=None)
|
| 3504 |
p.add_argument("--night", default=None, help="UTC date of the CFHT images to re-measure (precovery, frames, field)")
|
|
@@ -3534,6 +3728,10 @@ def darkcomet_cli():
|
|
| 3534 |
darkcomet_census(a.desig, a.night, a.workers)
|
| 3535 |
elif a.mode == "variants":
|
| 3536 |
darkcomet_thermal_variants(a.desig)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3537 |
else:
|
| 3538 |
darkcomet_record(a.desig)
|
| 3539 |
|
|
@@ -6104,10 +6302,14 @@ def spinsurvey_main(record=False, rho=2000.0, d_min_km=0.3, kpa_min=1.0, km_d=1.
|
|
| 6104 |
print("recorded")
|
| 6105 |
|
| 6106 |
|
| 6107 |
-
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.
|
| 6108 |
|
| 6109 |
python -I seti.py solar_system fireballs [record] [--margin-kms 0] [--mismatch-kms 0.5] [--draws 20000] [--p-bound 0.01]"""
|
| 6110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6111 |
|
| 6112 |
def fireballs_main(record=False, margin_kms=0.0, mismatch_kms=0.5, draws=20000, p_bound=0.01):
|
| 6113 |
from astropy.coordinates import ITRS, GCRS, CartesianRepresentation, CartesianDifferential, EarthLocation, get_body_barycentric_posvel
|
|
@@ -6116,6 +6318,7 @@ def fireballs_main(record=False, margin_kms=0.0, mismatch_kms=0.5, draws=20000,
|
|
| 6116 |
d = json.loads(core.get("https://ssd-api.jpl.nasa.gov/fireball.api?req-loc=true&req-vel=true&vel-comp=true", timeout=120))
|
| 6117 |
f = d["fields"]
|
| 6118 |
out = []
|
|
|
|
| 6119 |
for row in d["data"]:
|
| 6120 |
r = dict(zip(f, row))
|
| 6121 |
if not all(r.get(k) for k in ("vx", "vy", "vz", "lat", "lon", "alt", "vel")):
|
|
@@ -6146,8 +6349,17 @@ def fireballs_main(record=False, margin_kms=0.0, mismatch_kms=0.5, draws=20000,
|
|
| 6146 |
mid = 0.5 * (lo_s + hi_s)
|
| 6147 |
lo_s, hi_s = (mid, hi_s) if helio(mid) < vesc_s else (lo_s, mid)
|
| 6148 |
cut = 1 - lo_s / float(np.linalg.norm(vg)) if vh > vesc_s else 0.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6149 |
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,
|
| 6150 |
-
_u=unit, _s=float(np.linalg.norm(vg)), _ve=vesc_e, _vE=vearth,
|
| 6151 |
lat=lat, lon=lon, alt=float(r["alt"])))
|
| 6152 |
for o in out:
|
| 6153 |
o["consistent"] = abs(o["vel"] - o["vmag"]) <= mismatch_kms
|
|
@@ -6169,7 +6381,7 @@ def fireballs_main(record=False, margin_kms=0.0, mismatch_kms=0.5, draws=20000,
|
|
| 6169 |
vh_d = np.linalg.norm(uu * vinf[:, None] + o["_vE"][None, :], axis=1)
|
| 6170 |
o["p_bound"] = float(np.mean(vh_d < o["v_esc"]))
|
| 6171 |
o["era"] = "from 2018" if late else "before 2018"
|
| 6172 |
-
o["vet"] = "sensor-error" if o["p_bound"] > p_bound else None
|
| 6173 |
for o in out:
|
| 6174 |
for k in ("_u", "_s", "_ve", "_vE"):
|
| 6175 |
o.pop(k, None)
|
|
@@ -6179,8 +6391,9 @@ def fireballs_main(record=False, margin_kms=0.0, mismatch_kms=0.5, draws=20000,
|
|
| 6179 |
"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,
|
| 6180 |
len(hyp) - len(left), len(left)))
|
| 6181 |
for o in sorted(hyp, key=lambda o: -o["excess"]):
|
| 6182 |
-
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" % (
|
| 6183 |
-
o["date"], o["vel"], o["vmag"], o["v_helio"], o["v_esc"], o["excess"], 100 * o["cut"], o["p_bound"], o["era"],
|
|
|
|
| 6184 |
json.dump(out, open(core.results("cneos_fireballs.json"), "w"), indent=1, default=float)
|
| 6185 |
if record:
|
| 6186 |
core.record_run(
|
|
@@ -6190,8 +6403,10 @@ def fireballs_main(record=False, margin_kms=0.0, mismatch_kms=0.5, draws=20000,
|
|
| 6190 |
"a fireball arriving faster than anything bound to the Sun beyond the sensors' errors",
|
| 6191 |
"%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)),
|
| 6192 |
[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"],
|
| 6193 |
-
note="listed %.1f km/s, heliocentric %.1f, bound if the speed is %.1f per cent too high, bound in %.3f of the draws (%s)" % (
|
| 6194 |
-
o["vel"], o["v_helio"], 100 * o["cut"], o["p_bound"], o["era"]
|
|
|
|
|
|
|
| 6195 |
print("recorded")
|
| 6196 |
|
| 6197 |
|
|
|
|
| 1361 |
python -I seti.py solar_system darkcomet locus DESIG --night YYYY-MM-DD (the positions the other apparitions allow, A2 held at each value)
|
| 1362 |
python -I seti.py solar_system darkcomet forecast DESIG (daily ephemeris of both orbits at the next apparition, and the A2 it would measure)
|
| 1363 |
python -I seti.py solar_system darkcomet census DESIG --night YYYY-MM-DD [--workers 6] (moving sources in the whole CFHT frames, injected
|
| 1364 |
+
copies of the object, and the locus searched; needs the frames in cfht_<night>/full)
|
| 1365 |
+
python -I seti.py solar_system darkcomet normal DESIG [--ephem DIR] (gravity, A2, A2 and A3, all three terms, with and without JPL's radar delays)
|
| 1366 |
+
python -I seti.py solar_system darkcomet normal-record DESIG"""
|
| 1367 |
|
| 1368 |
darkcomet_ROOT = os.environ.get("DARKCOMET_ROOT", core.data("darkcomet"))
|
| 1369 |
darkcomet_BANDS = {"w1": (3.3526e-6, 309.540), "w2": (4.6028e-6, 171.787)} # isophotal wavelength (m), zero point (Jy)
|
|
|
|
| 1642 |
return tdb, out
|
| 1643 |
|
| 1644 |
|
| 1645 |
+
def darkcomet_propagate(eph, t0, state, a2, times, a1=0.0, a3=0.0):
|
| 1646 |
+
"""Barycentric positions at TDB JDs from a state at t0 in ASSIST, with transverse a2, radial a1 and normal a3 (au/d^2 at 1 au, r^-2)."""
|
| 1647 |
import assist
|
| 1648 |
import rebound
|
| 1649 |
out = np.zeros((len(times), 3))
|
|
|
|
| 1657 |
sim.t = t0 - eph.jd_ref
|
| 1658 |
sim.dt = -1.0 if times[sel[0]] < t0 else 1.0
|
| 1659 |
ex = assist.Extras(sim, eph)
|
| 1660 |
+
ex.particle_params = np.array([a1, a2, a3])
|
| 1661 |
ex.alpha, ex.nk, ex.nm, ex.nn, ex.r0 = 1.0, 0.0, 2.0, 1.0, 1.0
|
| 1662 |
for i in sel:
|
| 1663 |
sim.integrate(times[i] - eph.jd_ref)
|
|
|
|
| 1941 |
return out
|
| 1942 |
|
| 1943 |
|
| 1944 |
+
# radar stations of the JPL radar astrometry: geodetic longitude, latitude (deg) and height (m)
|
| 1945 |
+
darkcomet_RADAR_SITES = {"-1": (-66.75278, 18.34417, 497.0), "-13": (-116.79445, 35.24773, 1071.0), "-14": (-116.88954, 35.42590, 1002.0)}
|
| 1946 |
+
darkcomet_NG = ("A1", "A2", "A3")
|
| 1947 |
+
darkcomet_NG_SETS = ([], [1], [1, 2], [0, 1, 2])
|
| 1948 |
+
|
| 1949 |
+
|
| 1950 |
+
def darkcomet_radar(desig):
|
| 1951 |
+
"""JPL's centre-of-mass round-trip delays of a body from stations with known coordinates: [(UTC receive time, delay s, sigma s, receiver, transmitter)]."""
|
| 1952 |
+
d = darkcomet_dir(desig)
|
| 1953 |
+
path = os.path.join(d, "radar.json")
|
| 1954 |
+
if not os.path.exists(path):
|
| 1955 |
+
open(path, "wb").write(core.get("https://ssd-api.jpl.nasa.gov/sb_radar.api?" + urllib.parse.urlencode({"des": desig}), timeout=60))
|
| 1956 |
+
js = json.load(open(path))
|
| 1957 |
+
# a body without radar comes back as the JSON text quoted once more
|
| 1958 |
+
js = json.loads(js) if isinstance(js, str) else js
|
| 1959 |
+
rows = [dict(zip(js["fields"], r)) for r in js.get("data", [])]
|
| 1960 |
+
return [(r["epoch"], float(r["value"]) * 1e-6, float(r["sigma"]) * 1e-6, r["rcvr"], r["xmit"]) for r in rows
|
| 1961 |
+
if r["units"] == "us" and r["bp"] == "C" and r["rcvr"] in darkcomet_RADAR_SITES and r["xmit"] in darkcomet_RADAR_SITES]
|
| 1962 |
+
|
| 1963 |
+
|
| 1964 |
+
def darkcomet_delay(eph, t0, q, ng, epoch, rcvr, xmit):
|
| 1965 |
+
"""Computed round-trip delay (s) received at a UTC epoch: light time iterated on each leg, with the Sun's Shapiro delay on both."""
|
| 1966 |
+
import astropy.units as u
|
| 1967 |
+
from astropy.coordinates import EarthLocation
|
| 1968 |
+
from astropy.time import Time
|
| 1969 |
+
c = 2.99792458e8
|
| 1970 |
+
|
| 1971 |
+
def station(code, t):
|
| 1972 |
+
lon, lat, h = darkcomet_RADAR_SITES[code]
|
| 1973 |
+
e = eph.get_particle("earth", t.tdb.jd - eph.jd_ref)
|
| 1974 |
+
g, _ = EarthLocation.from_geodetic(lon * u.deg, lat * u.deg, h * u.m).get_gcrs_posvel(t)
|
| 1975 |
+
return np.array([e.x, e.y, e.z]) + np.array([g.x.to_value(u.m), g.y.to_value(u.m), g.z.to_value(u.m)]) / darkcomet_AU
|
| 1976 |
+
|
| 1977 |
+
def body(tb):
|
| 1978 |
+
return darkcomet_propagate(eph, t0, q, ng[1], np.array([tb]), a1=ng[0], a3=ng[2])[0]
|
| 1979 |
+
|
| 1980 |
+
t_rx = Time(epoch.replace(" ", "T"), scale="utc")
|
| 1981 |
+
r_rx = station(rcvr, t_rx)
|
| 1982 |
+
t_b, down = t_rx.tdb.jd, 0.0
|
| 1983 |
+
for _ in range(4):
|
| 1984 |
+
r_b = body(t_b)
|
| 1985 |
+
down = np.linalg.norm(r_b - r_rx) * darkcomet_AU / c
|
| 1986 |
+
t_b = t_rx.tdb.jd - down / 86400.0
|
| 1987 |
+
up, t_tx = 0.0, t_rx
|
| 1988 |
+
for _ in range(4):
|
| 1989 |
+
r_tx = station(xmit, t_tx)
|
| 1990 |
+
up = np.linalg.norm(r_b - r_tx) * darkcomet_AU / c
|
| 1991 |
+
t_tx = t_rx - (down + up) * u.s
|
| 1992 |
+
s = eph.get_particle("sun", t_b - eph.jd_ref)
|
| 1993 |
+
sun = np.array([s.x, s.y, s.z])
|
| 1994 |
+
|
| 1995 |
+
def shapiro(a, b):
|
| 1996 |
+
ra_, rb_, rho = (np.linalg.norm(a - sun) * darkcomet_AU, np.linalg.norm(b - sun) * darkcomet_AU, np.linalg.norm(a - b) * darkcomet_AU)
|
| 1997 |
+
return 2 * 1.32712440018e20 / c ** 3 * math.log((ra_ + rb_ + rho) / (ra_ + rb_ - rho))
|
| 1998 |
+
return up + down + shapiro(r_tx, r_b) + shapiro(r_b, r_rx)
|
| 1999 |
+
|
| 2000 |
+
|
| 2001 |
+
def darkcomet_ngfit(eph, t0, p0, free, t_emit, obs_pos, ra, dec, sigma, radar=(), iters=12):
|
| 2002 |
+
"""Gauss-Newton on the state and the free terms among A1, A2, A3 (indices into darkcomet_NG), with any radar delays as further residuals."""
|
| 2003 |
+
p = np.array(list(p0[:6]) + [0.0] * len(free), float)
|
| 2004 |
+
h = np.array([1e-9] * 3 + [1e-11] * 3 + [1e-14] * len(free))
|
| 2005 |
+
keep = np.ones(len(ra), bool)
|
| 2006 |
+
|
| 2007 |
+
def terms(q):
|
| 2008 |
+
ng = [0.0, 0.0, 0.0]
|
| 2009 |
+
for k, j in enumerate(free):
|
| 2010 |
+
ng[j] = q[6 + k]
|
| 2011 |
+
return ng
|
| 2012 |
+
|
| 2013 |
+
def resid(q):
|
| 2014 |
+
ng = terms(q)
|
| 2015 |
+
pos = darkcomet_propagate(eph, t0, q[:6], ng[1], t_emit, a1=ng[0], a3=ng[2]) - obs_pos
|
| 2016 |
+
mra, mdec = darkcomet_radec(pos)
|
| 2017 |
+
dra = ((ra - mra + 180.0) % 360.0 - 180.0) * np.cos(np.radians(dec)) * 3600.0
|
| 2018 |
+
out = [dra / sigma, (dec - mdec) * 3600.0 / sigma]
|
| 2019 |
+
out += [np.array([(tau - darkcomet_delay(eph, t0, q[:6], ng, ep, rx, tx)) / sg for ep, tau, sg, rx, tx in radar])]
|
| 2020 |
+
return np.concatenate(out)
|
| 2021 |
+
|
| 2022 |
+
cov = None
|
| 2023 |
+
n = len(ra)
|
| 2024 |
+
for _ in range(iters):
|
| 2025 |
+
r0 = resid(p)
|
| 2026 |
+
J = np.zeros((len(r0), len(p)))
|
| 2027 |
+
for k in range(len(p)):
|
| 2028 |
+
q = p.copy()
|
| 2029 |
+
q[k] += h[k]
|
| 2030 |
+
J[:, k] = (resid(q) - r0) / h[k]
|
| 2031 |
+
kk = np.concatenate([keep, keep, np.ones(len(radar), bool)])
|
| 2032 |
+
A, b = J[kk], r0[kk]
|
| 2033 |
+
s = np.linalg.norm(A, axis=0)
|
| 2034 |
+
cov = np.linalg.inv((A / s).T @ (A / s)) / np.outer(s, s)
|
| 2035 |
+
dp = -cov @ (A.T @ b)
|
| 2036 |
+
p = p + dp
|
| 2037 |
+
r1 = resid(p)
|
| 2038 |
+
new = r1[:n] ** 2 + r1[n:2 * n] ** 2 < darkcomet_CHI2_OUT
|
| 2039 |
+
if np.all(np.abs(dp) < 1e-3 * np.sqrt(np.diag(cov))) and np.array_equal(new, keep):
|
| 2040 |
+
break
|
| 2041 |
+
keep = new
|
| 2042 |
+
r = resid(p)
|
| 2043 |
+
chi = r[:n] ** 2 + r[n:2 * n] ** 2
|
| 2044 |
+
return p, cov, chi, keep, r[2 * n:]
|
| 2045 |
+
|
| 2046 |
+
|
| 2047 |
+
def darkcomet_normal(desig, ephem_dir=None):
|
| 2048 |
+
"""Refits with gravity alone, A2, A2 and A3, and A1, A2 and A3, with and without JPL's radar delays, under site weights and with each night as one position; A3 with each apparition left out."""
|
| 2049 |
+
S = darkcomet_setup(desig, ephem_dir)
|
| 2050 |
+
d, eph, rows, tdb, obs_pos, ra, dec, lab, t0, p0, t_emit, sigma = (S[k] for k in (
|
| 2051 |
+
"d", "eph", "rows", "tdb", "obs_pos", "ra", "dec", "lab", "t0", "p0", "t_emit", "sigma"))
|
| 2052 |
+
radar = darkcomet_radar(desig)
|
| 2053 |
+
out = dict(n_obs=len(rows), radar=[dict(epoch=ep, delay_s=tau, sigma_s=sg, rcvr=rx, xmit=tx) for ep, tau, sg, rx, tx in radar], fits={}, left_out={},
|
| 2054 |
+
apparitions=["%d-%02d" % darkcomet_ym(tdb[lab == k].min()) for k in range(lab.max() + 1)])
|
| 2055 |
+
for scheme in ("none", "night"):
|
| 2056 |
+
sg = sigma * darkcomet_night_factor(rows, scheme)
|
| 2057 |
+
fits = {}
|
| 2058 |
+
for use in ((False, True) if radar else (False,)):
|
| 2059 |
+
for free in darkcomet_NG_SETS:
|
| 2060 |
+
p, cov, chi, keep, rr = darkcomet_ngfit(eph, t0, p0, free, t_emit, obs_pos, ra, dec, sg, radar if use else ())
|
| 2061 |
+
name = "%s|%s|%s" % (scheme, "radar" if use else "optical", " ".join(darkcomet_NG[j] for j in free) or "gravity only")
|
| 2062 |
+
ng = [0.0, 0.0, 0.0]
|
| 2063 |
+
for k, j in enumerate(free):
|
| 2064 |
+
ng[j] = p[6 + k]
|
| 2065 |
+
res = [float((tau - darkcomet_delay(eph, t0, p[:6], ng, ep, rx, tx)) * 1e6) for ep, tau, s_, rx, tx in radar]
|
| 2066 |
+
fits[name] = dict(chi=chi.tolist(), keep=keep.tolist(), npar=6 + len(free), radar_residual_us=res,
|
| 2067 |
+
terms={darkcomet_NG[j]: [float(p[6 + k]), float(math.sqrt(cov[6 + k, 6 + k]))] for k, j in enumerate(free)})
|
| 2068 |
+
# each model judged on the observations every model of this weighting keeps
|
| 2069 |
+
common = np.logical_and.reduce([np.array(f["keep"]) for f in fits.values()])
|
| 2070 |
+
for name, f in fits.items():
|
| 2071 |
+
f["chi2_common"] = float(np.sum(np.array(f["chi"])[common]))
|
| 2072 |
+
f["n_common"] = int(common.sum())
|
| 2073 |
+
f["bic"] = f["chi2_common"] + f["npar"] * math.log(2 * common.sum())
|
| 2074 |
+
f["kept"] = int(np.sum(f.pop("keep")))
|
| 2075 |
+
f.pop("chi")
|
| 2076 |
+
print("%-36s chi2 %7.1f on %d common, kept %d, BIC %7.1f; delay residuals %s us; %s" % (
|
| 2077 |
+
name, f["chi2_common"], f["n_common"], f["kept"], f["bic"], ", ".join("%+.2f" % x for x in f["radar_residual_us"]) or "none",
|
| 2078 |
+
", ".join("%s %+.3e +- %.1e (%.1f sigma)" % (k, v[0], v[1], v[0] / v[1]) for k, v in f["terms"].items())), flush=True)
|
| 2079 |
+
out["fits"].update(fits)
|
| 2080 |
+
for k in range(lab.max() + 1):
|
| 2081 |
+
m = lab != k
|
| 2082 |
+
try:
|
| 2083 |
+
p, cov = darkcomet_ngfit(eph, t0, p0, [1, 2], t_emit[m], obs_pos[m], ra[m], dec[m], sigma[m], radar)[:2]
|
| 2084 |
+
except np.linalg.LinAlgError:
|
| 2085 |
+
# the remaining apparitions do not determine the orbit with both terms
|
| 2086 |
+
print(" without %s (%d obs): A2 and A3 undetermined by the rest" % (out["apparitions"][k], (~m).sum()), flush=True)
|
| 2087 |
+
continue
|
| 2088 |
+
out["left_out"][out["apparitions"][k]] = dict(n=int((~m).sum()), A3=float(p[7]), A3_sigma=float(math.sqrt(cov[7, 7])))
|
| 2089 |
+
x = out["left_out"][out["apparitions"][k]]
|
| 2090 |
+
print(" without %s (%d obs): A3 %+.3e +- %.1e (%.1f sigma)" % (out["apparitions"][k], x["n"], x["A3"], x["A3_sigma"], x["A3"] / x["A3_sigma"]), flush=True)
|
| 2091 |
+
json.dump(out, open(os.path.join(d, "normal.json"), "w"), indent=1)
|
| 2092 |
+
return out
|
| 2093 |
+
|
| 2094 |
+
|
| 2095 |
+
def darkcomet_normal_record(desig):
|
| 2096 |
+
"""Record the normal-term refits: A3 with A2 and with all three terms, radar included, under both weightings, and the BIC margins."""
|
| 2097 |
+
d = darkcomet_dir(desig)
|
| 2098 |
+
nf = json.load(open(os.path.join(d, "normal.json")))
|
| 2099 |
+
f = nf["fits"]
|
| 2100 |
+
src = "radar" if nf["radar"] else "optical"
|
| 2101 |
+
|
| 2102 |
+
def a3(key):
|
| 2103 |
+
t = f[key]["terms"]["A3"]
|
| 2104 |
+
return "%+.2e +- %.1e (%.1f sigma)" % (t[0], t[1], t[0] / t[1])
|
| 2105 |
+
|
| 2106 |
+
def margin(scheme):
|
| 2107 |
+
b = {k.split("|")[2]: v["bic"] for k, v in f.items() if k.startswith("%s|%s|" % (scheme, src))}
|
| 2108 |
+
best_without = min(v for k, v in b.items() if "A3" not in k)
|
| 2109 |
+
return best_without - min(b["A2 A3"], b["A1 A2 A3"])
|
| 2110 |
+
|
| 2111 |
+
loo = nf["left_out"]
|
| 2112 |
+
n3 = min(abs(v["A3"] / v["A3_sigma"]) for v in loo.values())
|
| 2113 |
+
lead = min(("none", "night"), key=lambda s: abs(f["%s|%s|A1 A2 A3" % (s, src)]["terms"]["A3"][0] / f["%s|%s|A1 A2 A3" % (s, src)]["terms"]["A3"][1]))
|
| 2114 |
+
lt = f["%s|%s|A1 A2 A3" % (lead, src)]["terms"]["A3"]
|
| 2115 |
+
run = "darkcomet_normal_" + desig.replace(" ", "_").lower()
|
| 2116 |
+
radar_txt = ("; %d radar delay%s fitted to %s us" % (len(nf["radar"]), "" if len(nf["radar"]) == 1 else "s",
|
| 2117 |
+
", ".join("%+.1f" % x for x in f["none|radar|A1 A2 A3"]["radar_residual_us"]))
|
| 2118 |
+
if nf["radar"] else "")
|
| 2119 |
+
core.record_search(
|
| 2120 |
+
run, "Normal acceleration of a dark comet", archive="MPC observations; JPL SBDB, Horizons and radar astrometry",
|
| 2121 |
+
release="%d observations, %d radar delays" % (nf["n_obs"], len(nf["radar"])),
|
| 2122 |
+
selection=desig, code=os.path.abspath(__file__), entry="darkcomet", n_targets=1, n_unit="asteroids",
|
| 2123 |
+
params=dict(sigma_default=0.5, sigma_site=darkcomet_SIGMA, chi2_out=darkcomet_CHI2_OUT, g_r="r^-2", models=[" ".join(darkcomet_NG[j] for j in s) or "gravity" for s in darkcomet_NG_SETS]),
|
| 2124 |
+
null_summary={k: dict(chi2=v["chi2_common"], n=v["n_common"], bic=v["bic"]) for k, v in f.items()},
|
| 2125 |
+
sensitivity="A3 under site weights and with each night as one position, with and without the radar delays, and with each apparition left out",
|
| 2126 |
+
ledger="Bodies pushed out of their orbital planes",
|
| 2127 |
+
result="A3 with A1 and A2 free %s with site weights and %s with each night as one position; the BIC margin of a normal term is %+.0f and %+.0f, positive favouring it; "
|
| 2128 |
+
"with one apparition left out at a time A3 stays at %.1f sigma or more%s"
|
| 2129 |
+
% (a3("none|%s|A1 A2 A3" % src), a3("night|%s|A1 A2 A3" % src), margin("none"), margin("night"), n3, radar_txt))
|
| 2130 |
+
core.clear_targets(run)
|
| 2131 |
+
core.record_targets(run, [dict(target="mpc:" + desig, stat=lt[0] / lt[1], unit="A3 / sigma with A1 and A2 free, the less significant weighting",
|
| 2132 |
+
vet="dark-comet", note="A3 %+.2e au/d^2; Seligman et al. (2024) dark comet" % lt[0])])
|
| 2133 |
+
print("recorded %s" % run)
|
| 2134 |
+
|
| 2135 |
+
|
| 2136 |
darkcomet_POOL = {}
|
| 2137 |
|
| 2138 |
|
|
|
|
| 3692 |
def darkcomet_cli():
|
| 3693 |
p = argparse.ArgumentParser()
|
| 3694 |
p.add_argument("mode", choices=("fetch", "thermal", "refit", "record", "images", "precovery", "robust", "frames", "field", "stack",
|
| 3695 |
+
"blockcov", "locus", "forecast", "census", "variants", "normal", "normal-record"))
|
| 3696 |
p.add_argument("desig")
|
| 3697 |
p.add_argument("--ephem", default=None)
|
| 3698 |
p.add_argument("--night", default=None, help="UTC date of the CFHT images to re-measure (precovery, frames, field)")
|
|
|
|
| 3728 |
darkcomet_census(a.desig, a.night, a.workers)
|
| 3729 |
elif a.mode == "variants":
|
| 3730 |
darkcomet_thermal_variants(a.desig)
|
| 3731 |
+
elif a.mode == "normal":
|
| 3732 |
+
darkcomet_normal(a.desig, a.ephem)
|
| 3733 |
+
elif a.mode == "normal-record":
|
| 3734 |
+
darkcomet_normal_record(a.desig)
|
| 3735 |
else:
|
| 3736 |
darkcomet_record(a.desig)
|
| 3737 |
|
|
|
|
| 6302 |
print("recorded")
|
| 6303 |
|
| 6304 |
|
| 6305 |
+
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; so is one that an independent published velocity (fireballs_STEREO: two satellites' lightning imagers triangulating the trail) brings below the escape speed.
|
| 6306 |
|
| 6307 |
python -I seti.py solar_system fireballs [record] [--margin-kms 0] [--mismatch-kms 0.5] [--draws 20000] [--p-bound 0.01]"""
|
| 6308 |
|
| 6309 |
+
# independent pre-entry velocities (Earth-fixed km/s) with their speed errors, by CNEOS date: Silber et al. (2026, RNAAS 10, 183) triangulate
|
| 6310 |
+
# 2026-04-01 from GOES-East's Geostationary Lightning Mapper and MTG-I1's Lightning Imager, 83 deg apart, in two models
|
| 6311 |
+
fireballs_STEREO = {"2026-04-01 02:13:14": (((3.5, -28.3, 49.7), 2.0), ((3.5, -27.7, 49.4), 3.0))}
|
| 6312 |
+
|
| 6313 |
|
| 6314 |
def fireballs_main(record=False, margin_kms=0.0, mismatch_kms=0.5, draws=20000, p_bound=0.01):
|
| 6315 |
from astropy.coordinates import ITRS, GCRS, CartesianRepresentation, CartesianDifferential, EarthLocation, get_body_barycentric_posvel
|
|
|
|
| 6318 |
d = json.loads(core.get("https://ssd-api.jpl.nasa.gov/fireball.api?req-loc=true&req-vel=true&vel-comp=true", timeout=120))
|
| 6319 |
f = d["fields"]
|
| 6320 |
out = []
|
| 6321 |
+
rng0 = np.random.default_rng(29)
|
| 6322 |
for row in d["data"]:
|
| 6323 |
r = dict(zip(f, row))
|
| 6324 |
if not all(r.get(k) for k in ("vx", "vy", "vz", "lat", "lon", "alt", "vel")):
|
|
|
|
| 6349 |
mid = 0.5 * (lo_s + hi_s)
|
| 6350 |
lo_s, hi_s = (mid, hi_s) if helio(mid) < vesc_s else (lo_s, mid)
|
| 6351 |
cut = 1 - lo_s / float(np.linalg.norm(vg)) if vh > vesc_s else 0.0
|
| 6352 |
+
# an independent velocity's heliocentric speed and the share of draws within its speed error that stay hyperbolic
|
| 6353 |
+
stereo = []
|
| 6354 |
+
for vs_, sv_ in fireballs_STEREO.get(r["date"], ()):
|
| 6355 |
+
it2 = ITRS(CartesianRepresentation(loc.x, loc.y, loc.z, differentials=CartesianDifferential(*(np.array(vs_) * u.km / u.s))), obstime=t)
|
| 6356 |
+
vg2 = it2.transform_to(GCRS(obstime=t)).velocity.d_xyz.to(u.km / u.s).value
|
| 6357 |
+
u2, s2 = vg2 / np.linalg.norm(vg2), float(np.linalg.norm(vg2))
|
| 6358 |
+
sp2 = s2 + sv_ * rng0.standard_normal(draws)
|
| 6359 |
+
vh2 = np.linalg.norm(u2[None, :] * np.sqrt(np.clip(sp2 ** 2 - vesc_e ** 2, 0, None))[:, None] + vearth[None, :], axis=1)
|
| 6360 |
+
stereo.append((float(np.linalg.norm(u2 * math.sqrt(max(s2 ** 2 - vesc_e ** 2, 0.0)) + vearth)), float(np.mean(vh2 > vesc_s))))
|
| 6361 |
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,
|
| 6362 |
+
_u=unit, _s=float(np.linalg.norm(vg)), _ve=vesc_e, _vE=vearth, stereo=stereo,
|
| 6363 |
lat=lat, lon=lon, alt=float(r["alt"])))
|
| 6364 |
for o in out:
|
| 6365 |
o["consistent"] = abs(o["vel"] - o["vmag"]) <= mismatch_kms
|
|
|
|
| 6381 |
vh_d = np.linalg.norm(uu * vinf[:, None] + o["_vE"][None, :], axis=1)
|
| 6382 |
o["p_bound"] = float(np.mean(vh_d < o["v_esc"]))
|
| 6383 |
o["era"] = "from 2018" if late else "before 2018"
|
| 6384 |
+
o["vet"] = "sensor-error" if o["p_bound"] > p_bound or (o["stereo"] and min(x[0] for x in o["stereo"]) < o["v_esc"]) else None
|
| 6385 |
for o in out:
|
| 6386 |
for k in ("_u", "_s", "_ve", "_vE"):
|
| 6387 |
o.pop(k, None)
|
|
|
|
| 6391 |
"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,
|
| 6392 |
len(hyp) - len(left), len(left)))
|
| 6393 |
for o in sorted(hyp, key=lambda o: -o["excess"]):
|
| 6394 |
+
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)%s; impact energy %s kt, %.1f %.1f; %s" % (
|
| 6395 |
+
o["date"], o["vel"], o["vmag"], o["v_helio"], o["v_esc"], o["excess"], 100 * o["cut"], o["p_bound"], o["era"],
|
| 6396 |
+
"; triangulated %s" % ", ".join("%.1f km/s, hyperbolic in %.2f" % x for x in o["stereo"]) if o["stereo"] else "", o["energy_kt"], o["lat"], o["lon"], o["vet"] or "unexplained"))
|
| 6397 |
json.dump(out, open(core.results("cneos_fireballs.json"), "w"), indent=1, default=float)
|
| 6398 |
if record:
|
| 6399 |
core.record_run(
|
|
|
|
| 6403 |
"a fireball arriving faster than anything bound to the Sun beyond the sensors' errors",
|
| 6404 |
"%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)),
|
| 6405 |
[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"],
|
| 6406 |
+
note="listed %.1f km/s, heliocentric %.1f, bound if the speed is %.1f per cent too high, bound in %.3f of the draws (%s)%s" % (
|
| 6407 |
+
o["vel"], o["v_helio"], 100 * o["cut"], o["p_bound"], o["era"],
|
| 6408 |
+
"; two lightning imagers' triangulated velocity (Silber et al. 2026) gives %s" % " and ".join("%.1f km/s heliocentric, hyperbolic in %.2f of draws" % x for x in o["stereo"])
|
| 6409 |
+
if o["stereo"] else "")) for o in hyp])
|
| 6410 |
print("recorded")
|
| 6411 |
|
| 6412 |
|
setitools/transits.py
CHANGED
|
@@ -5089,7 +5089,96 @@ def daylines_main(record=False, sigma=5.0, frac=0.1, wide_um=0.05, min_bins=5, e
|
|
| 5089 |
print("recorded")
|
| 5090 |
|
| 5091 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5092 |
APPROACHES = {
|
|
|
|
| 5093 |
"daylines": (lambda: core.run_cli(daylines_main), daylines_DOC),
|
| 5094 |
"polar": (lambda: core.run_cli(polar_main), polar_DOC),
|
| 5095 |
"translines": (lambda: core.run_cli(translines_main), translines_DOC),
|
|
|
|
| 5089 |
print("recorded")
|
| 5090 |
|
| 5091 |
|
| 5092 |
+
ttvzip_DOC = r"""Transit-timing residuals that compress: Kepler transit times of Holczer et al. (2016) for every KOI with thirty or more clean times, a line and the two strongest sinusoids removed, the residual divided by its errors, cut into four quantile symbols in transit order and compressed with zlib, against the same symbols shuffled and against first-order autoregressive surrogates at the residual's own lag-one correlation; a sequence below both nulls at the smallest p the draws allow carries structure beyond a line, two periods and red noise, and a published TTV system or an expected count of such sequences explains it.
|
| 5093 |
+
|
| 5094 |
+
python -I seti.py transits ttvzip [record] [--min-n 30] [--draws 300] [--seed 31]"""
|
| 5095 |
+
|
| 5096 |
+
|
| 5097 |
+
def ttvzip_main(record=False, min_n=30, draws=300, seed=31):
|
| 5098 |
+
import zlib
|
| 5099 |
+
from astropy.timeseries import LombScargle
|
| 5100 |
+
|
| 5101 |
+
def fit(A, y, w):
|
| 5102 |
+
p = np.linalg.lstsq(A * np.sqrt(w)[:, None], y * np.sqrt(w), rcond=None)[0]
|
| 5103 |
+
return y - A @ p
|
| 5104 |
+
|
| 5105 |
+
def strip(x, y, w):
|
| 5106 |
+
cols, periods = [np.ones_like(x), x], []
|
| 5107 |
+
r = fit(np.vstack(cols).T, y, w)
|
| 5108 |
+
for _ in range(2):
|
| 5109 |
+
fr, pw = LombScargle(x, r, 1 / np.sqrt(w)).autopower(minimum_frequency=1 / (2 * np.ptp(x) + 1), maximum_frequency=0.5, samples_per_peak=5)
|
| 5110 |
+
f = float(fr[int(np.argmax(pw))])
|
| 5111 |
+
periods.append(1 / f)
|
| 5112 |
+
cols += [np.sin(2 * np.pi * f * x), np.cos(2 * np.pi * f * x)]
|
| 5113 |
+
r = fit(np.vstack(cols).T, y, w)
|
| 5114 |
+
return r, periods
|
| 5115 |
+
|
| 5116 |
+
def code(z):
|
| 5117 |
+
q = np.quantile(z, [0.25, 0.5, 0.75])
|
| 5118 |
+
return len(zlib.compress(bytes(np.searchsorted(q, z).astype(np.uint8) + 65), 9))
|
| 5119 |
+
|
| 5120 |
+
cats = core.vizier("J/ApJS/225/9")
|
| 5121 |
+
t2 = {str(r["KOI"]): r for r in cats[0]}
|
| 5122 |
+
by = {}
|
| 5123 |
+
for r in cats[1]:
|
| 5124 |
+
if any(str(r[c]).strip() not in ("", "--", "0", "None", "nan") for c in ("f_O-C", "Out", "Over")):
|
| 5125 |
+
continue
|
| 5126 |
+
oc, e = num(r["O-C"]), num(r["e_O-C"])
|
| 5127 |
+
if oc is not None and e and np.isfinite(oc) and np.isfinite(e) and e > 0:
|
| 5128 |
+
by.setdefault(str(r["KOI"]), []).append((int(r["N"]), oc, e))
|
| 5129 |
+
rng = np.random.default_rng(seed)
|
| 5130 |
+
res = []
|
| 5131 |
+
for koi, rows in by.items():
|
| 5132 |
+
if len(rows) < min_n:
|
| 5133 |
+
continue
|
| 5134 |
+
a = np.array(sorted(rows))
|
| 5135 |
+
r, periods = strip(a[:, 0], a[:, 1], 1 / a[:, 2] ** 2)
|
| 5136 |
+
z = r / a[:, 2]
|
| 5137 |
+
obs = code(z)
|
| 5138 |
+
sh = np.array([code(rng.permutation(z)) for _ in range(draws)])
|
| 5139 |
+
rho = min(max(float(np.corrcoef(z[:-1], z[1:])[0, 1]), 0.0), 0.95)
|
| 5140 |
+
ar = []
|
| 5141 |
+
for _ in range(draws):
|
| 5142 |
+
u = np.empty(len(z))
|
| 5143 |
+
u[0] = rng.normal()
|
| 5144 |
+
for i in range(1, len(z)):
|
| 5145 |
+
u[i] = rho * u[i - 1] + rng.normal() * math.sqrt(1 - rho ** 2)
|
| 5146 |
+
ar.append(code(u))
|
| 5147 |
+
res.append(dict(koi=koi, kic=str(t2[koi]["KIC"]) if koi in t2 else "", n=len(z), obs=obs, sh=float(sh.mean()), rho=rho, periods=periods,
|
| 5148 |
+
p_sh=float((1 + np.sum(sh <= obs)) / (draws + 1)), p_ar=float((1 + np.sum(np.array(ar) <= obs)) / (draws + 1)),
|
| 5149 |
+
chi2=float(np.sum(z ** 2) / max(len(z) - 6, 1))))
|
| 5150 |
+
floor = 1 / (draws + 1)
|
| 5151 |
+
both = [r for r in res if r["p_sh"] <= floor and r["p_ar"] <= floor]
|
| 5152 |
+
expected = len(res) * floor ** 2
|
| 5153 |
+
# residual structure a published TTV system explains: reduced chi2 well above one after the two sinusoids
|
| 5154 |
+
for r in res:
|
| 5155 |
+
r["vet"] = "timing-variation" if r in both and r["chi2"] > 3.0 else None
|
| 5156 |
+
rest = [r for r in both if r["vet"] is None]
|
| 5157 |
+
# the rest are the chance count when the Poisson tail at the expected number is not small
|
| 5158 |
+
p_rest = 1.0 - sum(math.exp(-expected) * expected ** i / math.factorial(i) for i in range(len(rest)))
|
| 5159 |
+
for r in rest:
|
| 5160 |
+
r["vet"] = "chance-rate" if p_rest > 0.01 else None
|
| 5161 |
+
frac = float(np.mean([r["p_sh"] < 0.01 for r in res])) if res else 0.0
|
| 5162 |
+
print("%d KOIs with %d or more clean transit times; below p %.4f on both nulls: %d (about %.2f by chance); p_sh below 0.01 in %.3f of them" % (
|
| 5163 |
+
len(res), min_n, floor, len(both), expected, frac))
|
| 5164 |
+
for r in both:
|
| 5165 |
+
print(" KOI %s (KIC %s) n %d: %d bytes against %.1f shuffled, lag-1 %.2f, periods %.1f and %.1f transits removed, reduced chi2 %.2f; %s" % (
|
| 5166 |
+
r["koi"], r["kic"], r["n"], r["obs"], r["sh"], r["rho"], r["periods"][0], r["periods"][1], r["chi2"], r["vet"] or "unexplained"))
|
| 5167 |
+
if record:
|
| 5168 |
+
core.record_run(
|
| 5169 |
+
"kepler_ttv_compressibility", "Transit-timing residuals that compress", "Holczer et al. (2016) Kepler transit times (VizieR J/ApJS/225/9)",
|
| 5170 |
+
"%d KOIs with %d or more clean transit times" % (len(res), min_n), os.path.abspath(__file__), "ttvzip", len(res), "KOIs",
|
| 5171 |
+
dict(min_n=min_n, draws=draws, seed=seed), dict(below_both=len(both), expected=expected, frac_p_sh_001=frac),
|
| 5172 |
+
"zlib length of four quantile symbols below every shuffle and every AR(1) surrogate (p %.4f)" % floor,
|
| 5173 |
+
"%d below both nulls at p %.4f against %.2f by chance; %.1f%% below 0.01 against shuffles alone; %d unexplained" % (
|
| 5174 |
+
len(both), floor, expected, 100 * frac, sum(r["vet"] is None for r in both)),
|
| 5175 |
+
[dict(target="koi:%s" % r["koi"], stat=r["obs"], p=max(r["p_sh"], r["p_ar"]), unit="zlib bytes of the quantile symbols", vet=r["vet"],
|
| 5176 |
+
note="KIC %s; %d times; %.1f shuffled; lag-1 %.2f; reduced chi2 %.2f" % (r["kic"], r["n"], r["sh"], r["rho"], r["chi2"])) for r in both])
|
| 5177 |
+
print("recorded")
|
| 5178 |
+
|
| 5179 |
+
|
| 5180 |
APPROACHES = {
|
| 5181 |
+
"ttvzip": (lambda: core.run_cli(ttvzip_main), ttvzip_DOC),
|
| 5182 |
"daylines": (lambda: core.run_cli(daylines_main), daylines_DOC),
|
| 5183 |
"polar": (lambda: core.run_cli(polar_main), polar_DOC),
|
| 5184 |
"translines": (lambda: core.run_cli(translines_main), translines_DOC),
|