From: Dariusz Murakowski Date: Fri, 5 Apr 2013 03:28:36 +0000 (-0400) Subject: Start of Wright-Fisher dynamics using STL. Mutations stored as std::set, species... X-Git-Url: http://src.murakowski.org/?a=commitdiff_plain;h=8da5cd005afae6aa50224552f18f1b7222175b55;p=VirEvoDyn.git Start of Wright-Fisher dynamics using STL. Mutations stored as std::set, species counts in std::map. --- 8da5cd005afae6aa50224552f18f1b7222175b55 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3b3fcc4 --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ + +SRCS = wf.cpp +EXECNAME = $(SRCS:.cpp=) +OBJS = $(SRCS:.cpp=.o) + +CXX = c++ +CFLAGS = $(DBGFLAG) -Wall -Wextra +INCLUDES = +LFLAGS = $(DBGFLAG) +LIBS = -lm + +ifeq ($(dbg),1) + DBGFLAG = -g +else + DBGFLAG = -O3 +endif + +# now the actual build rules, pretty general + +.PHONY: clean + +all: $(EXECNAME) +# @echo done making $(EXECNAME) + +$(EXECNAME): $(OBJS) + $(CXX) -o $(EXECNAME) $(OBJS) $(LFLAGS) $(LIBS) +# $(CXX) $(CFLAGS) $(INCLUDES) -o $(EXECNAME) $(OBJS) $(LFLAGS) $(LIBS) + +# equivalent way using 'old-fashioned suffix rules' would be .c.o: +%.o: %.cpp + $(CXX) -c $(CFLAGS) $(INCLUDES) $< -o $@ + +clean: + $(RM) *.o $(EXECNAME) + diff --git a/wf.cpp b/wf.cpp new file mode 100644 index 0000000..75caa50 --- /dev/null +++ b/wf.cpp @@ -0,0 +1,33 @@ + +#include + +#include +#include + +typedef unsigned int spin_t; +typedef std::set mutset_t; // virus is defined by set of mutations +typedef std::map pop_t; // number of each virus species + + +int main(int argc, char **argv) +{ + argc++; argv++; // avoid "warning: unused parameter" + + pop_t Pop; + + spin_t muts[] = {3,0,5}; + mutset_t s(muts,muts+3); + /* + mutset_t s; + for (int i = 0; i < 3; ++i) + s.insert(muts[i]); + */ + + Pop[s] = 100; + Pop[s] += 50; + + std::cout << *Pop.begin()->first.begin() << ' ' << Pop.begin()->second << std::endl; + + return 0; +} +