@@ -37,13 +37,12 @@ void samtoramntuple(const char *datafile,
3737 RAMNTupleRecord::InitializeRefs ();
3838
3939 auto model = RAMNTupleRecord::MakeModel ();
40-
40+
4141 ROOT::RNTupleWriteOptions writeOptions;
4242 writeOptions.SetCompression (compression_algorithm);
4343 writeOptions.SetMaxUnzippedPageSize (64000 );
44-
45- auto writer = ROOT::RNTupleWriter::Append (
46- std::move (model), " RAM" , *rootFile, writeOptions);
44+
45+ auto writer = ROOT::RNTupleWriter::Append (std::move (model), " RAM" , *rootFile, writeOptions);
4746 auto defaultEntry = writer->GetModel ().CreateEntry ();
4847 auto recordPtr = defaultEntry->GetPtr <RAMNTupleRecord>(" record" );
4948
@@ -66,35 +65,34 @@ void samtoramntuple(const char *datafile,
6665 }
6766 }
6867 };
69-
70- auto record_callback = [&](const ramcore::SamRecord& sam_record, size_t record_num) {
71- recordPtr->SetBit (quality_policy);
72-
73- recordPtr->SetQNAME (sam_record.qname .c_str ());
74- recordPtr->SetFLAG (sam_record.flag );
75- recordPtr->SetREFID (sam_record.rname .c_str ());
76- recordPtr->SetPOS (sam_record.pos );
77- recordPtr->SetMAPQ (sam_record.mapq );
78- recordPtr->SetCIGAR (sam_record.cigar .c_str ());
79- recordPtr->SetREFNEXT (sam_record.rnext .c_str ());
80- recordPtr->SetPNEXT (sam_record.pnext );
81- recordPtr->SetTLEN (sam_record.tlen );
82- recordPtr->SetSEQ (sam_record.seq .c_str ());
83- recordPtr->SetQUAL (sam_record.qual .c_str ());
84-
85- recordPtr->ResetNOPT ();
86- for (const auto & opt : sam_record.optional_fields ) {
87- recordPtr->SetOPT (opt.c_str ());
88- }
89-
90- writer->Fill (*defaultEntry);
91-
92- if (index && record_num % 1000 == 0 ) {
93- RAMNTupleRecord::GetIndex ()->AddItem (recordPtr->GetREFID (),
94- recordPtr->GetPOS () - 1 , record_num);
95- }
68+
69+ auto record_callback = [&](const ramcore::SamRecord &sam_record, size_t record_num) {
70+ recordPtr->SetBit (quality_policy);
71+
72+ recordPtr->SetQNAME (sam_record.qname .c_str ());
73+ recordPtr->SetFLAG (sam_record.flag );
74+ recordPtr->SetREFID (sam_record.rname .c_str ());
75+ recordPtr->SetPOS (sam_record.pos );
76+ recordPtr->SetMAPQ (sam_record.mapq );
77+ recordPtr->SetCIGAR (sam_record.cigar .c_str ());
78+ recordPtr->SetREFNEXT (sam_record.rnext .c_str ());
79+ recordPtr->SetPNEXT (sam_record.pnext );
80+ recordPtr->SetTLEN (sam_record.tlen );
81+ recordPtr->SetSEQ (sam_record.seq .c_str ());
82+ recordPtr->SetQUAL (sam_record.qual .c_str ());
83+
84+ recordPtr->ResetNOPT ();
85+ for (const auto &opt : sam_record.optional_fields ) {
86+ recordPtr->SetOPT (opt.c_str ());
87+ }
88+
89+ writer->Fill (*defaultEntry);
90+
91+ if (index && record_num % 1000 == 0 ) {
92+ RAMNTupleRecord::GetIndex ()->AddItem (recordPtr->GetREFID (), recordPtr->GetPOS () - 1 , record_num);
93+ }
9694 };
97-
95+
9896 if (!parser.ParseFile (datafile, header_callback, record_callback)) {
9997 printf (" Failed to parse SAM file %s\n " , datafile);
10098 return ;
@@ -127,11 +125,8 @@ void samtoramntuple(const char *datafile,
127125 stopwatch.Print ();
128126}
129127
130- void samtoramntuple_split_by_chromosome (const char *datafile,
131- const char *output_prefix,
132- int compression_algorithm,
133- uint32_t quality_policy,
134- int num_threads)
128+ void samtoramntuple_split_by_chromosome (const char *datafile, const char *output_prefix, int compression_algorithm,
129+ uint32_t quality_policy, int num_threads)
135130{
136131 ROOT::EnableThreadSafety ();
137132 RAMNTupleRecord::InitializeRefs ();
@@ -175,7 +170,7 @@ void samtoramntuple_split_by_chromosome(const char *datafile,
175170 for (const auto & [chr, records] : chromosome_records) {
176171 chr_names.push_back (chr);
177172 }
178-
173+
179174 auto write_chromosome = [&](const std::string& chr) {
180175 const auto & records = chromosome_records[chr];
181176
@@ -187,9 +182,8 @@ void samtoramntuple_split_by_chromosome(const char *datafile,
187182 ROOT::RNTupleWriteOptions writeOptions;
188183 writeOptions.SetCompression (compression_algorithm);
189184 writeOptions.SetMaxUnzippedPageSize (128000 );
190-
191- auto writer = ROOT::RNTupleWriter::Append (
192- std::move (model), " RAM" , *file, writeOptions);
185+
186+ auto writer = ROOT::RNTupleWriter::Append (std::move (model), " RAM" , *file, writeOptions);
193187 auto entry = writer->GetModel ().CreateEntry ();
194188 auto recordPtr = entry->GetPtr <RAMNTupleRecord>(" record" ).get ();
195189
@@ -225,7 +219,7 @@ void samtoramntuple_split_by_chromosome(const char *datafile,
225219
226220 RAMNTupleRecord::WriteAllRefs (*file);
227221 h.Write ();
228-
222+
229223 file->Close ();
230224 file.reset ();
231225 };
0 commit comments