double gc_content(unsigned char *seq, int a, int b) { double sum = 0.0, gc = 0.0; int i; for(i = a; i <= b; i++) { if(is_g(seq, i) == 1 || is_c(seq, i) == 1) gc++; sum++; } return gc/sum; }
Eigen::VectorXd operator()(const F& obj, Eigen::VectorXd x) const{ Eigen::VectorXd g, gnew, d, y, xold, s; Eigen::MatrixXd H, G; size_t n = x.size(); lbfgs::minimizer<Real> minizer(n); lbfgs::traditional_convergence_test<Real> is_c(n); for(;;){ Real f = obj(x); obj(x, g); if(minizer.run(x.data(), f, g.data())) continue; if(is_c(x.data(), g.data())) break; if(minizer.nfun() > 5000 * n) break; } return x; }
bool operator()(InputIterator &next, InputIterator end, Token &tok) { bool bInQuote = false; tok = Token(); if (next == end) { return false; } while (next != end) { if (is_escape(*next)) { do_escape(next, end, tok); } else if (is_c(*next)) { if (!bInQuote) { do { ++next; } while (next != end && is_c(*next)); if (tok.empty()) { if (next == end) { return false; } continue; } return true; } else { tok += *next; } } else if (is_quote(*next)) { bInQuote = !bInQuote; } else { tok += *next; } ++next; } if (bInQuote) { throw boost::escaped_list_error( std::string("incomplete quoted argument") ); } return true; }
void do_escape(Iterator &next, Iterator end, Token &tok) { if (++next == end) { throw boost::escaped_list_error( std::string("cannot end with escape") ); } else if (Traits::eq(*next, 'n')) { tok += '\n'; } else if (is_quote(*next)) { tok += *next; } else if (is_c(*next)) { tok += *next; } else if (is_escape(*next)) { tok += *next; } else { throw boost::escaped_list_error( std::string("unknown escape sequence") ); } }
int is_stop(unsigned char *seq, int n, struct _training *tinf) { /* TAG */ if(is_t(seq, n) == 1 && is_a(seq, n+1) == 1 && is_g(seq, n+2) == 1) { if(tinf->trans_table == 6 || tinf->trans_table == 15 || tinf->trans_table == 16 || tinf->trans_table == 22) return 0; return 1; } /* TGA */ if(is_t(seq, n) == 1 && is_g(seq, n+1) == 1 && is_a(seq, n+2) == 1) { if((tinf->trans_table >= 2 && tinf->trans_table <= 5) || tinf->trans_table == 9 || tinf->trans_table == 10 || tinf->trans_table == 13 || tinf->trans_table == 14 || tinf->trans_table == 21) return 0; return 1; } /* TAA */ if(is_t(seq, n) == 1 && is_a(seq, n+1) == 1 && is_a(seq, n+2) == 1) { if(tinf->trans_table == 6 || tinf->trans_table == 14) return 0; return 1; } /* Code 2 */ if(tinf->trans_table == 2 && is_a(seq, n) == 1 && is_g(seq, n+1) == 1 && is_a(seq, n+2) == 1) return 1; if(tinf->trans_table == 2 && is_a(seq, n) == 1 && is_g(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 1; /* Code 22 */ if(tinf->trans_table == 22 && is_t(seq, n) == 1 && is_c(seq, n+1) == 1 && is_a(seq, n+2) == 1) return 1; /* Code 23 */ if(tinf->trans_table == 23 && is_t(seq, n) == 1 && is_t(seq, n+1) == 1 && is_a(seq, n+2) == 1) return 1; return 0; }
bool operator()(InputIterator& next,InputIterator end,Token& tok) { bool bInQuote = false; tok = Token(); if (next == end) { if (last_) { last_ = false; return true; } else return false; } last_ = false; for (;next != end;++next) { if (is_escape(*next)) { do_escape(next,end,tok); } else if (is_c(*next)) { if (!bInQuote) { // If we are not in quote, then we are done ++next; // The last character was a c, that means there is // 1 more blank field last_ = true; return true; } else tok+=*next; } else if (is_quote(*next)) { bInQuote=!bInQuote; } else { tok += *next; } } return true; }
//====================================================================== bool sccan_point_pair_handler:: is_string_a_sccan_run_config(std::string line){ if(verbosity){ std::cout<<"sccan_point_pair_handler -> "; std::cout<<"is_string_a_sccan_run_config() -> line: "; std::cout<<line<<std::endl; } // use DEAs for the std::string control // find enum TokenT{ digit, point, underscore, char_c, char_f, char_g, char_s, char_a, char_n, ERR }; int GetState[][23] ={ //dig point under c f g s a n { 1, -1, -1, -1, -1, -1, -1, -1, -1 }, //0 d { 2, -1, -1, -1, -1, -1, -1, -1, -1 }, //1 d { 3, -1, -1, -1, -1, -1, -1, -1, -1 }, //2 d { 4, -1, -1, -1, -1, -1, -1, -1, -1 }, //3 d { 5, -1, -1, -1, -1, -1, -1, -1, -1 }, //4 d { 6, -1, -1, -1, -1, -1, -1, -1, -1 }, //5 d { 7, -1, -1, -1, -1, -1, -1, -1, -1 }, //6 d { 8, -1, -1, -1, -1, -1, -1, -1, -1 }, //7 d { -1, -1, 9, -1, -1, -1, -1, -1, -1 }, //8 _ { 10, -1, -1, -1, -1, -1, -1, -1, -1 }, //9 d { 11, -1, -1, -1, -1, -1, -1, -1, -1 }, //10 d { 12, -1, -1, -1, -1, -1, -1, -1, -1 }, //11 d { 13, -1, -1, -1, -1, -1, -1, -1, -1 }, //12 d { -1, -1, 14, -1, -1, -1, -1, -1, -1 }, //13 _ { -1, -1, -1, -1, -1, -1, 15, -1, -1 }, //14 s { -1, -1, -1, 16, -1, -1, -1, -1, -1 }, //15 c { -1, -1, -1, 17, -1, -1, -1, -1, -1 }, //16 c { -1, -1, -1, -1, -1, -1, -1, 18, -1 }, //17 a { -1, -1, -1, -1, -1, -1, -1, -1, 19 }, //18 n { -1, -1, 20, -1, -1, -1, -1, -1, -1 }, //19 _ { 20, 21, -1, -1, -1, -1, -1, -1, -1 }, //20 d { -1, -1, -1, 22, -1, -1, -1, -1, -1 }, //21 . { -1, -1, -1, -1, 23, -1, -1, -1, -1 }, //22 c { -1, -1, -1, -1, -1, 24, -1, -1, -1 }, //23 f //24 g }; //for( int i=0; i<11;i++){std::cout<<"("<<i<<")"<<GetState[26][i]<<", ";} //std::cout<<std::endl; std::string ID; std::string tilt_x; std::string tilt_y; std::string tilt_z; std::string str_vec2D_x; std::string str_vec2D_y; int int_vec2D_count = 0; int state = 0; int char_number = 0; //std::cout<<"str laenge: "<<line.size()<<std::endl; while(state != -1 && char_number<line.size()){ TokenT token = ERR; char s = line.at( char_number); if(is_c(s)) token = char_c; if(is_f(s)) token = char_f; if(is_g(s)) token = char_g; if(is_s(s)) token = char_s; if(is_a(s)) token = char_a; if(is_n(s)) token = char_n; if(isdigit(s)) token = digit; //std::cout<<char(s)<<"==digit"<<std::endl;} if(is_point(s)) token = point; if(is_underscore(s)) token = underscore; //std::cout<<"check"<<char_number<<": "; //std::cout<<char(s)<<" state: "<<state<<" token: "<<token<<std::endl; state = (token == ERR) ? :GetState[state][token]; char_number ++; } if(state==24){return true;}else{return false;}; }
/* Returns a single amino acid for this position */ char amino(unsigned char *seq, int n, struct _training *tinf, int is_init) { if(is_stop(seq, n, tinf) == 1) return '*'; if(is_start(seq, n, tinf) == 1 && is_init == 1) return 'M'; if(is_t(seq, n) == 1 && is_t(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'F'; if(is_t(seq, n) == 1 && is_t(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'F'; if(is_t(seq, n) == 1 && is_t(seq, n+1) == 1 && is_a(seq, n+2) == 1) return 'L'; if(is_t(seq, n) == 1 && is_t(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 'L'; if(is_t(seq, n) == 1 && is_c(seq, n+1) == 1) return 'S'; if(is_t(seq, n) == 1 && is_a(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'Y'; if(is_t(seq, n) == 1 && is_a(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'Y'; if(is_t(seq, n) == 1 && is_a(seq, n+1) == 1 && is_a(seq, n+2) == 1) { if(tinf->trans_table == 6) return 'Q'; if(tinf->trans_table == 14) return 'Y'; } if(is_t(seq, n) == 1 && is_a(seq, n+1) == 1 && is_g(seq, n+2) == 1) { if(tinf->trans_table == 6 || tinf->trans_table == 15) return 'Q'; if(tinf->trans_table == 22) return 'L'; } if(is_t(seq, n) == 1 && is_g(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'C'; if(is_t(seq, n) == 1 && is_g(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'C'; if(is_t(seq, n) == 1 && is_g(seq, n+1) == 1 && is_a(seq, n+2) == 1) return 'W'; if(is_t(seq, n) == 1 && is_g(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 'W'; if(is_c(seq, n) == 1 && is_t(seq, n+1) == 1 && is_t(seq, n+2) == 1) { if(tinf->trans_table == 3) return 'T'; return 'L'; } if(is_c(seq, n) == 1 && is_t(seq, n+1) == 1 && is_c(seq, n+2) == 1) { if(tinf->trans_table == 3) return 'T'; return 'L'; } if(is_c(seq, n) == 1 && is_t(seq, n+1) == 1 && is_a(seq, n+2) == 1) { if(tinf->trans_table == 3) return 'T'; return 'L'; } if(is_c(seq, n) == 1 && is_t(seq, n+1) == 1 && is_g(seq, n+2) == 1) { if(tinf->trans_table == 3) return 'T'; if(tinf->trans_table == 12) return 'S'; return 'L'; } if(is_c(seq, n) == 1 && is_c(seq, n+1) == 1) return 'P'; if(is_c(seq, n) == 1 && is_a(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'H'; if(is_c(seq, n) == 1 && is_a(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'H'; if(is_c(seq, n) == 1 && is_a(seq, n+1) == 1 && is_a(seq, n+2) == 1) return 'Q'; if(is_c(seq, n) == 1 && is_a(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 'Q'; if(is_c(seq, n) == 1 && is_g(seq, n+1) == 1) return 'R'; if(is_a(seq, n) == 1 && is_t(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'I'; if(is_a(seq, n) == 1 && is_t(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'I'; if(is_a(seq, n) == 1 && is_t(seq, n+1) == 1 && is_a(seq, n+2) == 1) { if(tinf->trans_table == 2 || tinf->trans_table == 3 || tinf->trans_table == 5 || tinf->trans_table == 13 || tinf->trans_table == 21) return 'M'; return 'I'; } if(is_a(seq, n) == 1 && is_t(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 'M'; if(is_a(seq, n) == 1 && is_c(seq, n+1) == 1) return 'T'; if(is_a(seq, n) == 1 && is_a(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'N'; if(is_a(seq, n) == 1 && is_a(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'N'; if(is_a(seq, n) == 1 && is_a(seq, n+1) == 1 && is_a(seq, n+2) == 1) { if(tinf->trans_table == 9 || tinf->trans_table == 14 || tinf->trans_table == 21) return 'N'; return 'K'; } if(is_a(seq, n) == 1 && is_a(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 'K'; if(is_a(seq, n) == 1 && is_g(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'S'; if(is_a(seq, n) == 1 && is_g(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'S'; if(is_a(seq, n) == 1 && is_g(seq, n+1) == 1 && (is_a(seq, n+2) == 1 || is_g(seq, n+2) == 1)) { if(tinf->trans_table == 13) return 'G'; if(tinf->trans_table == 5 || tinf->trans_table == 9 || tinf->trans_table == 14 || tinf->trans_table == 21) return 'S'; return 'R'; } if(is_g(seq, n) == 1 && is_t(seq, n+1) == 1) return 'V'; if(is_g(seq, n) == 1 && is_c(seq, n+1) == 1) return 'A'; if(is_g(seq, n) == 1 && is_a(seq, n+1) == 1 && is_t(seq, n+2) == 1) return 'D'; if(is_g(seq, n) == 1 && is_a(seq, n+1) == 1 && is_c(seq, n+2) == 1) return 'D'; if(is_g(seq, n) == 1 && is_a(seq, n+1) == 1 && is_a(seq, n+2) == 1) return 'E'; if(is_g(seq, n) == 1 && is_a(seq, n+1) == 1 && is_g(seq, n+2) == 1) return 'E'; if(is_g(seq, n) == 1 && is_g(seq, n+1) == 1) return 'G'; return 'X'; }