File: slow5_open.md

package info (click to toggle)
libslow5lib 0.7.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 25,092 kB
  • sloc: ansic: 11,825; python: 1,179; sh: 547; makefile: 91; cpp: 40
file content (79 lines) | stat: -rw-r--r-- 2,865 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# slow5_open

## NAME
slow5_open - opens a SLOW5 file

## SYNOPSYS
`slow5_file_t *slow5_open(const char *pathname, const char *mode)`

## DESCRIPTION

The `slow_open()` function opens a SLOW5 file (ASCII or binary) pointed by the argument *pathname*, parses and populates the SLOW5 header. `slow_open()` determines if the file is SLOW5 ASCII or SLOW5 Binary from extension of the argument *pathname* (*.slow5* for SLOW5 ASCII and *.blow5* for SLOW5 binary).

Currently, the argument *mode* points to a string which can be one of the following:

* `r`   Open a SLOW5 file for reading.
* `w`   Open a SLOW5 file for writing. Creates a new file if the file does not exit. An existing file is truncated to zero.
* `a`   Open a SLOW5 file for appending (writing at end of file). The file must already exist. If it does not exist, `slow_open()` will fail. If *pathname* is a BLOW5 file, the existing SLOW5 EOF marker is overwritten.

An open slow5 file should be closed at the end using `slow5_close()` function.


## RETURN VALUE

Upon successful completion, `slow_open()` returns a *slow5_file_t* pointer. Otherwise, NULL is returned and `slow5_errno` is set to indicate the error.

## ERRORS

* `SLOW5_ERR_ARG`
       Invalid argument - pathname or mode provided was NULL.
* `SLOW5_ERR_IO`
       File I/O error, for instance, `fopen`, `ftello` or `fileno` failed.
* `SLOW5_ERR_UNK`
       Wrong file extension, that is neither *.slow5* nor *.blow5*
* `SLOW5_ERR_HDRPARSE`
       Parsing and populating the header failed.
* `SLOW5_ERR_MEM`
       Memory allocation failed.
* `SLOW5_ERR_TRUNC`
       End of file (EOF) reached prematurely.
* `SLOW5_ERR_MAGIC`
       Invalid magic number.
* `SLOW5_ERR_VERSION`
       File version is incompatible with this library version.
* `SLOW5_ERR_PRESS`
       Initialisation of compression/decompression buffers failed.
* `SLOW5_ERR_OTH`
       Other error.


## NOTES
Internally uses `fopen()`. If *mode* is `r`, the stream is positioned at the beginning of the data records when `slow_open()` returns. If mode is `w`, the stream is positioned at the end of the file. If mode is `a`, the stream is positioned at the end of the file for .slow5; and 5 bytes before the end of the file for .blow5 such that the existing SLOW5 EOF marker is overwritten.


## EXAMPLES
```
#include <stdio.h>
#include <stdlib.h>
#include <slow5/slow5.h>

#define FILE_PATH "examples/example.slow5"

int main(){

    slow5_file_t *sp = slow5_open(FILE_PATH,"r");
    if(sp==NULL){
       fprintf(stderr,"Error in opening file\n");
       exit(EXIT_FAILURE);
    }

    //...

    slow5_close(sp);

}
```

## SEE ALSO

[slow5_close()](slow5_close.md)