# slow5lib
**Note: Low-level API documentation is currently sparse. If something is not clear do not hesitate to open an [issue](https://github.com/hasindu2008/slow5lib/issues).**
## Low-level API for reading and writing SLOW5 files
Low-level API allows much more efficient access to BLOW5 files compared to the high-level API. Following documented functions are stable.
### Common
* [slow5_set_log_level](low_level_api/slow5_set_log_level.md)
sets the level log message verbosity
* [slow5_set_exit_condition](low_level_api/slow5_set_exit_condition.md)
sets if slow5lib should exit the programme on error
* [slow5_set_skip_rid](low_level_api/slow5_set_skip_rid.md)
sets that a requested read missing is not to be treated as an error
* [slow5_idx_load_with](low_level_api/slow5_idx_load_with.md)
loads the index file for a SLOW5 file given a file path for the index
### Reading and access
* [slow5_get_rids](low_level_api/slow5_get_rids.md)
gets the pointer to the list of read IDs associated with a SLOW5 file
* [slow5_get_hdr_keys](low_level_api/slow5_get_hdr_keys.md)
gets the list of data header attribute keys
* [slow5_get_aux_names](low_level_api/slow5_get_aux_names.md)
gets the pointer to the list of auxiliary field names
* [slow5_get_next_bytes](low_level_api/slow5_get_next_bytes.md)
fetches the raw record (without decompressing or parsing) at the current file pointer of a SLOW5 file
* [slow5_decode](low_level_api/slow5_decode.md)
decodes a slow5 record
* [slow5_aux_get_enum](low_level_api/slow5_aux_get_enum.md)
fetches an auxiliary field of type enum from a SLOW5 record
* [slow5_get_aux_enum_labels](low_level_api/slow5_get_aux_enum_labels.md)
gets the list of labels for an enum data type
### Writing and editing
* [slow5_aux_add_enum](low_level_api/slow5_aux_add_enum.md)
adds an auxiliary field of type enum to a SLOW5 header
* [slow5_encode](low_level_api/slow5_encode.md)
encodes a SLOW5 record
* [slow5_write_bytes](low_level_api/slow5_write_bytes.md)
writes an encoded SLOW5 record to a SLOW5 file
You may also refer to examples [here](https://github.com/hasindu2008/slow5lib/tree/master/examples/adv).
**If you want any other functionality than what is described above, please open a GitHub issue so such functionality exposed, rather than trying to use internal functions by browsing the code. Such undocumented functions are subject to change.**