// -*- mode: c++; indent-tabs-mode: nil; -*- // // Copyright 2009 Illumina, Inc. // // This software is covered by the "Illumina Genome Analyzer Software // License Agreement" and the "Illumina Source Code License Agreement", // and certain third party copyright/licenses, and any user of this // source file is bound by the terms therein (see accompanying files // Illumina_Genome_Analyzer_Software_License_Agreement.pdf and // Illumina_Source_Code_License_Agreement.pdf and third party // copyright/license notices). // // /// \file #ifndef EXPORT_H #define EXPORT_H #include #include // Read type definitions const unsigned int RT_UNKOWN_ALN = 0; const unsigned int RT_SHADOW_ALN = 1; const unsigned int RT_GAPPED_ALN = 2; const unsigned int RT_POORLY_ALN = 3; // Define export field formats, hopefully this // won't change, but if it does, change it here const unsigned int EXP_MACHINE_NAME_IDX = 0; const unsigned int EXP_RUN_NUM_IDX = 1; const unsigned int EXP_LANE_NUM_IDX = 2; const unsigned int EXP_TILE_IDX = 3; const unsigned int EXP_XCORD_IDX = 4; const unsigned int EXP_YCORD_IDX = 5; const unsigned int EXP_INDEX_STR_IDX = 6; const unsigned int EXP_READ_NUM_IDX = 7; const unsigned int EXP_READ_IDX = 8; const unsigned int EXP_QUAL_STR_IDX = 9; const unsigned int EXP_MATCH_CHR_IDX = 10; const unsigned int EXP_MATCH_CONTIG_IDX = 11; const unsigned int EXP_MATCH_POS_IDX = 12; const unsigned int EXP_MATCH_STRAND_IDX = 13; const unsigned int EXP_MATCH_DESC_IDX = 14; const unsigned int EXP_SINGLE_ALN_IDX = 15; const unsigned int EXP_PAIRED_ALN_IDX = 16; const unsigned int EXP_PARTNER_CHR_IDX = 17; const unsigned int EXP_PARTNER_CONTIG_IDX = 18; const unsigned int EXP_PARTNER_OFFSET_IDX = 19; const unsigned int EXP_PARTNER_STRAND_IDX = 20; const unsigned int EXP_FILTER_IDX = 21; const unsigned int EXP_RANGE_START_IDX = 22; const unsigned int EXP_RANGE_END_IDX = 23; const unsigned int EXP_READ_TYPE_IDX = 24; // This is exactly what I was talking about // above regarding export file format changing // This format is for indel finding and is // prefix with range start and stop and then // follows with normal export format. There // is a different contstructor for this format // with a flag to tell the constructor its this // format const unsigned int EXP2_RANGE_START_IDX = 0; const unsigned int EXP2_RANGE_END_IDX = 1; const unsigned int EXP2_MACHINE_NAME_IDX = 2; const unsigned int EXP2_RUN_NUM_IDX = 3; const unsigned int EXP2_LANE_NUM_IDX = 4; const unsigned int EXP2_TILE_IDX = 5; const unsigned int EXP2_XCORD_IDX = 6; const unsigned int EXP2_YCORD_IDX = 7; const unsigned int EXP2_INDEX_STR_IDX = 8; const unsigned int EXP2_READ_NUM_IDX = 9; const unsigned int EXP2_READ_IDX = 10; const unsigned int EXP2_QUAL_STR_IDX = 11; const unsigned int EXP2_MATCH_CHR_IDX = 12; const unsigned int EXP2_MATCH_CONTIG_IDX = 13; const unsigned int EXP2_MATCH_POS_IDX = 14; const unsigned int EXP2_MATCH_STRAND_IDX = 15; const unsigned int EXP2_MATCH_DESC_IDX = 16; const unsigned int EXP2_SINGLE_ALN_IDX = 17; const unsigned int EXP2_PAIRED_ALN_IDX = 18; const unsigned int EXP2_PARTNER_CHR_IDX = 19; const unsigned int EXP2_PARTNER_CONTIG_IDX = 20; const unsigned int EXP2_PARTNER_OFFSET_IDX = 21; const unsigned int EXP2_PARTNER_STRAND_IDX = 22; const unsigned int EXP2_FILTER_IDX = 23; const unsigned int EXP2_READ_TYPE_IDX = 24; // Define export file types for the silly issue above const unsigned int EXPORT_TYPE_NORMAL = 0; const unsigned int EXPORT_TYPE_INDELFINDER = 1; // Exit codes const unsigned int EXIT_CODE_SUCCESS = 0; const unsigned int EXIT_CODE_FAILURE = 1; const unsigned int EXIT_CODE_INPUT = 2; const unsigned int EXIT_CODE_DESC = 3; class Export { public: // Standard export file constructor Export(const std::string& line, unsigned int expType = EXPORT_TYPE_NORMAL); // Special indel finder export2 constructor //Export(string line); ~Export() {} // // Access functions // const std::string& getMachineName() const { return(machineName); } unsigned getRunNum() const { return(runNum); } unsigned getLane() const { return(lane); } unsigned getTile() const { return(tile); } unsigned getXCord() const { return(xCord); } unsigned getYCord() const { return(yCord); } const std::string& getIndexStr() const { return(indexStr); } const std::string& getRead() const { return(read); } const std::string& getQualString() const { return(qualStr); } const std::string& getMatchChr() const { return(matchChr); } const std::string& getMatchContig() const { return(matchContig); } int getMatchStart() const { return(matchStart); } char getMatchStrand() const { return(matchStrand); } const std::string& getMatchDesc() const { return(matchDesc); } double getSingleAlnScore() const { return(singleAlnScore); } double getPairedAlnScore() const { return(pairedAlnScore); } const std::string& getPartnerChr() const { return(partnerChr); } const std::string& getPartnerContig() const { return(partnerContig); } int getPartnerOffset() const { return(partnerOffset); } const std::string& getPartnerStrand() const { return(partnerStrand); } char getFilterStatus() const { return(filterStatus); } unsigned getReadType() const { return(readType); } bool isPoorlyAligned() const { return (readType == RT_POORLY_ALN); } bool isShadow() const { return (readType == RT_SHADOW_ALN); } bool isGapped() const { return (readType == RT_GAPPED_ALN); } bool isUnkType() const { return (readType == RT_UNKOWN_ALN); } int getRangeStart() const { return(rangeStart); } int getRangeEnd() const { return(rangeEnd); } std::string toString(); // // Manipuation fucntions // void setMatchStart(unsigned int s) { // Update partner offset int delta = s - matchStart; partnerOffset -= delta; matchStart = s; } void setMatchDesc(const std::string& desc) { matchDesc = desc; } void setRangeStart(const int s) { rangeStart = s; } void setRangeEnd(const int e) { rangeEnd = e; } void setSingleAlnScore(const double s) { singleAlnScore = s; } void setPartnerOffset(const int o) { partnerOffset = o; } // // Auxillary functions (static) // static void forceOnlyACTGN(std::string& seq); static void stringToUpper(std::string& seq); static std::string complement(const std::string& seq); static std::string reverse(const std::string& seq); static void tsvToArray(const std::string& line, std::vector& data, char sep); private: std::string machineName; unsigned int runNum; unsigned int lane; unsigned int tile; unsigned int xCord; unsigned int yCord; std::string indexStr; unsigned int readNum; std::string read; std::string qualStr; std::string matchChr; std::string matchContig; int matchStart; char matchStrand; std::string matchDesc; double singleAlnScore; double pairedAlnScore; std::string partnerChr; std::string partnerContig; int partnerOffset; std::string partnerStrand; char filterStatus; int rangeStart; int rangeEnd; unsigned readType; // This defines the export format type // 0 = Normal format // 1 = Indel file format (prefix with range start and stop) unsigned int EXP_FORMAT_TYPE; }; #endif // END OF FILE