![]() |
OpenMS
2.4.0
|
Creates and maintains a boost graph based on the OpenMS ID datastructures. More...
#include <OpenMS/ANALYSIS/ID/IDBoostGraph.h>
Classes | |
class | dfs_ccsplit_visitor |
A boost dfs visitor that copies connected components into a vector of graphs. More... | |
class | LabelVisitor |
Visits nodes in the boost graph (ptrs to an ID Object) and depending on their type creates a label. More... | |
class | PrintAddressVisitor |
class | SetPosteriorVisitor |
Public Types | |
typedef boost::variant< ProteinHit *, ProteinGroup, PeptideCluster, Peptide, RunIndex, Charge, PeptideHit * > | IDPointer |
typedef boost::variant< const ProteinHit *, const ProteinGroup *, const PeptideCluster *, const Peptide, const RunIndex, const Charge, const PeptideHit * > | IDPointerConst |
typedef boost::adjacency_list< boost::setS, boost::vecS, boost::undirectedS, IDPointer > | Graph |
typedef std::vector< Graph > | Graphs |
typedef boost::adjacency_list< boost::setS, boost::vecS, boost::undirectedS, IDPointer > | GraphConst |
typedef boost::graph_traits< Graph >::vertex_descriptor | vertex_t |
typedef boost::graph_traits< Graph >::edge_descriptor | edge_t |
typedef boost::filtered_graph< Graph, boost::function< bool(edge_t)>, boost::function< bool(vertex_t)> > | FilteredGraph |
typedef std::set< IDBoostGraph::vertex_t > | ProteinNodeSet |
typedef std::set< IDBoostGraph::vertex_t > | PeptideNodeSet |
Public Member Functions | |
IDBoostGraph (ProteinIdentification &proteins, std::vector< PeptideIdentification > &idedSpectra) | |
Constructors. More... | |
IDBoostGraph (ProteinIdentification &proteins, std::vector< PeptideIdentification > &idedSpectra, const ExperimentalDesign &ed) | |
void | applyFunctorOnCCs (std::function< void(Graph &)> functor) |
Do sth on connected components (your functor object has to inherit from std::function) More... | |
void | applyFunctorOnCCsST (std::function< void(Graph &)> functor) |
void | clusterIndistProteinsAndPeptides () |
void | clusterIndistProteinsAndPeptidesAndExtendGraph () |
As above but adds charge, replicate and sequence layer of nodes (untested) More... | |
void | annotateIndistProteins (bool addSingletons=true) const |
void | computeConnectedComponents () |
Splits the initialized graph into connected components and clears it. More... | |
void | buildGraph (Size use_top_psms) |
void | buildGraphWithRunInfo (Size use_top_psms, bool readstore_run_info=true) |
Size | getNrConnectedComponents () |
Private Member Functions | |
vertex_t | addVertexWithLookup_ (IDPointer &ptr, std::unordered_map< IDPointer, vertex_t, boost::hash< IDPointer >> &vertex_map) |
void | annotateIndistProteins_ (const Graph &fg, bool addSingletons) const |
internal function to annotate the underlying ID structures based on the given Graph More... | |
void | printFilteredGraph (std::ostream &out, const FilteredGraph &fg) const |
void | printGraph (std::ostream &out, const Graph &fg) const |
Private Attributes | |
Graph | g |
the initial boost Graph More... | |
Graphs | ccs_ |
the Graph split into connected components More... | |
std::vector< std::pair< Size, double > > | sizes_and_times_ {1} |
sizes and times of last functor execution More... | |
ProteinIdentification & | proteins_ |
underlying protein identification object More... | |
std::vector< PeptideIdentification > & | idedSpectra_ |
underlying peptide identifications More... | |
const ExperimentalDesign | exp_design_ |
underlying experimental design, if not given it will be default constructed More... | |
std::unordered_map< vertex_t, Size > | pepHitVtx_to_run_ |
LabelVisitor | lv_ |
a visitor that creates labels based on the node type (e.g. for printing) More... | |
Creates and maintains a boost graph based on the OpenMS ID datastructures.
For finding connected components and applying functions to them. Currently assumes that all PeptideIdentifications are from the ProteinID run that is given. Please make sure this is right. VERY IMPORTANT NOTE: If you add Visitors here, make sure they do not touch members of the underlying ID objects that are responsible for the graph structure. E.g. the (protein/peptide)_hits vectors or the lists in ProteinGroups. You can set information like scores or metavalues, though.
typedef boost::filtered_graph<Graph, boost::function<bool(edge_t)>, boost::function<bool(vertex_t)> > FilteredGraph |
typedef boost::adjacency_list<boost::setS, boost::vecS, boost::undirectedS, IDPointer> GraphConst |
typedef boost::variant<ProteinHit*, ProteinGroup, PeptideCluster, Peptide, RunIndex, Charge, PeptideHit*> IDPointer |
typedef boost::variant<const ProteinHit*, const ProteinGroup*, const PeptideCluster*, const Peptide, const RunIndex, const Charge, const PeptideHit*> IDPointerConst |
typedef std::set<IDBoostGraph::vertex_t> PeptideNodeSet |
typedef std::set<IDBoostGraph::vertex_t> ProteinNodeSet |
IDBoostGraph | ( | ProteinIdentification & | proteins, |
std::vector< PeptideIdentification > & | idedSpectra | ||
) |
Constructors.
IDBoostGraph | ( | ProteinIdentification & | proteins, |
std::vector< PeptideIdentification > & | idedSpectra, | ||
const ExperimentalDesign & | ed | ||
) |
|
private |
helper function to add a vertex if it is not present yet, otherwise return the present one needs a temporary filled vertex_map that is modifiable
void annotateIndistProteins | ( | bool | addSingletons = true | ) | const |
Annotate indistinguishable proteins by adding the groups to the underlying ProteinIdentification::ProteinGroups object. This has no effect on the graph itself.
addSingletons | if you want to annotate groups with just one protein entry |
|
private |
internal function to annotate the underlying ID structures based on the given Graph
void applyFunctorOnCCs | ( | std::function< void(Graph &)> | functor | ) |
Do sth on connected components (your functor object has to inherit from std::function)
void applyFunctorOnCCsST | ( | std::function< void(Graph &)> | functor | ) |
void buildGraph | ( | Size | use_top_psms | ) |
Initialize and store the graph IMPORTANT: Once the graph is built, editing members like (protein/peptide)_hits_ will invalidate it!
protein | ProteinIdentification object storing IDs and groups |
idedSpectra | vector of ProteinIdentifications with links to the proteins and PSMs in its PeptideHits |
use_all_psms | If all or just the FIRST psm should be used |
void buildGraphWithRunInfo | ( | Size | use_top_psms, |
bool | readstore_run_info = true |
||
) |
void clusterIndistProteinsAndPeptides | ( | ) |
Add intermediate nodes to the graph that represent indist. protein groups and peptides with the same parents this will save computation time and oscillations later on.
void clusterIndistProteinsAndPeptidesAndExtendGraph | ( | ) |
As above but adds charge, replicate and sequence layer of nodes (untested)
void computeConnectedComponents | ( | ) |
Splits the initialized graph into connected components and clears it.
Size getNrConnectedComponents | ( | ) |
|
private |
|
private |
|
private |
the Graph split into connected components
|
private |
underlying experimental design, if not given it will be default constructed
|
private |
the initial boost Graph
|
private |
underlying peptide identifications
|
private |
a visitor that creates labels based on the node type (e.g. for printing)
if a graph is built with run information, this will store the run, each peptide hit vertex belongs to. Important for extending the graph.
|
private |
underlying protein identification object