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 gt_string* gt_qualities_dup__adapt_offset64_to_offset33(gt_string* const qualities) { gt_string* qualities_dst = gt_string_new(gt_string_get_length(qualities)+1); gt_string_set_length(qualities_dst,gt_string_get_length(qualities)+1); char* const qualities_dst_buf = gt_string_get_string(qualities_dst); GT_STRING_ITERATE(qualities,qualities_buf,pos) { qualities_dst_buf[pos] = qualities_buf[pos]-64+33; }
END_TEST START_TEST(gt_test_template_merge_inconsistent) { fail_unless(gt_input_map_parse_template( "ID/1\t" "GAGAGAACAGGCCTCTGAGCCCAAGCCAAGCCATCGCATCCCCTGTGACTTGCCCGTATATATGCCCAGATGGCCTGAAGTAACTGAAGAATCACAAAAGA\t" "BPYcceeegegggiiiiiiiiiiiiiiighhhfgghhiiihhhifhfhhhfhhdghhiiihfbggedddeabbcdcccb`ZaW[^^abbcGW[`^`R]`BB\t" "0:0:0:0:1:4+27:46:45:34:12:16:3:0:1\t" "chr7:+:24435865:1T>5-46A8C38,chr2:+:64479547:>1-1T>1-1T>1-94,chr4:+:16999371:1T>5-35>2-9A8C38,chr9:+:90025610:1T>5-28A17A8C38,chr11:-:130623749:2>1-1T1T46A2>2-43",source)==0); fail_unless(gt_input_map_parse_template( "ID/1\t" "GAGAGAACAGGCCTCTGAGCCCAAGCCAAGCCATCGCATCCCCTGTGACTTGCCCGTATATATGCCCAGATGGCCTGAAGTAACTGAAGAATCACAAAAGA\t" "BPYcceeegegggiiiiiiiiiiiiiiighhhfgghhiiihhhifhfhhhfhhdghhiiihfbggedddeabbcdcccb`ZaW[^^abbcGW[`^`R]`BB\t" "0:1:0:0:0:0:1:3\t" "chr2:+:64479108:10>436*91,chr2:+:64479544:TTC1TGT94,chr13:+:91496959:1GA1TGT27T18A47,chr2:+:216792393:1GA1TGT46A8C38,chr2:+:64478959:AG1T1G1TT1>585*91",target)==0); // merge into source gt_template_recalculate_counters(source); gt_template_merge_template_mmaps(source,target); 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, "ID/1\t" "GAGAGAACAGGCCTCTGAGCCCAAGCCAAGCCATCGCATCCCCTGTGACTTGCCCGTATATATGCCCAGATGGCCTGAAGTAACTGAAGAATCACAAAAGA\t" "BPYcceeegegggiiiiiiiiiiiiiiighhhfgghhiiihhhifhfhhhfhhdghhiiihfbggedddeabbcdcccb`ZaW[^^abbcGW[`^`R]`BB\t" "0:1:0:0:1:4+1:3\t" "chr2:+:64479108:10>436*91,chr7:+:24435865:1T>5-46A8C38,chr2:+:64479547:(1)1T>1-1T>1-94," "chr4:+:16999371:1T>5-35>2-9A8C38,chr9:+:90025610:1T>5-28A17A8C38,chr11:-:130623749:2>1-1T1T46A2>2-43," "chr2:+:64479544:TTC1TGT94,chr13:+:91496959:1GA1TGT27T18A47,chr2:+:216792393:1GA1TGT46A8C38," "chr2:+:64478959:AG1T1G1TT1>585*91\n")); }
END_TEST START_TEST(gt_test_template_merge_error) { fail_unless(gt_input_map_parse_template( "HISEQ8_0071:3:1101:19107:2010#TGACCA/1\t" "NGTCATGAGTGCAAAATGCAAATGCAAGTTTGGCCAGAAGTCCGGTCACCATCCAGGGGAGACTCCACCTCTCATCACCCCAGGCTCAGCCCAAAGCTGAT\t" "BPYcceeegegggiiiiiiiiiiiiiiighhhfgghhiiihhhifhfhhhfhhdghhiiihfbggedddeabbcdcccb`ZaW[^^abbcGW[`^`R]`BB\t" "0:0:0:0:1\t" "chr19:+:35613736:C7>78*37>316*38>132*18",source)==0); fail_unless(gt_input_map_parse_template( "HISEQ8_0071:3:1101:19107:2010#TGACCA/1\t" "NGTCATGAGTGCAAAATGCAAATGCAAGTTTGGCCAGAAGTCCGGTCACCATCCAGGGGAGACTCCACCTCTCATCACCCCAGGCTCAGCCCAAAGCTGAT\t" "BPYcceeegegggiiiiiiiiiiiiiiighhhfgghhiiihhhifhfhhhfhhdghhiiihfbggedddeabbcdcccb`ZaW[^^abbcGW[`^`R]`BB\t" "0:0:0:0:1+0:1\t" "chr19:+:35613741:(5)3>78*37>316*36(20),chr19:+:35613819:(5)CAG37>316*36(20)", target)==0); // merge into source gt_template_merge_template_mmaps(source,target); 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, "HISEQ8_0071:3:1101:19107:2010#TGACCA/1\t" "NGTCATGAGTGCAAAATGCAAATGCAAGTTTGGCCAGAAGTCCGGTCACCATCCAGGGGAGACTCCACCTCTCATCACCCCAGGCTCAGCCCAAAGCTGAT\t" "BPYcceeegegggiiiiiiiiiiiiiiighhhfgghhiiihhhifhfhhhfhhdghhiiihfbggedddeabbcdcccb`ZaW[^^abbcGW[`^`R]`BB\t" "0:0:0:0:2+0:1\t" "chr19:+:35613736:C7>78*37>316*38>132*18,chr19:+:35613741:(5)3>78*37>316*36(20),chr19:+:35613819:(5)CAG37>316*36(20)\n")); }
END_TEST START_TEST(gt_test_template_to_string) { fail_unless(gt_input_map_parse_template( "ID\tACGT\t####\t1\tchr1:-:20:4",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,"ID\tACGT\t####\t1\tchr1:-:20:4\n")); }
END_TEST START_TEST(gt_test_template_merge_hang) { fail_unless(gt_input_map_parse_template( "HWI-962:71:D0PEYACXX:4:1101:18640:2354/2\tCGCGCGGGAGCCAGCAGGAGCACCAGCTGCGCAGGCAGGTTGAACTGCTGGCTTATAAAGTAGAGCAGGAGAAGT\t" "@CCFFFFFHHHHHIJIJJIJJJJJJJIIJGIDGIHHHFF6>CCCDEDDDDCBDD>CCDCC>CCCCCDDDDDBDC>\t0:0:0:0:0:0\t-",source)==0); fail_unless(gt_input_map_parse_template( "HWI-962:71:D0PEYACXX:4:1101:18640:2354/2\tCGCGCGGGAGCCAGCAGGAGCACCAGCTGCGCAGGCAGGTTGAACTGCTGGCTTATAAAGTAGAGCAGGAGAAGT\t" "@CCFFFFFHHHHHIJIJJIJJJJJJJIIJGIDGIHHHFF6>CCCDEDDDDCBDD>CCDCC>CCCCCDDDDDBDC>\t0:1\tchr21:+:47848466:39>1419*36",target)==0); // merge into source gt_template_merge_template_mmaps(source,target); 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,"HWI-962:71:D0PEYACXX:4:1101:18640:2354/2\tCGCGCGGGAGCCAGCAGGAGCACCAGCTGCGCAGGCAGGTTGAACTGCTGGCTTATAAAGTAGAGCAGGAGAAGT\t" "@CCFFFFFHHHHHIJIJJIJJJJJJJIIJGIDGIHHHFF6>CCCDEDDDDCBDD>CCDCC>CCCCCDDDDDBDC>\t0:1+0:0:0:0\tchr21:+:47848466:39>1419*36\n")); }
GT_INLINE void gt_sam_header_add_sequence_record(gt_sam_headers* const sam_headers,gt_sam_header_record* const header_record) { GT_SAM_HEADERS_CHECK(sam_headers); gt_string *sn_tag=gt_sam_header_record_get_tag(header_record,"SN"); gt_cond_error(!sn_tag,PARSE_SAM_HEADER_MISSING_TAG,"SQ","SN"); gt_cond_error(!gt_sam_header_record_get_tag(header_record,"LN"),PARSE_SAM_HEADER_MISSING_TAG,"SQ","LN"); if(sn_tag) { if(!sam_headers->sequence_dictionary_sn_hash) sam_headers->sequence_dictionary_sn_hash=gt_shash_new(); char *sn_str=gt_string_get_string(sn_tag); size_t* ix=gt_shash_get_element(sam_headers->sequence_dictionary_sn_hash,sn_str); // If SN Tag already exists, overwrite. if(ix) { gt_sam_header_record_delete(*(gt_sam_header_record **)gt_vector_get_elm(sam_headers->sequence_dictionary,*ix,gt_sam_header_record*)); gt_vector_set_elm(sam_headers->sequence_dictionary,*ix,gt_sam_header_record*,header_record); gt_error(PARSE_SAM_HEADER_DUPLICATE_TAG,"SQ","SN",sn_str); } else { ix=gt_alloc(size_t); *ix=gt_vector_get_used(sam_headers->sequence_dictionary); gt_shash_insert(sam_headers->sequence_dictionary_sn_hash,sn_str,ix,size_t*); gt_vector_insert(sam_headers->sequence_dictionary,header_record,gt_sam_header_record*); } }
GT_INLINE char* gt_dna_read_get_qualities(gt_dna_read* const read) { GT_DNA_READ_CHECK(read); return gt_string_get_string(read->qualities); }
GT_INLINE char* gt_dna_read_get_read(gt_dna_read* const read) { GT_DNA_READ_CHECK(read); return gt_string_get_string(read->read); }
GT_INLINE char* gt_segmented_sequence_get_name(gt_segmented_sequence* const sequence) { GT_SEGMENTED_SEQ_CHECK(sequence); return gt_string_get_string(sequence->seq_name); }
gt_status parse_arguments(int argc,char** argv) { gt_status err=GT_STATUS_OK; struct option* gt_coverage_getopt = gt_options_adaptor_getopt(gt_coverage_options); gt_string* const gt_coverage_short_getopt = gt_options_adaptor_getopt_short(gt_coverage_options); int option, option_index; while (true) { if ((option=getopt_long(argc,argv, gt_string_get_string(gt_coverage_short_getopt),gt_coverage_getopt,&option_index))==-1) break; switch (option) { case 'c': parameters.combine=true; break; case 'd': parameters.detailed_output=true; break; case 'b': parameters.block_size = atol(optarg); break; case 'o': parameters.output_file = optarg; break; case 'p': parameters.prefix = optarg; break; case 'r': parameters.ranges_file = optarg; break; case 't': parameters.target_file = optarg; break; case 'x': parameters.extend = atol(optarg); break; case 'P': parameters.paired = true; break; case 'U': if(!strcasecmp("first",optarg)) parameters.unique=GT_UNIQUE_FIRST; else if(!strcasecmp("gem",optarg)) parameters.unique=GT_UNIQUE_GEM; else if(!strcasecmp("xt",optarg)) parameters.unique=GT_UNIQUE_XT; else if(!strncasecmp("mq:",optarg,3)) { parameters.unique=GT_UNIQUE_MQ; parameters.MQ_limit=atol(optarg+3); } else { gt_fatal_error_msg("Unique mode not recognized: '%s'",optarg); } break; case 'D': if(!strcasecmp("ignore",optarg)) parameters.duplicate=GT_DUPLICATE_IGNORE; else if(!strcasecmp("remove",optarg)) parameters.duplicate=GT_DUPLICATE_REMOVE; else { gt_fatal_error_msg("Duplicate mode not recognized: '%s'",optarg); } break; case 'q': parameters.min_quality = atol(optarg); break; case 'v': parameters.verbose=true; break; case 'T': #ifdef HAVE_OPENMP parameters.num_threads = atol(optarg); #endif break; case 'h': usage(gt_coverage_options,gt_coverage_groups,false); exit(1); break; case 'H': usage(gt_coverage_options,gt_coverage_groups,true); exit(1); case 'J': gt_options_fprint_json_menu(stderr,gt_coverage_options,gt_coverage_groups,true,false); exit(1); break; case '?': default: usage(gt_coverage_options,gt_coverage_groups,false); gt_fatal_error_msg("Option '%c' %d not recognized",option,option); break; } } if(!parameters.ranges_file) { fputs("No ranges file specified. Use -r or --ranges_file option\n",stderr); } return err; }
"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)); } gt_output_map_sprint_alignment(string, alignment_dst, 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); } END_TEST Suite *gt_template_utils_suite(void) { Suite *s = suite_create("gt_template_utils");