-
Efficiently reading a CSV of floats in Rust
In hpstat, we are often required to read large CSV files consisting of a header of string column names, followed by data consisting entirely of floating-point numbers. Profiling reveals that a naïve approach based on generic CSV parsers is inefficient at this task.
Consider… »
-
A high-performance Rust implementation of the Turnbull non-parametric maximum likelihood estimator for interval-censored survival data
A common need in biostatistics is to estimate survival curves, but particular difficulty arises when observations are interval censored, i.e. the time of event is not observed exactly, but is known only to fall within a particular interval. In this setting, the Turnbull estimator [1]… »
-
A high-performance Rust implementation of interval-censored Cox regression
Cox proportional hazards models are commonly used in biostatistics for the modelling of time-to-event data, such as mortality or disease progression. A difficulty in applying Cox models arises when observations are interval censored, i.e. the time of event is not observed exactly, but is known… »
-
Implementing a BLT parser by hand in Rust (vs pest and combine): OpenTally dev log
OpenTally is open-source software which can count single transferable vote elections specified using the BLT file format.
Earlier this month, I replaced OpenTally's previous naive string-manipulation-based BLT parser with one using pest. A new parser was necessary to support extensions to the BLT… »
-
Asyncify with vanilla JS/WebAssembly (wasm-bindgen compatible)
Background
WebAssembly is a technology for executing compiled programs in the web browser at near-native speeds. However, it has a number of current limitations, including that it does not support coroutines/asynchronicity.
In OpenTally, WebAssembly is used to run code for counting an election. This… »
-
Reducing binary size with DIY dynamic dispatch: OpenTally dev log
Background
OpenTally is open source software for the counting of preferential voting elections. One feature of OpenTally is support for various different representations of numbers, from floating-point arithmetic through to exact rational representations.
In OpenTally, these are implemented using generics. For example, consider the following… »
-
Porting Python to Rust/WebAssembly: OpenTally dev log
Background and motivation
pyRCV2 is software for open-source election counting. It is intended to be usable across multiple platforms – as a web application, for the convenience of users less technologically inclined, and as a standalone CLI desktop application, for better performance. To this end,… »