Repository navigation
v0.1.0
Pre-release
Pre-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.