noodles_cram/container/compression_header/
data_series_encodings.rs1pub(crate) mod data_series;
4
5pub use self::data_series::DataSeries;
6
7use super::{
8 encoding::codec::{Byte, ByteArray, Integer},
9 Encoding,
10};
11use crate::container::block;
12
13#[derive(Clone, Debug, Default, Eq, PartialEq)]
15pub(crate) struct DataSeriesEncodings {
16 pub(crate) bam_flags: Option<Encoding<Integer>>,
17 pub(crate) cram_flags: Option<Encoding<Integer>>,
18 pub(crate) reference_sequence_ids: Option<Encoding<Integer>>,
19 pub(crate) read_lengths: Option<Encoding<Integer>>,
20 pub(crate) alignment_starts: Option<Encoding<Integer>>,
21 pub(crate) read_group_ids: Option<Encoding<Integer>>,
22 pub(crate) names: Option<Encoding<ByteArray>>,
23 pub(crate) mate_flags: Option<Encoding<Integer>>,
24 pub(crate) mate_reference_sequence_ids: Option<Encoding<Integer>>,
25 pub(crate) mate_alignment_starts: Option<Encoding<Integer>>,
26 pub(crate) template_lengths: Option<Encoding<Integer>>,
27 pub(crate) mate_distances: Option<Encoding<Integer>>,
28 pub(crate) tag_set_ids: Option<Encoding<Integer>>,
29 pub(crate) feature_counts: Option<Encoding<Integer>>,
30 pub(crate) feature_codes: Option<Encoding<Byte>>,
31 pub(crate) feature_position_deltas: Option<Encoding<Integer>>,
32 pub(crate) deletion_lengths: Option<Encoding<Integer>>,
33 pub(crate) stretches_of_bases: Option<Encoding<ByteArray>>,
34 pub(crate) stretches_of_quality_scores: Option<Encoding<ByteArray>>,
35 pub(crate) base_substitution_codes: Option<Encoding<Byte>>,
36 pub(crate) insertion_bases: Option<Encoding<ByteArray>>,
37 pub(crate) reference_skip_lengths: Option<Encoding<Integer>>,
38 pub(crate) padding_lengths: Option<Encoding<Integer>>,
39 pub(crate) hard_clip_lengths: Option<Encoding<Integer>>,
40 pub(crate) soft_clip_bases: Option<Encoding<ByteArray>>,
41 pub(crate) mapping_qualities: Option<Encoding<Integer>>,
42 pub(crate) bases: Option<Encoding<Byte>>,
43 pub(crate) quality_scores: Option<Encoding<Byte>>,
44}
45
46impl DataSeriesEncodings {
47 pub fn bam_flags(&self) -> Option<&Encoding<Integer>> {
48 self.bam_flags.as_ref()
49 }
50
51 pub fn cram_flags(&self) -> Option<&Encoding<Integer>> {
52 self.cram_flags.as_ref()
53 }
54
55 pub fn reference_sequence_ids(&self) -> Option<&Encoding<Integer>> {
56 self.reference_sequence_ids.as_ref()
57 }
58
59 pub fn read_lengths(&self) -> Option<&Encoding<Integer>> {
60 self.read_lengths.as_ref()
61 }
62
63 pub fn alignment_starts(&self) -> Option<&Encoding<Integer>> {
64 self.alignment_starts.as_ref()
65 }
66
67 pub fn read_group_ids(&self) -> Option<&Encoding<Integer>> {
68 self.read_group_ids.as_ref()
69 }
70
71 pub fn names(&self) -> Option<&Encoding<ByteArray>> {
72 self.names.as_ref()
73 }
74
75 pub fn mate_flags(&self) -> Option<&Encoding<Integer>> {
76 self.mate_flags.as_ref()
77 }
78
79 pub fn mate_reference_sequence_ids(&self) -> Option<&Encoding<Integer>> {
80 self.mate_reference_sequence_ids.as_ref()
81 }
82
83 pub fn mate_alignment_starts(&self) -> Option<&Encoding<Integer>> {
84 self.mate_alignment_starts.as_ref()
85 }
86
87 pub fn template_lengths(&self) -> Option<&Encoding<Integer>> {
88 self.template_lengths.as_ref()
89 }
90
91 pub fn mate_distances(&self) -> Option<&Encoding<Integer>> {
92 self.mate_distances.as_ref()
93 }
94
95 pub fn tag_set_ids(&self) -> Option<&Encoding<Integer>> {
96 self.tag_set_ids.as_ref()
97 }
98
99 pub fn feature_counts(&self) -> Option<&Encoding<Integer>> {
100 self.feature_counts.as_ref()
101 }
102
103 pub fn feature_codes(&self) -> Option<&Encoding<Byte>> {
104 self.feature_codes.as_ref()
105 }
106
107 pub fn feature_position_deltas(&self) -> Option<&Encoding<Integer>> {
108 self.feature_position_deltas.as_ref()
109 }
110
111 pub fn deletion_lengths(&self) -> Option<&Encoding<Integer>> {
112 self.deletion_lengths.as_ref()
113 }
114
115 pub fn stretches_of_bases(&self) -> Option<&Encoding<ByteArray>> {
116 self.stretches_of_bases.as_ref()
117 }
118
119 pub fn stretches_of_quality_scores(&self) -> Option<&Encoding<ByteArray>> {
120 self.stretches_of_quality_scores.as_ref()
121 }
122
123 pub fn base_substitution_codes(&self) -> Option<&Encoding<Byte>> {
124 self.base_substitution_codes.as_ref()
125 }
126
127 pub fn insertion_bases(&self) -> Option<&Encoding<ByteArray>> {
128 self.insertion_bases.as_ref()
129 }
130
131 pub fn reference_skip_lengths(&self) -> Option<&Encoding<Integer>> {
132 self.reference_skip_lengths.as_ref()
133 }
134
135 pub fn padding_lengths(&self) -> Option<&Encoding<Integer>> {
136 self.padding_lengths.as_ref()
137 }
138
139 pub fn hard_clip_lengths(&self) -> Option<&Encoding<Integer>> {
140 self.hard_clip_lengths.as_ref()
141 }
142
143 pub fn soft_clip_bases(&self) -> Option<&Encoding<ByteArray>> {
144 self.soft_clip_bases.as_ref()
145 }
146
147 pub fn mapping_qualities(&self) -> Option<&Encoding<Integer>> {
148 self.mapping_qualities.as_ref()
149 }
150
151 pub fn bases(&self) -> Option<&Encoding<Byte>> {
152 self.bases.as_ref()
153 }
154
155 pub fn quality_scores(&self) -> Option<&Encoding<Byte>> {
156 self.quality_scores.as_ref()
157 }
158
159 pub fn init() -> Self {
160 Self {
161 bam_flags: Some(Encoding::new(Integer::External {
162 block_content_id: block::ContentId::from(DataSeries::BamFlags),
163 })),
164 cram_flags: Some(Encoding::new(Integer::External {
165 block_content_id: block::ContentId::from(DataSeries::CramFlags),
166 })),
167 reference_sequence_ids: Some(Encoding::new(Integer::External {
168 block_content_id: block::ContentId::from(DataSeries::ReferenceSequenceIds),
169 })),
170 read_lengths: Some(Encoding::new(Integer::External {
171 block_content_id: block::ContentId::from(DataSeries::ReadLengths),
172 })),
173 alignment_starts: Some(Encoding::new(Integer::External {
174 block_content_id: block::ContentId::from(DataSeries::AlignmentStarts),
175 })),
176 read_group_ids: Some(Encoding::new(Integer::External {
177 block_content_id: block::ContentId::from(DataSeries::ReadGroupIds),
178 })),
179 names: Some(Encoding::new(ByteArray::ByteArrayStop {
180 stop_byte: 0x00,
181 block_content_id: block::ContentId::from(DataSeries::Names),
182 })),
183 mate_flags: Some(Encoding::new(Integer::External {
184 block_content_id: block::ContentId::from(DataSeries::MateFlags),
185 })),
186 mate_reference_sequence_ids: Some(Encoding::new(Integer::External {
187 block_content_id: block::ContentId::from(DataSeries::MateReferenceSequenceIds),
188 })),
189 mate_alignment_starts: Some(Encoding::new(Integer::External {
190 block_content_id: block::ContentId::from(DataSeries::MateAlignmentStarts),
191 })),
192 template_lengths: Some(Encoding::new(Integer::External {
193 block_content_id: block::ContentId::from(DataSeries::TemplateLengths),
194 })),
195 mate_distances: Some(Encoding::new(Integer::External {
196 block_content_id: block::ContentId::from(DataSeries::MateDistances),
197 })),
198 tag_set_ids: Some(Encoding::new(Integer::External {
199 block_content_id: block::ContentId::from(DataSeries::TagSetIds),
200 })),
201 feature_counts: Some(Encoding::new(Integer::External {
202 block_content_id: block::ContentId::from(DataSeries::FeatureCounts),
203 })),
204 feature_codes: Some(Encoding::new(Byte::External {
205 block_content_id: block::ContentId::from(DataSeries::FeatureCodes),
206 })),
207 feature_position_deltas: Some(Encoding::new(Integer::External {
208 block_content_id: block::ContentId::from(DataSeries::FeaturePositionDeltas),
209 })),
210 deletion_lengths: Some(Encoding::new(Integer::External {
211 block_content_id: block::ContentId::from(DataSeries::DeletionLengths),
212 })),
213 stretches_of_bases: Some(Encoding::new(ByteArray::ByteArrayStop {
214 stop_byte: 0x00,
215 block_content_id: block::ContentId::from(DataSeries::StretchesOfBases),
216 })),
217 stretches_of_quality_scores: Some(Encoding::new(ByteArray::ByteArrayLength {
218 len_encoding: Encoding::new(Integer::External {
219 block_content_id: block::ContentId::from(DataSeries::StretchesOfQualityScores),
220 }),
221 value_encoding: Encoding::new(Byte::External {
222 block_content_id: block::ContentId::from(DataSeries::StretchesOfQualityScores),
223 }),
224 })),
225 base_substitution_codes: Some(Encoding::new(Byte::External {
226 block_content_id: block::ContentId::from(DataSeries::BaseSubstitutionCodes),
227 })),
228 insertion_bases: Some(Encoding::new(ByteArray::ByteArrayStop {
229 stop_byte: 0x00,
230 block_content_id: block::ContentId::from(DataSeries::InsertionBases),
231 })),
232 reference_skip_lengths: Some(Encoding::new(Integer::External {
233 block_content_id: block::ContentId::from(DataSeries::ReferenceSkipLengths),
234 })),
235 padding_lengths: Some(Encoding::new(Integer::External {
236 block_content_id: block::ContentId::from(DataSeries::PaddingLengths),
237 })),
238 hard_clip_lengths: Some(Encoding::new(Integer::External {
239 block_content_id: block::ContentId::from(DataSeries::HardClipLengths),
240 })),
241 soft_clip_bases: Some(Encoding::new(ByteArray::ByteArrayStop {
242 stop_byte: 0x00,
243 block_content_id: block::ContentId::from(DataSeries::SoftClipBases),
244 })),
245 mapping_qualities: Some(Encoding::new(Integer::External {
246 block_content_id: block::ContentId::from(DataSeries::MappingQualities),
247 })),
248 bases: Some(Encoding::new(Byte::External {
249 block_content_id: block::ContentId::from(DataSeries::Bases),
250 })),
251 quality_scores: Some(Encoding::new(Byte::External {
252 block_content_id: block::ContentId::from(DataSeries::QualityScores),
253 })),
254 }
255 }
256}