Saltar al contenido principal

Archivos de ejemplo

Archivos de ejemplo OSF​

El directorio examples/ del repositorio contiene dos tipos de archivos con los que se puede aprender el formato y comprobar un lector paso a paso: archivos de referencia generados (sintéticos, una característica por archivo) y muestras de campo (grabaciones reales de equipos de medición de optiMEAS).

Archivos de referencia generados​

Los archivos de examples/generated/ los genera la implementación de referencia en Delphi (reproducibles de forma no interactiva con OSFGeneratorCLI). Cada archivo se centra en una característica y existe tanto en la variante OSF4 (cabecera XML) como en la variante OSF5 (cabecera JSON):

Archivo (OSF4 / OSF5)Muestra
osf4_equidistant.osf / osf5_equidistant.osfCanal equidistante (frecuencia de muestreo fija)
osf4_scalar_numeric.osf / osf5_scalar_numeric.osfCanales escalares de coma flotante con marca de tiempo
osf4_scalar_int64.osf / osf5_scalar_int64.osfCanal de entero de 64 bits con signo
osf4_scalar_unsigned.osf / osf5_scalar_unsigned.osfCanales de enteros sin signo
osf4_gpslocation.osf / osf5_gpslocation.osfCanal de posición GPS
osf4_timestamped_string.osf / osf5_timestamped_string.osfDatos útiles string con marca de tiempo
osf4_timestamped_binary.osf / osf5_timestamped_binary.osfBlobs binary con marca de tiempo
osf4_mixed.osf / osf5_mixed.osfVarios tipos de canal en un solo archivo
— / osf5_mixed_extended.osfArchivo OSF5 mixto ampliado

En total 17 archivos (8 OSF4 + 9 OSF5). Un lector correcto debe procesarlos todos sin errores. Estos archivos son los casos de prueba de lectura válidos para todos los lenguajes; el emparejamiento OSF4/OSF5 comprueba además las reglas deterministas según la versión, por ejemplo la terminación en nulo de los datos útiles string/binary (OSF4 con 0x00 final, OSF5 sin él).

Muestras de campo — grabaciones reales​

Datos reales de dispositivos de optiMEAS. Cubren lo que los archivos sintéticos no pueden: grandes cantidades de canales, patrones reales de marcas de tiempo y flujos que terminan abruptamente. Un lector debe leerlos sin fallar y devolver los datos disponibles.

RutaFormatoDescripción
motorbike.osfOSF481 canales de telemetría de motocicleta — velocidades, temperaturas, GPS, estado del sistema
steam_loco.osf (+ .csv)OSF4123 canales de una grabación de una locomotora de vapor (.csv es una exportación de referencia de los mismos datos)
weather_station.osfzOSF4, gzip28 canales, OSFZ comprimido con gzip — comprueba la descompresión transparente al leer
Testdata Motorbike/OSFZGrabaciones de motocicleta de varios días en subcarpetas diarias (YYYYMMDD/…) — pruebas de robustez y de lectura masiva

Abrir un archivo​

Lo más rápido es el paquete de Python osfdata:

import osf

mgr = osf.load("examples/steam_loco.osf")
print(f"{len(mgr)} Kanäle")
for ch in mgr.channels:
print(ch.name, ch.data_type, ch.sample_count)

Los archivos también se pueden abrir con la implementación en Rust (cargo run --example inspect -- <pfad>), con la de C++ o con la de Delphi (osftool info). El capítulo Formato OSF ofrece una introducción al formato.

Este documento se distribuye bajo la licencia CC BY 4.0. Atribución: optiMEAS GmbH y optiMEAS Switzerland GmbH.