00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 #ifndef CGATOOLS_VARIANTS_CALLDIFFRESULT_HPP_
00016 #define CGATOOLS_VARIANTS_CALLDIFFRESULT_HPP_ 1
00017 
00019 
00020 #include "cgatools/core.hpp"
00021 #include "cgatools/variants/Call.hpp"
00022 
00023 namespace cgatools { namespace variants {
00024 
00026     struct CallDiffResult
00027     {
00030         enum MatchType
00031         {
00032             REF_IDENTICAL   = 0, 
00033             ALT_IDENTICAL   = 1, 
00034             REF_CONSISTENT  = 2, 
00035             ALT_CONSISTENT  = 3, 
00036             ONLY_A          = 4, 
00037             ONLY_B          = 5, 
00038             MISMATCH        = 6, 
00039             PHASE_MISMATCH  = 7, 
00040             PLOIDY_MISMATCH = 8, 
00041             MATCH_TYPE_LAST = 9
00042         };
00043 
00047         static MatchType mergeMatchTypes(MatchType mtA, MatchType mtB);
00048 
00050         static const char* getMatchTypeString(MatchType mt);
00051 
00054         static std::string getMatchTypeString(const std::vector<MatchType>& mt);
00055 
00059         static std::string getSimpleMatchTypeString(const std::vector<MatchType>& mt);
00060 
00063         size_t lhsOffset_;
00064 
00067         size_t rhsOffset_;
00068 
00070         std::vector<MatchType> matchType_;
00071 
00074         boost::array<std::vector< std::vector< std::pair<MatchType, const Call*> > >, 2> callClass_;
00075 
00077         std::vector<size_t> perm_;
00078     };
00079 
00080 } } 
00081 
00082 #endif // CGATOOLS_VARIANTS_CALLDIFFRESULT_HPP_