rna.cpp 1.92 KB
#include <utility>
#include <vector>
#include <string>
#include <iostream>

#include <boost/algorithm/string.hpp>

#include "rna.h"

//typedef std::vector<int> VI;
//typedef std::vector<VI> VVI;
//typedef std::vector<std::pair<int,int> > VII;
typedef std::vector<float> VF;
typedef std::vector<VF> VVF;


Rna::Rna(){}

Rna::Rna(const std::string &name, const std::string &seq)
{
     name_ = name;
     seq_ = seq;
     n_ = uint(seq_.size());
}

Rna::Rna(const std::string &name, const std::string &seq, unsigned int id)
{
    name_ = name;
    seq_ = seq;
    n_ = uint(seq_.size());
    id_ = id;
}

Rna::~Rna()
{
}

unsigned int Rna::get_n_() const
{
    return n_;
}

std::string Rna::get_name_() const
{
    return name_;
}

std::string Rna::get_seq_() const
{
    return seq_;
}

unsigned int Rna::get_id_() const
{
    return id_;
}

std::vector < float > Rna::get_probingData_() const
{
    return probingData_;
}

void Rna::set_name_(const std::string &name)
{
    name_ = name;
}

void Rna::set_id_(unsigned int id)
{
    id_ = id;
}

void Rna::set_probingData_(const std::vector < float > &probingData)
{
    probingData_ = probingData;
}

bool Rna::check_seq(const std::string &seq)
{
    bool res = true;
    for(unsigned int i = 0; i< seq.size(); i++){
        if( seq[i] != 'A' && seq[i] != 'U' && seq[i] != 'C' && seq[i] != 'G'
                && seq[i] != 'I' && seq[i] != 'Q' && seq[i] != 'D' && seq[i] != 'T'
                && seq[i] != 'S' && seq[i] != 'X' && seq[i] != 'B' && seq[i] != 'O'
                && seq[i] != 'N' && seq[i] != 'R' && seq[i] != 'Y' ){
            res = false;
            break;
        }
    }
    return res;
}

std::string Rna::format(std::string seq)
{
    boost::to_upper(seq);
    std::replace(seq.begin(), seq.end(), 'T', 'U');
    return seq;
}

std::string Rna::chg_seq_sens()
{
    std::string str = seq_;
    for(unsigned int i = n_, j = 0; j <= n_; i--, j++)
        str[i] = seq_[j];
    return str;
}