-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #65 from hasindu2008/lazymt
Lazymt
- Loading branch information
Showing
34 changed files
with
1,922 additions
and
747 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
# slow5_aux_add_enum | ||
|
||
## NAME | ||
|
||
slow5_aux_add_enum - adds an auxiliary field of type enum to a SLOW5 header | ||
|
||
## SYNOPSYS | ||
|
||
`int slow5_aux_add_enum(const char *field, const char **enum_labels, uint8_t num_labels, slow5_hdr_t *header)` | ||
|
||
## DESCRIPTION | ||
`slow5_aux_add_enum()` adds an auxiliary field named *field* of the datatype *enum* whose enum labels are pointed by *enum_labels* to a SLOW5 file header pointed by *header*. | ||
|
||
The number of enum labels in should be in *num_labels*. | ||
|
||
The argument *header* points to a SLOW5 header of type *slow5_hdr_t* and typically this is the *s5p->header* member inside the *slow5_file_t \*s5p* returned by `slow5_open()`. | ||
|
||
## RETURN VALUE | ||
Upon successful completion, `slow5_aux_add_enum()` returns a non negative integer (>=0). Otherwise, a negative value is returned. | ||
|
||
## ERRORS | ||
|
||
A negative value is returned when an error occurs and can be due to following occasions (not an exhaustive list): | ||
|
||
- input parameter is NULL | ||
- enum value is invalid | ||
- other error | ||
|
||
## NOTES | ||
|
||
In the future `slow5_errno` will be set to indicate the error. | ||
|
||
## EXAMPLES | ||
|
||
``` | ||
#include <stdio.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
#include <slow5/slow5.h> | ||
#define FILE_PATH "test.blow5" | ||
int main(){ | ||
//open the SLOW5 file for writing | ||
slow5_file_t *sp = slow5_open(FILE_PATH, "w"); | ||
if(sp==NULL){ | ||
fprintf(stderr,"Error opening file!\n"); | ||
exit(EXIT_FAILURE); | ||
} | ||
/*********************** Header ******************/ | ||
/* | ||
@run_id run_id_0 | ||
*/ | ||
slow5_hdr_t *header=sp->header; //pointer to the SLOW5 header | ||
//add a header group attribute called run_id | ||
if (slow5_hdr_add("run_id", header) < 0){ | ||
fprintf(stderr,"Error adding run_id attribute\n"); | ||
exit(EXIT_FAILURE); | ||
} | ||
//set the run_id attribute to "run_0" for read group 0 | ||
if (slow5_hdr_set("run_id", "run_0", 0, header) < 0){ | ||
fprintf(stderr,"Error setting run_id attribute in read group 0\n"); | ||
exit(EXIT_FAILURE); | ||
} | ||
/* | ||
enum{unknown,partial,mux_change,unblock_mux_change,signal_positive,signal_negative} | ||
end_reason | ||
*/ | ||
const char *enum_labels[] = {"unknown", "partial", "mux_change", "unblock_mux_change", "signal_positive", "signal_negative"}; | ||
uint8_t num_labels = 6; | ||
if (slow5_aux_add_enum("end_reason", enum_labels, num_labels, sp->header) < 0){ | ||
fprintf(stderr,"Error adding end_reason auxilliary field\n"); | ||
exit(EXIT_FAILURE); | ||
} | ||
if(slow5_hdr_write(sp) < 0){ | ||
fprintf(stderr,"Error writing header!\n"); | ||
exit(EXIT_FAILURE); | ||
} | ||
/******************* A SLOW5 record ************************/ | ||
slow5_rec_t *slow5_record = slow5_rec_init(); | ||
if(slow5_record == NULL){ | ||
fprintf(stderr,"Could not allocate space for a slow5 record."); | ||
exit(EXIT_FAILURE); | ||
} | ||
/* primary fields | ||
#read_id read_group digitisation offset range sampling_rate len_raw_signal raw_signal | ||
read_0 0 4096 3 10 4000 10 0,1,2,3,4,5,6,7,8,9 | ||
*/ | ||
slow5_record -> read_id = strdup("read_0"); | ||
if(slow5_record->read_id == NULL){ | ||
fprintf(stderr,"Could not do strdup."); | ||
exit(EXIT_FAILURE); | ||
} | ||
slow5_record-> read_id_len = strlen(slow5_record -> read_id); | ||
slow5_record -> read_group = 0; | ||
slow5_record -> digitisation = 4096.0; | ||
slow5_record -> offset = 3.0; | ||
slow5_record -> range = 10.0; | ||
slow5_record -> sampling_rate = 4000.0; | ||
slow5_record -> len_raw_signal = 10; | ||
slow5_record -> raw_signal = (int16_t *)malloc(sizeof(int16_t) * slow5_record->len_raw_signal); | ||
if(slow5_record->raw_signal == NULL){ | ||
fprintf(stderr,"Could not allocate space for raw signal."); | ||
exit(EXIT_FAILURE); | ||
} | ||
for(int i=0; i<slow5_record->len_raw_signal; i++){ | ||
slow5_record->raw_signal[i] = i; | ||
} | ||
/* auxiliary fileds | ||
end_reason | ||
1 | ||
*/ | ||
uint8_t end_reason = 1; | ||
if(slow5_aux_set(slow5_record, "end_reason", &end_reason, sp->header) < 0){ | ||
fprintf(stderr,"Error setting end_reason auxilliary field\n"); | ||
exit(EXIT_FAILURE); | ||
} | ||
//write to file | ||
if(slow5_write(slow5_record, sp) < 0){ | ||
fprintf(stderr,"Error writing record!\n"); | ||
exit(EXIT_FAILURE); | ||
} | ||
//free the slow5 record | ||
slow5_rec_free(slow5_record); | ||
//close the SLOW5 file | ||
slow5_close(sp); | ||
return 0; | ||
} | ||
``` | ||
|
||
## SEE ALSO | ||
[`slow5_aux_set()`](../slow5_aux_set.md). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.