File: sam_file_writing.cpp

package info (click to toggle)
seqan3 3.4.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 17,580 kB
  • sloc: cpp: 145,192; sh: 307; xml: 264; javascript: 95; makefile: 70; perl: 29; php: 15
file content (36 lines) | stat: -rw-r--r-- 1,345 bytes parent folder | download
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
// SPDX-FileCopyrightText: 2006-2025 Knut Reinert & Freie Universität Berlin
// SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik
// SPDX-License-Identifier: CC0-1.0

#include <seqan3/test/snippet/create_temporary_snippet_file.hpp>
// std::filesystem::current_path() / "out.sam" will be deleted after the execution
seqan3::test::create_temporary_snippet_file example_sam{"out.sam", ""};

//![main]
#include <seqan3/io/sam_file/all.hpp>

int main()
{
    using namespace seqan3::literals;

    auto filename = std::filesystem::current_path() / "out.sam";

    seqan3::sam_file_output fout{filename};

    using types = seqan3::type_list<std::vector<seqan3::dna5>, std::string, std::vector<seqan3::cigar>>;
    using fields = seqan3::fields<seqan3::field::seq, seqan3::field::id, seqan3::field::cigar>;
    using sam_record_type = seqan3::sam_record<types, fields>;

    // write the following to the file
    // r001	0	*	0	0	4M2I2M2D	*	0	0	ACGTACGT	*
    sam_record_type record{};
    record.id() = "r001";
    record.sequence() = "ACGTACGT"_dna5;
    record.cigar_sequence() = {{4, 'M'_cigar_operation},
                               {2, 'I'_cigar_operation},
                               {2, 'M'_cigar_operation},
                               {2, 'D'_cigar_operation}};

    fout.push_back(record);
}
//![main]