Maximum Acyclic Subgraph - Multiple Sequence Alignment
MaximumAcyclicSubgraph
|
all
in each subdirectory of src
. It can be recursive, e.g. MAS/Makefile calls make
in some subdirectory.-Wall
to g++: example warning `c++ control reaches end of non-void function.gitignore
, e.g. to exclude the binaries therein from the repo.and
2) Color palette should not require to include a graph => modularize better
3) Color map: assignment k-mer <-> color need not be stable across different problem instances.
4) kmercolor.cc
references Graph::getSimpleKOfKmer()
that does not exist.
1) Lines too long. GitHub needs a horizontal scrollbar to show the code. 2) Tabs instead of space, inconsistent alignment of comments
3) Graph does not need to know k.
4) Edges
should probably be pairs of Nodes
, rather than array<int,3>
. This abstraction allows e.g. to consider edges that are not between neighboring sequences.
5) The sequence itself need not be displayed. It is irrelevant for the game or RL problem and probably clutters the image. std::vector<std::string> stringListSequence;
1) Lines too long. Tabs instead of space. Comment style.
2) Variable name: kMer
is expected to be a string of lenght k, not an int.
3) What is wrong here?
4) splitString
does not seem to be initialized before splitString.at(i).push_back()
is called
5) k-mers can have less than k characters at sequence end - don't allow that (statistical significance)
6) Don't make the secret, undocumented assumption that k-mers cannot overlap.
Rather, introduce a variable unsigned shift
and default it to k.
1) Avoid multiple vectors that are supposed to be of the same length(?).
Rather, define a new tuple, class or struct and use a single vector, e.g. EdgeChoice (Edge e, bool chosen, bool selectable)
2) Unintuitive name: void state::possibleActions(void)
3) Do not use l
as variable name.
4) Algorithm in state::possibleActions
needs documentation. Also the consistency check of a pair of edges should be moved to a separate function.