FAQ === Why is this a separate crate? ----------------------------- `readcon-core `__ is the decoder and writer for one stream or file. **readcon-db** owns the LMDB tree, secondary indexes, and multi-reader mmap. Once structures are CON text, the same files ingest here without a second structure dialect. What is authoritative? ---------------------- UTF-8 CON text. Hashes, dedup, join/split, and ``reindex`` run on the stored blobs. Cooked SoA / RCSO / H5MD arrays are derived and discardable. Is this SQL? ------------ No. =Select= is an explicit builder (symbol, (N), energy, flags, exact hash) over B-tree postings. There is no planner. Where do large campaigns go? ---------------------------- CON text stays the structure contract. This crate indexes it. Multi-frame CON files and ``iter_con`` in core cover trajectory-style loads. For many writers, use :doc:`/howto/campaign` (one writer per shard). How do XYZ, PDB, GRO fit in? ---------------------------- They are ingress in **readcon-core** (chemfiles). Convert to CON, then ingest. Optional ``to_ase`` is calculator hand-off only; ASE is not on the read path. How do I install it? -------------------- :doc:`/tutorials/getting-started`. Rust: ``cargo add readcon-db``. Python: ``pip install readcon-db``. C/Fortran: :doc:`/howto/install`.