From 8da5cd005afae6aa50224552f18f1b7222175b55 Mon Sep 17 00:00:00 2001 From: Dariusz Murakowski Date: Thu, 4 Apr 2013 23:28:36 -0400 Subject: [PATCH] Start of Wright-Fisher dynamics using STL. Mutations stored as std::set, species counts in std::map. --- Makefile | 35 +++++++++++++++++++++++++++++++++++ wf.cpp | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 Makefile create mode 100644 wf.cpp 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; +} + -- 2.7.4