|
'ElMo-Knock'
|
00001 #include "metabolicnetwork.h" 00002 #include "ufes.h" 00003 #include "rk.h" 00004 00005 #include <iostream> 00006 00007 using namespace std; 00008 00009 00010 00011 #ifndef ENUM_EFF_KNOCKS_H 00012 #define ENUM_EFF_KNOCKS_H 00013 00018 class EnumEffKnocks { 00019 private: 00020 const static int max_ufes_length=100; 00021 int max_rk_length; 00022 int max_rk_cands; 00023 MetabolicNetwork *metab_network; 00025 map<string,UFES> ufes_map; 00026 map<string,RK> erk_map; 00027 string erk_fname; 00028 00029 double portion_time; 00030 double erk_enum_time,ufes_enum_time; 00031 00032 public: 00033 EnumEffKnocks(); 00034 EnumEffKnocks(MetabolicNetwork *metab_network); 00035 00036 void enum_ufes(); //populate ufes member variable 00037 void enum_ufes_from_single(long ind); 00038 void enum_erk(); 00039 void enum_erk_direct(); 00040 void enum_erk_from_single_ufes(UFES ufes); 00041 00042 double get_erk_enum_time() { return this->erk_enum_time;} 00043 double get_ufes_enum_time() { return this->ufes_enum_time;} 00044 map<string,UFES>& get_ufes_map() { return this->ufes_map;} 00045 map<string,RK>& get_erk_map() { return this->erk_map;} 00046 void set_erk_enum_time(double new_erk_enum_time) { this->erk_enum_time=new_erk_enum_time;} 00047 void set_ufes_enum_time(double new_ufes_enum_time) { this->ufes_enum_time=new_ufes_enum_time;} 00048 00049 00050 bool can_collapse_ineff_modes(vector<int> reac_knockout); 00051 00052 void print_ufes(string ufes_fname); 00053 void print_erk(string erk_fname); 00054 int reacs_for_knock(UFES ufes, vector<int> &avail_reacs); 00055 00056 int is_fes(vector<long> efm_indices); 00057 long collapse_ems(RK rk, vector<long> ems_to_collapse, vector<long>& uncollapsed_ems); 00058 int is_all_ems_collapsed(RK rk, vector<long> ems_to_collapse); 00059 00060 int compute_ranks_vector(UFES v, long range_start, long range_end, multimap<int,long>& ranked_efms); 00061 int compute_ranks_vector_bitwise(UFES v, long range_start, long range_end, multimap<int,long>& ranked_efms,vector<unsigned char> &bit_sets_table256) ; 00062 int compute_rank(vector<long> efm_indices,long cand_efm_index); 00063 int compute_reac_rank(map<int,string> reac_knocks, int reac, vector<long>& uncollapsed_ems); 00064 double rank_reac_for_direct_enumeration(map<int,string> reac_knocks, int reac, vector<long>& remain_ineff_efm_indices,vector<long>& remain_eff_efm_indices); 00065 00066 int communicate_ufes_map(); 00067 int communicate_erk_map(); 00068 00069 00070 }; 00071 #endif