Mercurial > repos > vipints > rdiff
diff rDiff/mex/read.h @ 0:0f80a5141704
version 0.3 uploaded
author | vipints |
---|---|
date | Thu, 14 Feb 2013 23:38:36 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rDiff/mex/read.h Thu Feb 14 23:38:36 2013 -0500 @@ -0,0 +1,72 @@ +/* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 3 of the License, or +* (at your option) any later version. +* +* Written (W) 2010-2011 Jonas Behr, Regina Bohnert, Gunnar Raetsch +* Copyright (C) 2010-2011 Max Planck Society +*/ + + +#ifndef __READ_H__ +#define __READ_H__ + +#include <stdint.h> +#include <cctype> +#include <stdio.h> +#include <vector> + using std::vector; + + +class CRead { + public: + /** constructor + */ + CRead(); + ~CRead(); + + vector<int> block_starts; + vector<int> block_lengths; + char* read_id; + char* sam_line; + int start_pos; + char * strand; + int matches; + int mismatches; + int multiple_alignment_index; + bool left; + bool right; + bool reverse; + + void get_coverage(int p_start_pos, int p_end_pos, uint32_t* coverage); + int get_last_position(); + void get_reads_sparse(int p_start_pos, int p_end_pos, double* reads, uint32_t & reads_c, uint32_t row_idx); + void get_introns(vector<int>* introns); + void get_introns(vector<uint32_t>* intron_starts, vector<uint32_t>* intron_ends, vector<uint32_t>* block_len1, vector<uint32_t>* block_len2); + void get_acc_splice_sites(vector<int>* acc_pos); + void get_don_splice_sites(vector<int>* acc_pos); + int max_intron_len(); + int min_exon_len(); + bool operator==(const CRead& read) const; + void print(); + void set_strand(char s); + int get_mismatches(); + static bool compare_by_read_id(const CRead* read1, const CRead* read2) + { + if (!read1->read_id) + return true; + if (!read2->read_id) + return false; + + int cnt1=0; + while (read1->read_id[cnt1]!='\0') + cnt1++; + int cnt2 = 0; + while (read2->read_id[cnt2]!='\0') + cnt2++; + + return std::lexicographical_compare(read1->read_id,read1->read_id+cnt1,read2->read_id,read2->read_id+cnt2); + }; +}; +#endif