All Downloads are FREE. Search and download functionalities are using the official Maven repository.

htsjdk.samtools.cram.structure.DataSeries Maven / Gradle / Ivy

/**
 * ****************************************************************************
 * Copyright 2013 EMBL-EBI
 * 

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **************************************************************************** */ package htsjdk.samtools.cram.structure; import htsjdk.samtools.cram.CRAMException; import java.util.Collections; import java.util.Map; import java.util.Optional; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; /** * Represents a specific CRAM record data series and its associated type and unique Content ID */ public enum DataSeries { // in rough encoding/decoding order, by group // Main BF_BitFlags (DataSeriesType.INT, "BF", 1), CF_CompressionBitFlags (DataSeriesType.INT, "CF", 2), // Positional RI_RefId (DataSeriesType.INT, "RI", 3), RL_ReadLength (DataSeriesType.INT, "RL", 4), AP_AlignmentPositionOffset (DataSeriesType.INT, "AP", 5), RG_ReadGroup (DataSeriesType.INT, "RG", 6), // Read Name RN_ReadName (DataSeriesType.BYTE_ARRAY, "RN", 7), // Mate Record NF_RecordsToNextFragment (DataSeriesType.INT, "NF", 8), MF_MateBitFlags (DataSeriesType.INT, "MF", 9), NS_NextFragmentReferenceSequenceID (DataSeriesType.INT, "NS", 10), NP_NextFragmentAlignmentStart (DataSeriesType.INT, "NP", 11), TS_InsertSize (DataSeriesType.INT, "TS", 12), // Auxiliary Tags TL_TagIdList (DataSeriesType.INT, "TL", 13), TC_TagCount (DataSeriesType.INT, "TC", 14), TN_TagNameAndType (DataSeriesType.INT, "TN", 15), // Mapped Reads MQ_MappingQualityScore (DataSeriesType.INT, "MQ", 16), // Read Feature Records FN_NumberOfReadFeatures (DataSeriesType.INT, "FN", 17), FP_FeaturePosition (DataSeriesType.INT, "FP", 18), FC_FeatureCode (DataSeriesType.BYTE, "FC", 19), // Read Feature Codes BB_bases (DataSeriesType.BYTE_ARRAY, "BB", 20), QQ_scores (DataSeriesType.BYTE_ARRAY, "QQ", 21), BA_Base (DataSeriesType.BYTE, "BA", 22), QS_QualityScore (DataSeriesType.BYTE, "QS", 23), BS_BaseSubstitutionCode (DataSeriesType.BYTE, "BS", 24), IN_Insertion (DataSeriesType.BYTE_ARRAY, "IN", 25), DL_DeletionLength (DataSeriesType.INT, "DL", 26), RS_RefSkip (DataSeriesType.INT, "RS", 27), SC_SoftClip (DataSeriesType.BYTE_ARRAY, "SC", 28), PD_padding (DataSeriesType.INT, "PD", 29), HC_HardClip (DataSeriesType.INT, "HC", 30), // For Testing Only TM_TestMark (DataSeriesType.INT, "TM", 31), TV_TestMark (DataSeriesType.INT, "TV", 32); private final DataSeriesType type; private final String canonicalName; private final Integer externalBlockContentId; DataSeries(final DataSeriesType type, final String name, final Integer contentId) { this.type = type; this.canonicalName = name; this.externalBlockContentId = contentId; } public DataSeriesType getType() { return type; } public String getCanonicalName() { return canonicalName; } public Integer getExternalBlockContentId() { return externalBlockContentId; } /** * Return the DataSeries associated with the two-character canonical name * * @param dataSeriesAbbreviation A Data Series canonical name, such as QS for Quality Score * @return the associated DataSeries * @throws CRAMException for an unknown Data Series */ public static DataSeries byCanonicalName(final String dataSeriesAbbreviation) { if (dataSeriesAbbreviation.length() != 2) { throw new CRAMException("Data Series Canonical Name should be exactly two characters: " + dataSeriesAbbreviation); } return Optional.ofNullable(CANONICAL_NAME_MAP.get(dataSeriesAbbreviation)) .orElseThrow(() -> new CRAMException("Could not find Data Series Encoding for: " + dataSeriesAbbreviation)); } private static final Map CANONICAL_NAME_MAP = Collections.unmodifiableMap(Stream.of(DataSeries.values()) .collect(Collectors.toMap(DataSeries::getCanonicalName, Function.identity()))); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy