GT_INLINE void gt_dna_read_clear(gt_dna_read* read) { GT_DNA_READ_CHECK(read); gt_string_clear(read->tag); gt_string_clear(read->read); gt_string_clear(read->qualities); gt_attributes_clear(read->attributes); }
END_TEST START_TEST(gt_test_loosing_alignments) { // test no maps no mmaps fail_unless(gt_input_map_parse_template( "67999,0\t" "CAAAAATGAAGTAAAACTCTCACTCTTCACAGATGACATGATATTTTTATGTGGGAAACCCAAAAGAGTTCAACAGAAAACTGCTAGAACTGATACGTGAATTCAGCAAAGTTGCAAGATATAAAATCAATGTACAGATCGGTTGCATTTCTAGACACCAATAATGAAGCAGCAGAAAGAGATACCAAGAAATCGATCCTATTTACAATTGCACCCAAAACTGTCAGATACCAAGGAATAAACCTCACCAAAGAGGTATGCTGAAAACTATCGAAAGCTTAATGAAAGAAATTGAAGAAGATACAAAGAAATAGAAAAGCATGCCATGTTCATGGATTGGAAGAACAAATATTGTTAAAATGTCGATAGTACCCAAAGCAGTCTACACATTCAGTGCAATCCCTATCAAAATAACACCAGCATTCTTCATAGAGCTAGAACAAACAATTCTAAAATTTGTATGGAACCACGAAAGACCCCGAATAGCCGAGGTAATGTTTAAAAGGAAATCCAAAGATGGAGGCATCACAATTCCAGACTTCAAGCTGTATTACAAAGCTGTAATCATCAAACAAAAGGGTACTGGCACAAAACTAGAGACAGAGATCAATGGAACAGAATAGAGAACCCACAAATGGACTCACAAATGTATGGCCAACTAATCTTCAACAAAGCAGGAAAGAATATCCAATGGGAAAGAGTCTTCACAAATGGTATTGGCAAAACGGGACAACAACATGCAGAAGAATGAGCCTGGACCACTTTCTTACACCGTACACAAAAATGTATTCAAAATGGATGGAAGACCTAAATGTAAGACAGAAAACCATCAAAAATCCTAGAAGAGAACAGAAGCAGTAACTTCTTTGATTTTGGCCTTAGCAACTTCTTTCTAGACATGTATCCTGAGGCAAGCAAAAAAAACACAAAAATAAACTATTGGGACTACATCAAAACAAAAAGCTTCTGCACAGTGAAAGAAATAATCAACAAAACTAAA\t" "2:0:0:0:0:1:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:0:1:0:0:1\t" "267999:+:1:1000,302802:+:1:1000,283693:-:311:184T116C50C45C11G589,308701:+:1:37G9>1-6A14C114T116C50C45C11G589,302802:-:7693:773A52T2A1>1-11G2>1+1>1+5>2-3CC3C7C5>2-2>2+11A9CC1>1-2>1+7>1+1G3C4>1-8G11>1+2>1-6G1T17>1-C3>1+4C16,267998:+:1:773A52T2A5>1-7G3>1+2>1+3>2-3CC3C7C5TTGC11A9CC2>1-2>1+7>1+G3C4>1-8G12>1+1>1-6G1T17C>1-4>1+3C16,283521:-:317:184T116C50C45C11G362A52T2A1>1-11G2>1+1>1+5>2-3CC3C7C5>2-2>2+11A9CC1>1-2>1+7>1+1G3C4>1-8G11>1+2>1-6G1T17>1-C3>1+4C16",source)==0); gt_string* string = gt_string_new(1024); gt_output_map_sprint_template(string, source, output_attributes); // convert to string char * line = gt_string_get_string(string); fail_unless(gt_streq(line, "67999,0\t" "CAAAAATGAAGTAAAACTCTCACTCTTCACAGATGACATGATATTTTTATGTGGGAAACCCAAAAGAGTTCAACAGAAAACTGCTAGAACTGATACGTGAATTCAGCAAAGTTGCAAGATATAAAATCAATGTACAGATCGGTTGCATTTCTAGACACCAATAATGAAGCAGCAGAAAGAGATACCAAGAAATCGATCCTATTTACAATTGCACCCAAAACTGTCAGATACCAAGGAATAAACCTCACCAAAGAGGTATGCTGAAAACTATCGAAAGCTTAATGAAAGAAATTGAAGAAGATACAAAGAAATAGAAAAGCATGCCATGTTCATGGATTGGAAGAACAAATATTGTTAAAATGTCGATAGTACCCAAAGCAGTCTACACATTCAGTGCAATCCCTATCAAAATAACACCAGCATTCTTCATAGAGCTAGAACAAACAATTCTAAAATTTGTATGGAACCACGAAAGACCCCGAATAGCCGAGGTAATGTTTAAAAGGAAATCCAAAGATGGAGGCATCACAATTCCAGACTTCAAGCTGTATTACAAAGCTGTAATCATCAAACAAAAGGGTACTGGCACAAAACTAGAGACAGAGATCAATGGAACAGAATAGAGAACCCACAAATGGACTCACAAATGTATGGCCAACTAATCTTCAACAAAGCAGGAAAGAATATCCAATGGGAAAGAGTCTTCACAAATGGTATTGGCAAAACGGGACAACAACATGCAGAAGAATGAGCCTGGACCACTTTCTTACACCGTACACAAAAATGTATTCAAAATGGATGGAAGACCTAAATGTAAGACAGAAAACCATCAAAAATCCTAGAAGAGAACAGAAGCAGTAACTTCTTTGATTTTGGCCTTAGCAACTTCTTTCTAGACATGTATCCTGAGGCAAGCAAAAAAAACACAAAAATAAACTATTGGGACTACATCAAAACAAAAAGCTTCTGCACAGTGAAAGAAATAATCAACAAAACTAAA\t" "\t" "2:0:0:0:0:1:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:0:1:0:0:1\t" "267999:+:1:1000,302802:+:1:1000,283693:-:311:184T116C50C45C11G589,308701:+:1:37G9>1-6A14C114T116C50C45C11G589,302802:-:7693:773A52T2A1>1-11G2>1+1>1+5>2-3CC3C7C5>2-2>2+11A9CC1>1-2>1+7>1+1G3C4>1-8G11>1+2>1-6G1T17>1-C3>1+4C16,267998:+:1:773A52T2A5>1-7G3>1+2>1+3>2-3CC3C7C5TTGC11A9CC2>1-2>1+7>1+G3C4>1-8G12>1+1>1-6G1T17C>1-4>1+3C16,283521:-:317:184T116C50C45C11G362A52T2A1>1-11G2>1+1>1+5>2-3CC3C7C5>2-2>2+11A9CC1>1-2>1+7>1+1G3C4>1-8G11>1+2>1-6G1T17>1-C3>1+4C16\n" )); gt_string_clear(string); // try parsing the alignment fail_unless(gt_input_map_parse_alignment( "67999,0\t" "CAAAAATGAAGTAAAACTCTCACTCTTCACAGATGACATGATATTTTTATGTGGGAAACCCAAAAGAGTTCAACAGAAAACTGCTAGAACTGATACGTGAATTCAGCAAAGTTGCAAGATATAAAATCAATGTACAGATCGGTTGCATTTCTAGACACCAATAATGAAGCAGCAGAAAGAGATACCAAGAAATCGATCCTATTTACAATTGCACCCAAAACTGTCAGATACCAAGGAATAAACCTCACCAAAGAGGTATGCTGAAAACTATCGAAAGCTTAATGAAAGAAATTGAAGAAGATACAAAGAAATAGAAAAGCATGCCATGTTCATGGATTGGAAGAACAAATATTGTTAAAATGTCGATAGTACCCAAAGCAGTCTACACATTCAGTGCAATCCCTATCAAAATAACACCAGCATTCTTCATAGAGCTAGAACAAACAATTCTAAAATTTGTATGGAACCACGAAAGACCCCGAATAGCCGAGGTAATGTTTAAAAGGAAATCCAAAGATGGAGGCATCACAATTCCAGACTTCAAGCTGTATTACAAAGCTGTAATCATCAAACAAAAGGGTACTGGCACAAAACTAGAGACAGAGATCAATGGAACAGAATAGAGAACCCACAAATGGACTCACAAATGTATGGCCAACTAATCTTCAACAAAGCAGGAAAGAATATCCAATGGGAAAGAGTCTTCACAAATGGTATTGGCAAAACGGGACAACAACATGCAGAAGAATGAGCCTGGACCACTTTCTTACACCGTACACAAAAATGTATTCAAAATGGATGGAAGACCTAAATGTAAGACAGAAAACCATCAAAAATCCTAGAAGAGAACAGAAGCAGTAACTTCTTTGATTTTGGCCTTAGCAACTTCTTTCTAGACATGTATCCTGAGGCAAGCAAAAAAAACACAAAAATAAACTATTGGGACTACATCAAAACAAAAAGCTTCTGCACAGTGAAAGAAATAATCAACAAAACTAAA\t" "2:0:0:0:0:1:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:0:1:0:0:1\t" "267999:+:1:1000,302802:+:1:1000,283693:-:311:184T116C50C45C11G589,308701:+:1:37G9>1-6A14C114T116C50C45C11G589,302802:-:7693:773A52T2A1>1-11G2>1+1>1+5>2-3CC3C7C5>2-2>2+11A9CC1>1-2>1+7>1+1G3C4>1-8G11>1+2>1-6G1T17>1-C3>1+4C16,267998:+:1:773A52T2A5>1-7G3>1+2>1+3>2-3CC3C7C5TTGC11A9CC2>1-2>1+7>1+G3C4>1-8G12>1+1>1-6G1T17C>1-4>1+3C16,283521:-:317:184T116C50C45C11G362A52T2A1>1-11G2>1+1>1+5>2-3CC3C7C5>2-2>2+11A9CC1>1-2>1+7>1+1G3C4>1-8G11>1+2>1-6G1T17>1-C3>1+4C16",alignment)==0); gt_output_map_sprint_alignment(string, alignment, output_attributes); // convert to string line = gt_string_get_string(string); fail_unless(gt_streq(line, "67999,0\t" "CAAAAATGAAGTAAAACTCTCACTCTTCACAGATGACATGATATTTTTATGTGGGAAACCCAAAAGAGTTCAACAGAAAACTGCTAGAACTGATACGTGAATTCAGCAAAGTTGCAAGATATAAAATCAATGTACAGATCGGTTGCATTTCTAGACACCAATAATGAAGCAGCAGAAAGAGATACCAAGAAATCGATCCTATTTACAATTGCACCCAAAACTGTCAGATACCAAGGAATAAACCTCACCAAAGAGGTATGCTGAAAACTATCGAAAGCTTAATGAAAGAAATTGAAGAAGATACAAAGAAATAGAAAAGCATGCCATGTTCATGGATTGGAAGAACAAATATTGTTAAAATGTCGATAGTACCCAAAGCAGTCTACACATTCAGTGCAATCCCTATCAAAATAACACCAGCATTCTTCATAGAGCTAGAACAAACAATTCTAAAATTTGTATGGAACCACGAAAGACCCCGAATAGCCGAGGTAATGTTTAAAAGGAAATCCAAAGATGGAGGCATCACAATTCCAGACTTCAAGCTGTATTACAAAGCTGTAATCATCAAACAAAAGGGTACTGGCACAAAACTAGAGACAGAGATCAATGGAACAGAATAGAGAACCCACAAATGGACTCACAAATGTATGGCCAACTAATCTTCAACAAAGCAGGAAAGAATATCCAATGGGAAAGAGTCTTCACAAATGGTATTGGCAAAACGGGACAACAACATGCAGAAGAATGAGCCTGGACCACTTTCTTACACCGTACACAAAAATGTATTCAAAATGGATGGAAGACCTAAATGTAAGACAGAAAACCATCAAAAATCCTAGAAGAGAACAGAAGCAGTAACTTCTTTGATTTTGGCCTTAGCAACTTCTTTCTAGACATGTATCCTGAGGCAAGCAAAAAAAACACAAAAATAAACTATTGGGACTACATCAAAACAAAAAGCTTCTGCACAGTGAAAGAAATAATCAACAAAACTAAA\t" "\t" "2:0:0:0:0:1:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:1:0:1:0:0:1\t" "267999:+:1:1000,302802:+:1:1000,283693:-:311:184T116C50C45C11G589,308701:+:1:37G9>1-6A14C114T116C50C45C11G589,302802:-:7693:773A52T2A1>1-11G2>1+1>1+5>2-3CC3C7C5>2-2>2+11A9CC1>1-2>1+7>1+1G3C4>1-8G11>1+2>1-6G1T17>1-C3>1+4C16,267998:+:1:773A52T2A5>1-7G3>1+2>1+3>2-3CC3C7C5TTGC11A9CC2>1-2>1+7>1+G3C4>1-8G12>1+1>1-6G1T17C>1-4>1+3C16,283521:-:317:184T116C50C45C11G362A52T2A1>1-11G2>1+1>1+5>2-3CC3C7C5>2-2>2+11A9CC1>1-2>1+7>1+1G3C4>1-8G11>1+2>1-6G1T17>1-C3>1+4C16\n" )); gt_string_clear(string); gt_alignment *alignment_dst; alignment_dst = gt_alignment_copy(alignment,false); GT_ALIGNMENT_ITERATE(alignment,map) { gt_alignment_insert_map(alignment_dst,gt_map_copy(map)); }
END_TEST START_TEST(gt_test_template_copy) { // test no maps no mmaps fail_unless(gt_input_map_parse_template( "ID\tACGT\t####\t1\tchr1:-:20:4",source)==0); gt_template* copy = gt_template_copy(source, false, false); gt_string* string = gt_string_new(1024); gt_output_map_sprint_template(string, copy, output_attributes); // convert to string for simple check char * line = gt_string_get_string(string); fail_unless(gt_streq(line,"ID\tACGT\t####\t0\t-\n")); gt_template_delete(copy); // test maps no mmaps gt_string_clear(string); copy = gt_template_copy(source, true, false); string = gt_string_new(1024); gt_output_map_sprint_template(string, copy, output_attributes); // convert to string for simple check line = gt_string_get_string(string); fail_unless(gt_streq(line,"ID\tACGT\t####\t1\tchr1:-:20:4\n")); gt_template_delete(copy); // test maps no mmaps with multi map string fail_unless(gt_input_map_parse_template( "ID\tACGT\t####\t2\tchr1:-:20:4,chr2:-:40:4",source)==0); gt_string_clear(string); copy = gt_template_copy(source, true, false); string = gt_string_new(1024); gt_output_map_sprint_template(string, copy, output_attributes); // convert to string for simple check line = gt_string_get_string(string); fail_unless(gt_streq(line,"ID\tACGT\t####\t2\tchr1:-:20:4,chr2:-:40:4\n")); gt_template_delete(copy); // test maps and mmaps gt_string_clear(string); copy = gt_template_copy(source, true, true); string = gt_string_new(1024); gt_output_map_sprint_template(string, copy, output_attributes); // convert to string for simple check line = gt_string_get_string(string); fail_unless(gt_streq(line,"ID\tACGT\t####\t2\tchr1:-:20:4,chr2:-:40:4\n")); gt_template_delete(copy); }
GT_INLINE void gt_segmented_sequence_clear(gt_segmented_sequence* const sequence) { GT_SEGMENTED_SEQ_CHECK(sequence); GT_VECTOR_ITERATE(sequence->blocks,block,block_num,uint64_t*) { if (*block) gt_free(*block); } gt_vector_clear(sequence->blocks); gt_string_clear(sequence->seq_name); }
GT_INLINE void gt_sam_attribute_func_params_clear(gt_sam_attribute_func_params* const func_params) { GT_NULL_CHECK(func_params); /* Return Values */ if (func_params->return_s!=NULL) gt_string_clear(func_params->return_s); /* Sequence Archive */ func_params->sequence_archive = NULL; /* Template/Alignment source */ func_params->alignment_info=NULL; /* Placeholder Vector */ func_params->mmap_placeholder = NULL; }
GT_INLINE void gt_sam_header_clear(gt_sam_headers* const sam_headers) { GT_SAM_HEADERS_CHECK(sam_headers); // Header gt_string_clear(sam_headers->header); // Read group GT_VECTOR_ITERATE(sam_headers->read_group,record_h,nh,gt_string*) { gt_string_delete(*record_h); } gt_vector_clear(sam_headers->read_group); // Program GT_VECTOR_ITERATE(sam_headers->program,record_p,np,gt_string*) { gt_string_delete(*record_p); } gt_vector_clear(sam_headers->program); // Comments GT_VECTOR_ITERATE(sam_headers->comments,comment,nc,gt_string*) { gt_string_delete(*comment); } gt_vector_clear(sam_headers->comments); // Seq Archive sam_headers->sequence_archive=NULL; }