Skip to main content

bsod2

BSoD2 (BalloonScope on Deck 2) is a command line interface and Python package for reading, processing, and plotting radiosonde data.

emagram RH 2D trajectory
RH 3D trajectory

Table of Contents

Installation

This package can be installed from PyPI.

pip install bsod2

Usage

The only functionality provided by this package is the bsod2.Sondeset class, which retrieves radiosonde data ,performs quality control and plot a emagram.
A simple usage guide in Japanese is available on Qiita: (bsod2 ラジオゾンデ観測データ品質管理ツール).

Command Line Interface

bsod2 commannd performs on quality control.

$ bsod2 ./sample/Seisuimaru2407/raw_data ./output
 25%|███████              2/8 [00:01<00:03,  1.78it/s]

The first positional argument specifies the path to the input data file or directory.
The second one specifies the path to the output directory.
For more information, run: bsod2 --help

Python module

Basic Sondeset construction and methods

Initialize the class with the file path to the raw data.

from pathlib import Path
from bsod2 import Sondeset

ss = Sondeset(Path("Seisuimaru2407/raw_data/F2024061806S1101771.CSV"))
print(ss)
>>> N=1, sonde_no=["1101771"]

If a directory path is given, all sonde data files (F*S*.CSV) in that directory are loaded.

ss = Sondeset(Path("Seisuimaru2407/raw_data"))
print(ss)
>>> N=8, sonde_no=["1101771", "1101323", "1101386", "1101322", "1101327", "1101772", "1101388", "1101326"]

Individual data items can be accessed by indexing.

print(ss[0])
>>> Sonde(sonde_no=1101771, launch_time=2024-06-18 06:01:42, product_name=iMS-100 , num_records=4174)

Accessors for individual data items

The following accessors can be used to access individual data items.
Most accessors return values with metpy.units.units attached.

Accessor units Description Example
df None quality-controlled pandas.DataFrame ss[0].df
time None Time ss[0].time
lat units("deg") Latitude ss[0].lat
lon units("deg") Longitude ss[0].lon
x units("m") X-displacement from the launch point ss[0].x
y units("m") Y-displacement from the launch point ss[0].y
z units("m") Altitude ss[0].z
p units("hPa") Pressure ss[0].p
t units("degC") Temperature ss[0].tss
rh units("percents") Relative humidity ss[0].rh
td units("degC") dewpoint ss[0].td
wd units("deg") Wind direction ss[0].wd
ws units("m/s") Wind speed ss[0].ws
u units("m/s") U-component wind ss[0].u
v units("m/s") V-component wind ss[0].v

Get Number of profiles

len function can be used to get number of profiles contained in Sondeset.

len(ss)
>>> 8

Save as CSV

Save the quality-controlled DataFrame as a CSV file to the specified file path using the save_df method.

ss[0].save_df(Path("output.csv"))

Altitude or pressure interpolation

Interpolate linearly onto an evenly spaced grid in pressure("p") or altitude("z") using the interp argument.

ss = Sondeset(DIR_PATH,interp="p")

By default, the interpolated pressure axis ranges from 50 to 1,100 hPa at 1 hPa intervals, or the height axis ranges from 0 m to 20,000 m at 10 m intervals.
Values outside the original data range are filled with NaN. The range and resolution of the interpolation axes can be specified using the following arguments.

Argument Description Default
interp Name of the interpolation axis. If None, interpolation is not performed. None
interp_pmin Minimum value of the interpolated pressure axis (hPa) 50
interp_pmax Maximum value of the interpolated pressure axis (hPa) 1100
interp_dp Step size of the interpolated pressure axis (hPa) 1
interp_zmin Minimum value of the interpolated height axis (m) 0
interp_zmax Maximum value of the interpolated height axis (m) 20000
interp_dz Step size of the interpolated height axis (m) 10

Interpolated and combined xarray.Dataset

Sondeset.ds provides access to an xarray.Dataset containing interpolated and combined radiosonde data.

ss = Sondeset(Path("Seisuimaru2407/raw_data", interp="z"))
print(ss.ds)
>>> 
xarray.Dataset> Size: 785kB
Dimensions:      (n: 8, z: 2001)
Coordinates:
  * n            (n) <U7 224B '1101771' '1101323' ... '1101388' '1101326'
  * z            (z) float64 16kB 0.0 10.0 20.0 ... 1.998e+04 1.999e+04 2e+04
Data variables:
    p            (n, z) float64 128kB nan 1.007e+03 1.005e+03 ... nan nan nan
    tmp          (n, z) float64 128kB nan 18.76 18.93 19.0 ... nan nan nan nan
    wd           (n, z) float64 128kB nan 270.4 252.9 250.7 ... nan nan nan nan
    ws           (n, z) float64 128kB nan 2.426 2.09 2.16 ... nan nan nan nan
    rh           (n, z) float64 128kB nan 89.21 89.78 90.21 ... nan nan nan nan
    launch_time  (n) datetime64[us] 64B 2024-06-18T06:01:42 ... 2024-06-18T14...
    time         (n, z) datetime64[ns] 128kB 2024-06-18T06:01:42 ... 2024-06-...

plot emagram

plot_emagram is a method for plotting a temperature emagram.

ss[0].plot_emagram(save_dir=Path("./"))

Sample data and scripts

Sample data was observed in Seisui-maru 2407 cruise (2024年度 三重大学 陸海空・環境科学実習).

See sample/sample.md for sample scripts.

License

This project is distributed under the terms of the GNU General Public License, Version 3 (GPLv3).
See the LICENSE file for details.

Metadata

Release files for bsod2 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bsod2 1.0.0
File Size Uploaded Provenance
bsod2-1.0.0.tar.gz 26.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for bsod2 1.0.0
File Interpreter ABI Platform
bsod2-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 51.5 kB

Release files / bsod2-1.0.0.tar.gz

Download URL bsod2-1.0.0.tar.gz
Size 26.4 kB
Tags Source
SHA-256 checksum
How to use checksums
b0d4202bbcf804b9b26c148b44f68fde821dd47af7d8855f630fe2979d01bd8c
BLAKE2b-256 checksum
How to use checksums
cdba4b7748d452fdcffa34ffe9af961cc504c154d262fcb310f70e02ebac2cb1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 3, 2026.

Transparency log

Release files / bsod2-1.0.0-py3-none-any.whl

Download URL bsod2-1.0.0-py3-none-any.whl
Size 25.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
89336752e5d60513cbd7a1284195580d4437807b49941ad63c676c8d04bf7713
BLAKE2b-256 checksum
How to use checksums
acc0fabd05dd764d80a9558f42d68f03b69ac9cd0092a92652cd8ff36ce29807
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 3, 2026.

Transparency log

Security for bsod2 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for bsod2-1.0.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 3, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page