Skip to content

v0.1.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 13 Oct 02:23
· 77 commits to main since this release

Unzip the archive for your computer and run COSMIC2-Explorer from the COSMIC2-Explorer folder (see Install). Your data, downloads and settings are kept in a separate folder; an installed copy updates itself once a week (Settings > Updates).

Changes since v0.0.1

  • First start opens Explore with the examples and says the next three steps
  • Prepare 0.1.0 as a public pre-release: CITATION.cff, issue forms, Feedback link, README note, changelog heading
  • Changelog: time of the index re-read after an update
  • Help: how many days the mission comparison needs, from a full day of COSMIC-2 and PAZ
  • Refractivity-gradient diagnostics in N-units/km, not N/km
  • Gravity-wave map settings explained in plain words
  • Per-profile diagnostics computed once per file and shared by the map, tropopause table and scatter
  • README quick start points to the tooltips and the word list in Help
  • Averages, sections and maps say when they pool COSMIC-2 with PAZ or KOMPSAT-5
  • Help: limb sounding in plain words; a rising signal crosses ever higher layers
  • Help: how to read it, and Galileo among the tracked signals
  • Summary takes the cache total from the index instead of walking the folder on every refresh
  • Cache size from directory listings; performance checked on a month of data
  • Profile plots name the products a mixed selection left out, and why
  • Diagnostic map follows the searched product; sampling caption explains penetration only for neutral products
  • Radiosonde CSV height column says geopotential height
  • Glossary tooltips on the Statistics card headings; terms for sections, zonal means, weather models, three-cornered hat and ducts
  • Changelog wording
  • Plot hover values in significant digits so small quantities do not read as zero
  • Messages say files, not granules; Get data names the example day
  • First start says the examples are shown only when they loaded; otherwise the usual empty-data note
  • IVM day drawn as points coloured by latitude; profile hover uses the vertical axis's unit
  • Plain-language glossary: tooltips on headings and product codes, and a list in Help
  • Diagnostic map leaves out profiles CDAAC flagged bad, like the other cards
  • Error-message test uses the test server, not TestClient
  • Errors explained: unexpected failures name the error and the log file, rejected values name the field
  • README: plain-language introduction and a three-step quick start
  • First start shows the bundled example day; plain-language opening in the guide
  • podTc2 and scn1c2 indexed with satellite, transmitter and position; leoOrb said to be an orbit file the app does not read
  • Profiles tab draws an IVM day against time along the orbit, local time or latitude
  • IVM unit strings: GPS-time seconds and squared densities read plainly
  • echPrf bending angle described as simulated from ECMWF, not ionosphere-corrected
  • Profile CSV gives scnLv2 time units once, not one per file
  • File unit strings N, N-unit, unitless and N/cc read unambiguously in titles and headers
  • Profile overlays of several products name each product's quantity in the axis title
  • Gravity-wave help: wetPf2 follows its ECMWF first guess above about 30 km; use atmPrf
  • Scatter says how many occultations it draws twice as atmPrf and wetPf2
  • Average groups in a fixed order so colours do not swap between runs
  • Changelog: product-aware titles and the radiosonde selection option
  • Single-product averages, sections and profile plots title the field as that product holds it
  • Averages and sections split by the same quantity_label as the exports
  • Exports name dry-derived and model fields per product through one quantity_label rule
  • Radiosonde card: the selection option says it uses the chosen product
  • Averages keep atmPrf's dry-derived fields apart from wetPf2's
  • One once_per_occultation rule for the tropopause table and the diagnostic map
  • Tests: remove unused imports and a variable
  • Diagnostic map counts each occultation once when both its atmPrf and wetPf2 are selected
  • Radiosonde comparison uses one product: dry atmPrf and wetPf2 temperatures are never pooled
  • Tropopause table counts each occultation once when both its atmPrf and wetPf2 are selected
  • Remove unused imports
  • One column_stats helper instead of four copies; unused imports removed
  • Remove unused selectionRequest from the frontend
  • Remove unused Granule.to_columns, Granule.series and DownloadManager.active_count
  • One local-solar-time helper instead of two
  • ap_pot method text states only what the file says
  • IVM ap_pot labelled as the aperture-plane potential, as its file names it
  • Metadata CSV writes list values as semicolon-separated numbers
  • Radiosonde station filter uses the same New Year window
  • Radiosonde comparison reads the next or previous year's sondes when the time window crosses New Year
  • netCDF export height coordinate says positive up, as CF requires
  • ivmL2m described as it is: its drift fields are empty in every file checked
  • Write the netCDF-3 magic bytes as escapes
  • A cut-off netCDF file is refused instead of read as zeros through netCDF4
  • Exports started in the same second no longer overwrite each other
  • Remove the unused ZIP bundle export
  • ionPrf hscale kept as CDAAC defines it, the scale height at orbit altitude (icalib = 0 only)
  • Averages and sections keep observations apart from ECMWF and NCEP profiles of the same name
  • scnLv2 fallback local time computed; CDAAC's lct attributes are not local solar time
  • KOMPSAT-5 direction checked on occultation geometry: it records rising occultations too, and irs labels them right
  • Profile outlier filters test each level against its neighbours, not the whole profile
  • IVM drift texts follow the files' sign conventions (iv_mer is +up, not north-south); Azim is the occultation-plane azimuth
  • Imp_height_corr described as the oblateness correction it is, not a corrected height
  • Regridded CSV names atmPrf Temp as the dry temperature, per product
  • atmPrf and ionPrf local times computed from UTC; CDAAC's are cut to the minute or in GPS time
  • Guide and README: 12 bundled granules of 7 products; help lists every log-interpolated field
  • Rapid stream text: scnLv2 and ivmL2m are there, ionPrf is in provisional
  • postProc described as it is on CDAAC: IVM files of 2019-2022 and podTc2 of 2020, no profiles
  • Bending angle interpolated in log space; three unused functions removed
  • Bean and Dutton cited as the 1966 NBS Monograph 92 their DOI resolves to
  • IVM ion densities of zero or below are missing (the TEC rescaling drives low densities negative)
  • irs = 1 is a setting occultation, as CDAAC's format and same-occultation ionPrf show; no PAZ exception needed
  • Times are UTC: CDAAC's date attributes are GPS time, 18 s ahead
  • ionPrf TEC integrated from 80 km like CDAAC's tec0; below it the profile is inversion residue
  • foF2 from the exact plasma-frequency coefficient (8.98e-3 was 0.015 % high)
  • An index from an older version is re-read once at start-up, imported files included
  • ionPrf with an E-region archive peak is placed at its F2 peak, up to 1600 km away
  • Profile CSV header lists the units of every column; C and mb read as °C and hPa
  • README: refractivity and bending angle are interpolated in log space; setting or rising and PAZ; archive-link test
  • Profile CSV of mixed products keeps each value under its own column
  • CDAAC archive links open the level folders that exist, not per-product folders (404)
  • Bending-angle texts name the Galileo and GLONASS frequencies, not only GPS L1/L2
  • atmPrf geoid undulation shown in metres (the file gives it in km)
  • Dash check skips the local graphify-out folder
  • Setting or rising read correctly: ionPrf's setting flag is 1 for setting, PAZ records setting occultations only
  • Get data fetches a range of days, one download per day
  • Scintillation diagnostics show the tangent height of the S4 peak and where the file is placed
  • README: where scintillation files are placed, that they are triggered, and the new checks
  • Scintillation files name their satellite C2E1-C2E6 like every other product
  • Numbers with a power of ten use a superscript exponent instead of a caret
  • Radiosonde comparison reports stations left out by its limit, and the limit can be raised
  • S4 texts match the files: 10 s sliding windows, triggered files, one set of class thresholds
  • Radiosonde comparison also compares boundary-layer tops of atmPrf and sonde
  • Boundary-layer top: steepest fall of refractivity with published acceptance tests, from atmPrf, checked against radiosondes
  • Diagnostic map shows the poles when PAZ or KOMPSAT-5 profiles are there
  • Place scintillation files at the tangent point of the S4 maximum, not at the satellite
  • Ducting texts say a retrieved RO profile cannot show a duct; docs describe the ducting views
  • RO minus ECMWF refractivity with and without an ECMWF duct, and around the duct
  • One-folder build on Windows and Linux, so a killed app leaves nothing in TEMP
  • Tutorial, README and catalog describe the comparison cards as they now work
  • Help: tropopause by latitude, weather models and other missions
  • Weather-model caption: wetPf2's 1D-Var first guess is the same ECMWF profile it is compared with
  • Model comparison and tropopause captions say when the selection mixes missions
  • Explore satellite filter can choose COSMIC-2 as a whole when another mission is on disk
  • Mission caption: COSMIC-2 minus PAZ temperature on 14 days of 2026, small real difference at 28-30 km
  • Mission plot: pair spread hidden until its legend entry is clicked, so the means are readable
  • Mission pairs also shown corrected with ECMWF's difference between the two occultations (Gilpin et al. 2018)
  • COSMIC-2 vs PAZ/KOMPSAT-5 through ECMWF over the latitudes both missions cover
  • Changelog: drop an entry for a change not yet committed (picked up by 940f380)
  • Tropopause table fits 1024 px; CDAAC columns only when the selection has atmPrf
  • Table number columns keep their trailing zeros (tropopause table showed 11.7 for 11.70)
  • Compare COSMIC-2 with PAZ and KOMPSAT-5: collocated pairs and the double difference through ECMWF
  • After an update that skipped releases, the panel says how many and links the full comparison
  • Release workflow keeps only the two newest releases after publishing, and all tags
  • Test that the update installs the newest release even when the installed one is no longer listed
  • Download PAZ and KOMPSAT-5 profiles through mission streams, kept apart from COSMIC-2
  • Tropopause and cold point by latitude band with 95% intervals, beside CDAAC's own values
  • Bending angle against ECMWF by impact height, with the impact-height placement of the model values verified
  • Compare radio occultation with the ECMWF and NCEP profiles of the same occultations; refractivity errors by the three-cornered hat
  • Refractivity is interpolated in log space, like pressure and density
  • Read, download and plot the ECMWF and NCEP model profiles CDAAC colocates with each occultation
  • Dropdown labels fit their controls column; the zonal-mean interval has a visible legend marker
  • Analysis worker processes exit when the app is killed, so they cannot block an update
  • Optional robust outlier screen for Compare averages, their figure and latitude-height sections
  • Compare each atmPrf with the wetPf2 retrieved from it: refractivity, dry retrieval and moisture effect by height
  • Latitude-height sections show the standard error, zonal means their 95% confidence interval
  • Tutorial Guide no longer scrolls sideways: grid columns may shrink below a long citation block
  • Statistics table says why wetPf2 has no penetration depth above the ground
  • Header wraps instead of making the app scroll sideways below about 1460 px
  • Compare averages carry the standard error and 95% confidence interval of the mean
  • Loading the bundled examples refreshes the Explore product and date filters
  • Links use the theme colours, readable on the dark theme
  • After an update the settings panel lists options the new version dropped, and closing it leaves settings.json untouched
  • Automatic update starts the new build as an independent program, so it reopens after the swap
  • Compare tab says why an ivmL2m selection has no average over height
  • Settings keep their stored values across versions; after an update a panel shows what is new and which settings changed
  • Weekly automatic update from the GitHub releases, with Check now and a setting to turn it off
  • Release archives hold one install folder and are stamped with their tag, one per platform
  • Tutorial: describe the Statistics tab
  • Browser test of every tab and main action
  • Compare and Export follow the searched product
  • Explore map: remove the old selection handler before adding a new one
  • Validate profiles against NOAA IGRA v2 radiosondes
  • Maps and zonal means of per-profile diagnostics, gravity-wave energy by layer and filter
  • Gravity-wave energy: high-pass background option, checked against a known wave
  • Help: repair the section-departure formula
  • Latitude-height sections of any quantity, with departure from the mean
  • Statistics tab: sampling, quality flags and penetration depth
  • README: remove the planetary-profile claim and match features to the app
  • Help, About, tutorial and data policy: describe what the app actually does
  • Correct references and DOIs; data terms without a public-domain claim
  • Start the CPU worker pool in the background at launch
  • Scatter plots: diagnostic labels with units on axes and colour bar
  • Number formatter keeps integer zeros with 0 decimals
  • Export tab: Write file no longer stops on an undefined variable
  • Exported figures: product-aware axis titles
  • Plot titles: name atmPrf Temp as dry temperature
  • Profiles tab: pick a quantity and height the selected product can draw
  • Rebuild index: keep the archive day of each granule's cache folder
  • Explore: default date range includes observations from just before the archive day
  • Composite figure export: use the Compare tab's quantity, height and grid
  • Compare tab: choose the height coordinate; scintillation composites against tangent height
  • API: convert float arrays to JSON in one pass
  • Profiles tab: draw large selections on the CPU workers
  • Composites and profile plots: derive fields only when the quantity needs them
  • CSV exports: readable software licence line in the header
  • Coverage summary: bin in SQL without the optional FLOOR function
  • Profiles: diagnostics panel follows the selection when nothing can be drawn
  • Profiles: say when an ionPrf profile has no F2 peak
  • Tropopause: skip the moist-layer artefact in atmPrf dry temperature
  • Ionosphere: TEC counts negative densities as zero; tec0/tec1 labelled as CDAAC defines them
  • Downloads: spread sampling keeps every whole-day ivmL2m file
  • Downloads: the concurrent-downloads setting applies without a restart
  • README and CHANGELOG: document this round of fixes, CPU workers, science notes
  • Pipeline provenance takes the software version from the package
  • Pipeline: do not record a Savitzky-Golay step that was not applied
  • Index longitudes in [-180, 180)
  • Composites: a one-profile group has undefined spread, not zero
  • netCDF export: record each profile's product and what Temp/Pres mean in it
  • atmPrf Temp/Pres are dry quantities: label them so, never average with wetPf2
  • Figures: keep a linear axis when the log switch meets non-positive data
  • Settings drawer: Save works again
  • Profiles tab: fix crash at the end of the diagnostics panel
  • Profile figure export: draw every level, not the display subsample
  • Figures: keep captions, embed TrueType fonts, and isolate concurrent exports
  • netCDF export: write UDUNITS unit strings
  • Settings: 'require good QC', temperature units and export grid now take effect
  • Exported figures follow the Plot Theme setting
  • Profile error bars: measure scatter about the running mean, not the gradient
  • Run per-granule work on a user-set number of worker processes
  • Composites: grouping by date works
  • Settings: the default stream choice is now saved
  • Index: refresh quality code and identifiers when a granule is re-indexed
  • Downloads: index granules received before a cancel or network failure
  • Day manifest: list collections and fetch file sizes concurrently
  • Archive listing: re-check missing directories after 5 minutes
  • API: validate grid, DPI and settings values; panels figure without a position
  • API: restrict CORS to loopback origins
  • Tests: stop the API server and delete the throwaway data folder at the end
  • Export provenance: say that plot processing was not applied to the data
  • Exports: write numbers at full precision
  • Analysis: fix TEC, E-layer, IWV, density, tropopause and interpolation details
  • Readers: honour declared fill values, faster netCDF-3 reads, correct local times
  • Link to the Releases page (0.x builds are pre-releases, not shown as latest)

All changes, grouped by topic: CHANGELOG.md.