#![forbid(unsafe_code)]
mod compression;
mod database;
mod error;
mod mass;
#[cfg(feature = "minitdf")]
mod minitdf;
mod mobility;
mod reader;
mod schema;
mod tables;
mod tsf;
pub use database::{MetadataDatabase, MetadataLimits, MetadataRow, SqlValue};
pub use error::{Error, ErrorContext, ErrorKind};
pub(crate) use error::{field, invalid, limit};
pub use mass::{LinearMzScale, MzCalibration, MzModel};
#[cfg(feature = "minitdf")]
pub use minitdf::{MiniTdfPrecursor, MiniTdfReader, MiniTdfSpectrum};
pub use mobility::{LinearMobilityScale, MobilityModel};
pub use reader::TdfReader;
pub use tables::{
AcquisitionType, DiaFrameMsMsInfo, DiaFrameMsMsWindow, DiaFrameMsMsWindowGroup, FrameInfo,
GlobalMetadata, LineSpectrum, PasefFrameMsMsInfo, Precursor, TimsCalibration, TsfFrameInfo,
TsfFrameMsMsInfo,
};
pub use tsf::TsfReader;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Clone, Copy, Debug)]
pub struct Limits {
pub max_compressed_bytes: usize,
pub max_decompressed_bytes: usize,
pub max_peaks: usize,
pub max_scans: usize,
pub metadata: MetadataLimits,
}
impl Default for Limits {
fn default() -> Self {
Self {
max_compressed_bytes: 256 * 1024 * 1024,
max_decompressed_bytes: 512 * 1024 * 1024,
max_peaks: 32_000_000,
max_scans: 100_000,
metadata: MetadataLimits::default(),
}
}
}
#[derive(Debug, PartialEq, Eq)]
pub struct Frame {
pub id: u64,
pub scan_offsets: Vec<usize>,
pub tof_indices: Vec<u32>,
pub intensities: Vec<u32>,
}
impl Frame {
pub fn scan_count(&self) -> usize {
self.scan_offsets.len().saturating_sub(1)
}
}