https://github.com/cossio/jlso.jl

Julia Serialized Object (JLSO) file format for storing checkpoint data.

https://github.com/cossio/jlso.jl

Science Score: 10.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.3%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Julia Serialized Object (JLSO) file format for storing checkpoint data.

Basic Info
  • Host: GitHub
  • Owner: cossio
  • License: mit
  • Default Branch: master
  • Size: 603 KB
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Fork of invenia/JLSO.jl
Created about 4 years ago · Last pushed about 4 years ago

https://github.com/cossio/JLSO.jl/blob/master/

# JLSO

[![Stable](https://img.shields.io/badge/docs-stable-blue.svg)](https://invenia.github.io/JLSO.jl/stable)
[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://invenia.github.io/JLSO.jl/dev)
[![Build Status](https://github.com/invenia/JLSO.jl/workflows/CI/badge.svg)](https://github.com/invenia/JLSO.jl/actions)
[![Codecov](https://codecov.io/gh/invenia/JLSO.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/invenia/JLSO.jl)
[![Code Style: Blue](https://img.shields.io/badge/code%20style-blue-4495d1.svg)](https://github.com/invenia/BlueStyle)
[![DOI](https://zenodo.org/badge/170755855.svg)](https://zenodo.org/badge/latestdoi/170755855)


JLSO is a storage container for serialized Julia objects.
Think of it less as a serialization format but as a container,
that employs a serializer, and a compressor, handles all the other concerns including metadata and saving.
Such that the serializer just needs to determine how to turn a julia object into a stream`Vector{UInt8}`,
and the compressor just needs to determine how to turn one stream of `UInt8`s into a smaller one (and the reverse).


At the top-level it is a BSON file,
where it stores metadata about the system it was created on as well as a collection of objects (the actual data).
Depending on configuration, those objects may themselves be stored as BSON sub-documents,
or in the native Julia serialization format (default), under various levels of compression (`gzip` default).
It is fast and efficient to load just single objects out of a larger file that contains many objects.

The metadata includes the Julia version and the versions of all packages installed.
It is always store in plain BSON without julia specific extensions.
This means in the worst case you can install everything again and replicate your system.
(Extreme worst case scenario, using a BSON reader from another programming language).

Note: If the amount of data you have to store is very small, relative to the metadata about your environment, then JLSO is a pretty suboptimal format.
As a rule of thumb, consider the size of your Project.toml and Manifest.toml files.
If the data you are storing is large compared to the compressed size of these files, then it is fine to use JLSO.


## Example

```jldoctest
julia> using JLSO, Dates

julia> JLSO.save("breakfast.jlso", :food => "", :cost => 11.95, :time => Time(9, 0))

julia> loaded = JLSO.load("breakfast.jlso")
Dict{Symbol,Any} with 3 entries:
  :cost => 11.95
  :food => ""
  :time => 09:00:00
```

Owner

  • Name: Jorge Fernandez-de-Cossio-Diaz
  • Login: cossio
  • Kind: user

GitHub Events

Total
Last Year