├── tmp_data ├── README.md ├── idea_config_file.txt └── gluesless_result.txt ├── presentation.pdf ├── figures ├── code_sample_III_idea_generation.jpg ├── code_sample_II_relations_generation.jpg ├── code_sample_I_population_generation.jpg ├── cultrans_bronzeageburials_map_graves.jpeg └── cultrans_bronzeageburials_development_burial_type.jpeg ├── popgen.styletrans.saa2019.Rproj ├── .gitignore ├── preamble.tex ├── metropolis_theme ├── beamercolorthemecustommetropolis-highcontrast.sty ├── beamerthemecustommetropolis.sty ├── pgfplotsthemetol.sty ├── beamercolorthemecustommetropolis.sty ├── beamerouterthemecustommetropolis.sty ├── beamerinnerthemecustommetropolis.sty └── beamerfontthemecustommetropolis.sty ├── code ├── code_sample_II_relations_generation.R ├── code_sample_I_population_generation.R └── code_sample_III_idea_expansion.R ├── README.md ├── CFP.txt └── presentation.Rmd /tmp_data/README.md: -------------------------------------------------------------------------------- 1 | Directory for temporary data. 2 | -------------------------------------------------------------------------------- /tmp_data/idea_config_file.txt: -------------------------------------------------------------------------------- 1 | idea_1;365 437 525;1 2 | idea_2;433 283 465;1 3 | -------------------------------------------------------------------------------- /presentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/popgen.styletrans.saa2019/master/presentation.pdf -------------------------------------------------------------------------------- /figures/code_sample_III_idea_generation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/popgen.styletrans.saa2019/master/figures/code_sample_III_idea_generation.jpg -------------------------------------------------------------------------------- /figures/code_sample_II_relations_generation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/popgen.styletrans.saa2019/master/figures/code_sample_II_relations_generation.jpg -------------------------------------------------------------------------------- /figures/code_sample_I_population_generation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/popgen.styletrans.saa2019/master/figures/code_sample_I_population_generation.jpg -------------------------------------------------------------------------------- /figures/cultrans_bronzeageburials_map_graves.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/popgen.styletrans.saa2019/master/figures/cultrans_bronzeageburials_map_graves.jpeg -------------------------------------------------------------------------------- /figures/cultrans_bronzeageburials_development_burial_type.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nevrome/popgen.styletrans.saa2019/master/figures/cultrans_bronzeageburials_development_burial_type.jpeg -------------------------------------------------------------------------------- /popgen.styletrans.saa2019.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | 15 | AutoAppendNewline: Yes 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # History files 2 | .Rhistory 3 | .Rapp.history 4 | 5 | # Session Data files 6 | .RData 7 | 8 | # Example code in package build process 9 | *-Ex.R 10 | 11 | # Output files from R CMD build 12 | /*.tar.gz 13 | 14 | # Output files from R CMD check 15 | /*.Rcheck/ 16 | 17 | # RStudio files 18 | .Rproj.user/ 19 | 20 | # produced vignettes 21 | vignettes/*.html 22 | vignettes/*.pdf 23 | 24 | # OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3 25 | .httr-oauth 26 | 27 | # knitr and R markdown default cache directories 28 | /*_cache/ 29 | /cache/ 30 | 31 | # Temporary files created by R markdown 32 | *.utf8.md 33 | *.knit.md 34 | 35 | # Shiny token, see https://shiny.rstudio.com/articles/shinyapps.html 36 | rsconnect/ 37 | .Rproj.user 38 | 39 | # rendered results 40 | presentation.tex 41 | #presentation.pdf 42 | README.html 43 | 44 | # logfiles 45 | *.log 46 | 47 | # temporary data 48 | tmp_data/*.RData 49 | 50 | # Nils Bach 51 | figures/nils_bach_tollund_man_timeline.jpg 52 | -------------------------------------------------------------------------------- /preamble.tex: -------------------------------------------------------------------------------- 1 | \usepackage{graphicx} 2 | \titlegraphic{\begin{picture}(0,0)\put(300,-105){\makebox(0,0)[rt]{\includegraphics[width=13cm]{figures/nils_bach_tollund_man_timeline.jpg}}}\put(195,-210){\tiny \textcopyright \ Niels Bach - http://nielsbach.blogspot.com}\end{picture}} 3 | 4 | \makeatletter 5 | \let\@@magyar@captionfix\relax 6 | \makeatother 7 | 8 | \makeatletter 9 | \def\beamer@calltheme#1#2#3{% 10 | \def\beamer@themelist{#2} 11 | \@for\beamer@themename:=\beamer@themelist\do 12 | {\usepackage[{#1}]{\beamer@themelocation/#3\beamer@themename}}} 13 | 14 | \def\usefolder#1{ 15 | \def\beamer@themelocation{#1} 16 | } 17 | \def\beamer@themelocation{} 18 | 19 | \usefolder{metropolis_theme} 20 | \usetheme{custommetropolis} 21 | \metroset{sectionpage=progressbar} 22 | 23 | \usepackage{subfig} 24 | \usepackage[justification=centering]{caption} 25 | \usepackage{textcomp} 26 | \usepackage{changepage} 27 | \usepackage[absolute,overlay]{textpos} 28 | %\usepackage[texcoord,grid,gridunit=pt,gridcolor=red!10,subgridcolor=green!10]{eso-pic} 29 | 30 | \definecolor{niceorange}{HTML}{D65D00} 31 | -------------------------------------------------------------------------------- /metropolis_theme/beamercolorthemecustommetropolis-highcontrast.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `beamercolorthemecustommetropolis-highcontrast.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% beamercolorthemecustommetropolis-highcontrast.dtx (with options: `package') 8 | %% --------------------------------------------------------------------------- 9 | %% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of 10 | %% contributors can be found at 11 | %% 12 | %% https://github.com/matze/mtheme/graphs/contributors 13 | %% 14 | %% and the original template was based on the HSRM theme by Benjamin Weiss. 15 | %% 16 | %% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 17 | %% International License (https://creativecommons.org/licenses/by-sa/4.0/). 18 | %% --------------------------------------------------------------------------- 19 | \NeedsTeXFormat{LaTeX2e} 20 | \ProvidesPackage{beamercolorthemecustommetropolis-highcontrast}[2017/01/23 Metropolis color theme] 21 | \usecolortheme{custommetropolis} 22 | 23 | \definecolor{mAlert}{HTML}{AD003D} 24 | \definecolor{mExample}{HTML}{005580} 25 | 26 | \setbeamercolor{normal text}{% 27 | fg=black, 28 | bg=white 29 | } 30 | \setbeamercolor{alerted text}{% 31 | fg=mAlert, 32 | } 33 | \setbeamercolor{example text}{% 34 | fg=mExample, 35 | } 36 | \mode 37 | \endinput 38 | %% 39 | %% End of file `beamercolorthemecustommetropolis-highcontrast.sty'. 40 | -------------------------------------------------------------------------------- /code/code_sample_II_relations_generation.R: -------------------------------------------------------------------------------- 1 | library(magrittr) 2 | load("tmp_data/population.RData") 3 | 4 | #### generate relations #### 5 | amount_friends <- 10 6 | distance_matrix_equal <- matrix(1, 4, 4) %>% `diag<-`(0) 7 | cross_unit_proportion_child_of <- 0.002 8 | cross_unit_proportion_friend <- 0.01 9 | weight_child_of <- 50 10 | weight_friend <- 10 11 | 12 | settings <- popgenerator::init_relations_settings( 13 | population, amount_friends, distance_matrix_equal, 14 | cross_unit_proportion_child_of, cross_unit_proportion_friend, 15 | weight_child_of, weight_friend 16 | ) 17 | 18 | relations <- popgenerator::generate_relations(settings) 19 | 20 | save(relations, file = "tmp_data/relations.RData") 21 | 22 | #### transform relations to igraph #### 23 | relations_graph <- igraph::graph_from_data_frame( 24 | relations[c("from", "to", "weight")], 25 | directed = FALSE, 26 | vertices = population[,c("id", "birth_time", "unit")] 27 | ) 28 | 29 | save(relations_graph, file = "tmp_data/relations_graph.RData") 30 | 31 | #### plot population graph nodes #### 32 | library(ggraph) 33 | layout <- ggraph::create_layout(relations_graph, layout = 'igraph', algorithm = 'fr', start.temp = 10) 34 | p <- ggraph(layout) + 35 | geom_node_point( 36 | mapping = aes(color = birth_time, shape = unit), 37 | size = 1.2 38 | ) + 39 | ggplot2::scale_color_continuous(low = "darkgreen", high = "red") + 40 | theme_graph( 41 | background = "#FAFAFA" 42 | ) + 43 | ggplot2::guides( 44 | color = guide_colorbar(title = "Time of birth"), 45 | shape = guide_legend(title = "Group") 46 | ) 47 | 48 | ggsave( 49 | filename = "figures/code_sample_II_relations_generation.jpg", 50 | plot = p, 51 | device = "jpg", 52 | width = 180, 53 | height = 150, 54 | units = "mm", 55 | dpi = 300 56 | ) 57 | -------------------------------------------------------------------------------- /code/code_sample_I_population_generation.R: -------------------------------------------------------------------------------- 1 | #### create artifical population #### 2 | time <- 1:200 3 | unit_names <- factor(c("group_1", "group_2", "group_3", "group_4")) 4 | unit_size_functions <- list( 5 | "group_1" = function(t) {20 + 0.4 * t}, "group_2" = function(t) {20 + (0.04 * t)^2}, 6 | "group_3" = function(t) {50}, "group_4" = function(t) {20 + 15 * log(t)} 7 | ) 8 | age_distribution_function <- function(x) {1 / (1 + 0.0004 * 0.7^(-7*log(x)))} 9 | age_range <- 1:90 10 | 11 | settings <- popgenerator::init_population_settings( 12 | time, unit_names, unit_size_functions, age_distribution_function, age_range 13 | ) 14 | 15 | population <- popgenerator::generate_population(settings) 16 | 17 | save(population, file = "tmp_data/population.RData") 18 | 19 | #### transform population to time series #### 20 | pop_ts <- aoristAAR::aorist(population, "birth_time", "death_time", "unit") 21 | theory_pop_ts <- do.call(rbind, lapply( 22 | unit_names, function(x) { 23 | tibble::tibble( 24 | date = time, 25 | sum = unit_size_functions[[x]](time), 26 | unit = unit_names[[x]] 27 | ) 28 | } 29 | )) 30 | 31 | #### plot population comparison graphs #### 32 | library(ggplot2) 33 | p <- ggplot() + 34 | geom_line( 35 | data = theory_pop_ts, 36 | mapping = aes(x = date, y = sum), 37 | color = "red", 38 | size = 1 39 | ) + 40 | geom_line( 41 | data = pop_ts, 42 | mapping = aes(x = date, y = sum) 43 | ) + 44 | facet_wrap(~unit) + 45 | geom_vline( 46 | xintercept = c(1, 200), 47 | color = "darkgrey" 48 | ) + 49 | scale_x_continuous( 50 | breaks = c(1, 50, 100, 150, 200), 51 | limits = c(-40, 240) 52 | ) + 53 | theme_bw() + 54 | theme( 55 | plot.background = element_rect(fill = "#FAFAFA", color = "#FAFAFA") 56 | ) + 57 | ylab("population size") + 58 | xlab("time") 59 | 60 | ggsave( 61 | filename = "figures/code_sample_I_population_generation.jpg", 62 | plot = p, 63 | device = "jpg", 64 | width = 150, 65 | height = 100, 66 | units = "mm", 67 | dpi = 300 68 | ) 69 | 70 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # A Population Graph based Style Transmission model 2 | 3 | This paper was prepared for the [SAA2019](https://documents.saa.org/container/docs/default-source/doc-annualmeeting/final-program/2019-final-program/final-program-2019-with-covers.pdf?sfvrsn=d7632e2b_2) conference in Albuquerque, NM, USA. The relevant session [*Practical Approaches to Identifying Evolutionary Processes in the Archaeological Record*](https://ccs18.bsc.es/) by [Ben Marwick](http://faculty.washington.edu/bmarwick/) took place on 12/04/2019. 4 | 5 | ## Abstract 6 | 7 | 8 | 9 | The now classic Neiman (1995) is a baseline for many influential applications of Cultural Transmission to explore Stylistic Variability in archaeology. It and many of its successors represent social interaction and generational development in a deliberately simplified way to facilitate the exploration of parameters and algebraic analysis. While justified, this omits both the theoretical trajectories of information transmission elaborated by Cavalli-Sforza and Feldman (1981) as well as the insights archaeologists have gained through social network analysis. 10 | 11 | This paper explores an alternative, agent-based simulation framework that attempts to be more flexible: a diachronic population graph is established as a landscape, in which ideas as entities with individual agency seek expansion -- the meme's eye view. The social network can be constructed to represent archaeological knowledge concerning population size development, the degree of intra- and intergroup exchange or spatial or cultural patterns of interaction. Ideas may be long-term static or evolving over time, selectively neutral or functionally different, distributed randomly or according to real world examples. 12 | 13 | Population graph generation and idea expansion simulation are implemented in R and C++ and accessible with an R interface -- but computationally expensive. The presentation will elaborate on the concept and show an example application. 14 | 15 | *** 16 | 17 | Neiman, F. D. (1995). Stylistic Variation in Evolutionary Perspective: Inferences from Decorative Diversity and Interassemblage Distance in Illinois Woodland Ceramic Assemblages. American Antiquity, 60(1), 7–36. https://doi.org/10.2307/282074 18 | 19 | Cavalli-Sforza, L. L., & Feldman, M. W. (1981). Cultural transmission and evolution: a quantitative approach. Princeton, N.J: Princeton University Press. 20 | -------------------------------------------------------------------------------- /CFP.txt: -------------------------------------------------------------------------------- 1 | SAA’s information about the 2019 meeting, including instructions and policies for submissions: http://www.saa.org/Portals/0/Call%20for%20Submissions%202019.pdf 2 | 3 | Symposium: Practical approaches to identifying evolutionary processes in the archaeological record 4 | 5 | Organisers: Ben Marwick & Enrico Crema 6 | 7 | The goal of this session to discuss the practical application of computational methods for identifying drift, selection, innovation, transmission bias, extinction, and many other evolutionary processes in the archaeological record. In recent years there have been many exciting methodological advances in applying Darwinian evolutionary concepts to answer fundamental questions about human behaviour, demography, and material culture. These innovations are applicable to a wide variety of artefact types, such as ceramics, lithics, and others. However, much of this cutting-edge work remains esoteric because of the technical complexity of extending these new approaches beyond their initial publication. This has limited the scope of potential reuse of these methods, and their potential (and limitations) has yet to be fully explored. The priority for this session is to show how these methods are broadly accessible to any archaeologist who is curious about evolutionary methods in archaeology. Papers in this session will go ‘behind the scenes’ of these analyses to show the practical details of how the analyses are done, and how the results can be interpreted. Papers will be accompanied by online compendia provided as a resource for further ‘hands-on’ study after the session. 8 | 9 | Session-specific instructions to participants: 10 | 11 | The goal of this session is to get people using methods of identifying evolutionary processes. This means showing screenshots of how your raw data look (e.g. the layout in Excel), and screenshots of how you do calculations (e.g. R code, Beast, MrBayes, etc. or whatever is doing the heavy lifting). Ideally your presentation will walk-through the key steps of an analysis you have already published, or one that is in preparation for publication. 12 | 13 | We strongly encourage you to prepare a short R Markdown document to accompany your presentation. We are especially keen for presentations to run code directly before the audience to show the steps, but we realise this may not be possible or desirable for in every case. Ideally this will be self-contained and reproducible with R or Python code (R Markdown can include Python code) and narrative text to give some context to what the code is doing. It should not be a full scholarly treatment, like a journal article, but rather more like short notes on how to do this analysis, similar to an R package vignette. If your analysis is very computationally intensive, please mention this clearly, and include a version that can run in a very short time, with a clear note that this is just for demonstration purposes. We will collect these and assemble them into a bookdown book that will be freely available online after the session. 14 | 15 | -------------------------------------------------------------------------------- /code/code_sample_III_idea_expansion.R: -------------------------------------------------------------------------------- 1 | library(magrittr) 2 | load("tmp_data/population.RData") 3 | load("tmp_data/relations.RData") 4 | load("tmp_data/relations_graph.RData") 5 | 6 | #### store network in pajek file format ### 7 | rel_small <- relations %>% dplyr::select(from, to, weight) 8 | graph_file <- "tmp_data/relations_network.paj" 9 | utils::write.table(rel_small, file = graph_file, sep = " ", row.names = F, col.names = F) 10 | incomplete_pajek <- readLines(graph_file) 11 | incomplete_pajek <- rlang::prepend( 12 | incomplete_pajek, 13 | paste(c(paste("*Vertices", nrow(population), collapse = " "), population$id, "*Edges"), collapse = "\n") 14 | ) 15 | writeLines(incomplete_pajek, graph_file) 16 | 17 | #### prepare initial ideas distribution configuration #### 18 | ideas_file <- "tmp_data/idea_config_file.txt" 19 | moment_zero_population <- population %>% dplyr::filter( 20 | birth_time < 0 & death_time > 0 21 | ) %$% id 22 | innovators <- sample(moment_zero_population, 9) 23 | start_idea_1 <- paste0("idea_1", ";", paste(innovators[1:3], collapse = " "), ";", 1) 24 | start_idea_2 <- paste0("idea_2", ";", paste(innovators[4:6], collapse = " "), ";", 1) 25 | 26 | writeLines( 27 | c(start_idea_1, start_idea_2), 28 | ideas_file 29 | ) 30 | 31 | #### define output file #### 32 | output_file <- "tmp_data/gluesless_result.txt" 33 | 34 | #### run gluesless simulation #### 35 | system2("../gluesless/build/gluesless", args = c("-pi", graph_file, "-ii", ideas_file, "-o", output_file, "-q")) 36 | 37 | #### read results #### 38 | result <- readLines("tmp_data/gluesless_result.txt") 39 | idea_1_nodes <- as.integer(unlist(strsplit(result[which(result == "idea_1") + 1], split = " "))) 40 | idea_development <- population %>% 41 | dplyr::mutate( 42 | idea = ifelse(id %in% idea_1_nodes, "idea_1", "idea_2"), 43 | from = birth_time - abs(birth_time - death_time)/2, 44 | to = death_time 45 | ) %>% 46 | aoristAAR::aorist( 47 | split_vars = c("unit", "idea"), 48 | method = "number" 49 | ) %>% 50 | dplyr::group_by( 51 | date, unit 52 | ) %>% 53 | dplyr::mutate( 54 | freq = sum / sum(sum) 55 | ) %>% 56 | dplyr::ungroup() 57 | 58 | #### plot #### 59 | library(ggplot2) 60 | p <- idea_development %>% 61 | ggplot() + 62 | geom_area(aes(x = date, y = freq, fill = idea, group = idea), alpha = 0.6) + 63 | geom_line( 64 | data = idea_development %>% dplyr::filter(idea == "idea_2"), 65 | mapping = aes(x = date, y = freq, group = idea) 66 | ) + 67 | geom_vline( 68 | xintercept = c(1, 200), 69 | color = "darkgrey" 70 | ) + 71 | theme_bw() + 72 | facet_wrap(~unit) + 73 | xlab("time") + 74 | ylab("variant occurrence") + 75 | scale_x_continuous( 76 | breaks = c(1, 50, 100, 150, 200), 77 | limits = c(-40, 240) 78 | ) + 79 | scale_y_continuous( 80 | breaks = c(0.2, 0.4, 0.6, 0.8), 81 | labels = c("20%", "40%", "60%", "80%") 82 | ) + 83 | scale_fill_manual( 84 | values = c("idea_1" = "darkgreen", "idea_2" = "red") 85 | ) + 86 | theme( 87 | plot.background = element_rect(fill = "#FAFAFA", color = "#FAFAFA") 88 | ) + 89 | annotate( 90 | "label", x = 150, y = 0.9, label = "idea_1", size = 2.5, color = "darkgreen" 91 | ) + 92 | annotate( 93 | "label", x = 50, y = 0.1, label = "idea_2", size = 2.5, color = "red" 94 | ) + 95 | guides( 96 | fill = FALSE 97 | ) 98 | 99 | ggsave( 100 | filename = "figures/code_sample_III_idea_generation.jpg", 101 | plot = p, 102 | device = "jpg", 103 | width = 150, 104 | height = 100, 105 | units = "mm", 106 | dpi = 300 107 | ) 108 | -------------------------------------------------------------------------------- /metropolis_theme/beamerthemecustommetropolis.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `beamerthemecustommetropolis.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% beamerthemecustommetropolis.dtx (with options: `package') 8 | %% --------------------------------------------------------------------------- 9 | %% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of 10 | %% contributors can be found at 11 | %% 12 | %% https://github.com/matze/mtheme/graphs/contributors 13 | %% 14 | %% and the original template was based on the HSRM theme by Benjamin Weiss. 15 | %% 16 | %% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 17 | %% International License (https://creativecommons.org/licenses/by-sa/4.0/). 18 | %% --------------------------------------------------------------------------- 19 | \NeedsTeXFormat{LaTeX2e} 20 | \ProvidesPackage{beamerthemecustommetropolis} 21 | [2017/01/23 v1.2 Metropolis Beamer theme] 22 | \RequirePackage{etoolbox} 23 | \RequirePackage{pgfopts} 24 | \pgfkeys{/custommetropolis/.cd, 25 | .search also={ 26 | /custommetropolis/inner, 27 | /custommetropolis/outer, 28 | /custommetropolis/color, 29 | /custommetropolis/font, 30 | } 31 | } 32 | \pgfkeys{ 33 | /custommetropolis/titleformat plain/.cd, 34 | .is choice, 35 | regular/.code={% 36 | \let\custommetropolis@plaintitleformat\@empty% 37 | \setbeamerfont{standout}{shape=\normalfont}% 38 | }, 39 | smallcaps/.code={% 40 | \let\custommetropolis@plaintitleformat\@empty% 41 | \setbeamerfont{standout}{shape=\scshape}% 42 | }, 43 | allsmallcaps/.code={% 44 | \let\custommetropolis@plaintitleformat\MakeLowercase% 45 | \setbeamerfont{standout}{shape=\scshape}% 46 | \PackageWarning{beamerthemecustommetropolis}{% 47 | Be aware that titleformat plain=allsmallcaps can lead to problems% 48 | } 49 | }, 50 | allcaps/.code={% 51 | \let\custommetropolis@plaintitleformat\MakeUppercase% 52 | \setbeamerfont{standout}{shape=\normalfont}% 53 | \PackageWarning{beamerthemecustommetropolis}{% 54 | Be aware that titleformat plain=allcaps can lead to problems% 55 | } 56 | }, 57 | } 58 | \pgfkeys{ 59 | /custommetropolis/titleformat/.code=\pgfkeysalso{ 60 | font/titleformat title=#1, 61 | font/titleformat subtitle=#1, 62 | font/titleformat section=#1, 63 | font/titleformat frame=#1, 64 | titleformat plain=#1, 65 | } 66 | } 67 | \pgfkeys{/custommetropolis/.cd, 68 | usetitleprogressbar/.code=\pgfkeysalso{outer/progressbar=frametitle}, 69 | noslidenumbers/.code=\pgfkeysalso{outer/numbering=none}, 70 | usetotalslideindicator/.code=\pgfkeysalso{outer/numbering=fraction}, 71 | nosectionslide/.code=\pgfkeysalso{inner/sectionpage=none}, 72 | darkcolors/.code=\pgfkeysalso{color/background=dark}, 73 | blockbg/.code=\pgfkeysalso{color/block=fill, inner/block=fill}, 74 | } 75 | \newcommand{\custommetropolis@setdefaults}{ 76 | \pgfkeys{/custommetropolis/.cd, 77 | titleformat plain=regular, 78 | } 79 | } 80 | \providecommand{\tikzexternalenable}{} 81 | \providecommand{\tikzexternaldisable}{} 82 | \useinnertheme{custommetropolis} 83 | \useoutertheme{custommetropolis} 84 | \usecolortheme{custommetropolis} 85 | \usefonttheme{custommetropolis} 86 | \AtEndPreamble{% 87 | \@ifpackageloaded{pgfplots}{% 88 | \RequirePackage{pgfplotsthemetol} 89 | }{} 90 | } 91 | \newcommand{\metroset}[1]{\pgfkeys{/custommetropolis/.cd,#1}} 92 | \def\custommetropolis@plaintitleformat#1{#1} 93 | \newcommand{\plain}[2][]{% 94 | \PackageWarning{beamerthemecustommetropolis}{% 95 | The syntax `\plain' may be deprecated in a future version of Metropolis. 96 | Please use a frame with [standout] instead. 97 | } 98 | \begin{frame}[standout]{#1} 99 | \custommetropolis@plaintitleformat{#2} 100 | \end{frame} 101 | } 102 | \newcommand{\mreducelistspacing}{\vspace{-\topsep}} 103 | \custommetropolis@setdefaults 104 | \ProcessPgfOptions{/custommetropolis} 105 | \endinput 106 | %% 107 | %% End of file `beamerthemecustommetropolis.sty'. 108 | -------------------------------------------------------------------------------- /metropolis_theme/pgfplotsthemetol.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `pgfplotsthemetol.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% pgfplotsthemetol.dtx (with options: `package') 8 | %% --------------------------------------------------------------------------- 9 | %% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of 10 | %% contributors can be found at 11 | %% 12 | %% https://github.com/matze/mtheme/graphs/contributors 13 | %% 14 | %% and the original template was based on the HSRM theme by Benjamin Weiss. 15 | %% 16 | %% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 17 | %% International License (https://creativecommons.org/licenses/by-sa/4.0/). 18 | %% --------------------------------------------------------------------------- 19 | \NeedsTeXFormat{LaTeX2e} 20 | \ProvidesPackage{pgfplotsthemetol} 21 | [2017/01/23 PGFplots colors based on Paul Tol's SRON technical note] 22 | \definecolor{TolDarkPurple}{HTML}{332288} 23 | \definecolor{TolDarkBlue}{HTML}{6699CC} 24 | \definecolor{TolLightBlue}{HTML}{88CCEE} 25 | \definecolor{TolLightGreen}{HTML}{44AA99} 26 | \definecolor{TolDarkGreen}{HTML}{117733} 27 | \definecolor{TolDarkBrown}{HTML}{999933} 28 | \definecolor{TolLightBrown}{HTML}{DDCC77} 29 | \definecolor{TolDarkRed}{HTML}{661100} 30 | \definecolor{TolLightRed}{HTML}{CC6677} 31 | \definecolor{TolLightPink}{HTML}{AA4466} 32 | \definecolor{TolDarkPink}{HTML}{882255} 33 | \definecolor{TolLightPurple}{HTML}{AA4499} 34 | \pgfplotscreateplotcyclelist{mbarplot cycle}{% 35 | {draw=TolDarkBlue, fill=TolDarkBlue!70}, 36 | {draw=TolLightBrown, fill=TolLightBrown!70}, 37 | {draw=TolLightGreen, fill=TolLightGreen!70}, 38 | {draw=TolDarkPink, fill=TolDarkPink!70}, 39 | {draw=TolDarkPurple, fill=TolDarkPurple!70}, 40 | {draw=TolDarkRed, fill=TolDarkRed!70}, 41 | {draw=TolDarkBrown, fill=TolDarkBrown!70}, 42 | {draw=TolLightRed, fill=TolLightRed!70}, 43 | {draw=TolLightPink, fill=TolLightPink!70}, 44 | {draw=TolLightPurple, fill=TolLightPurple!70}, 45 | {draw=TolLightBlue, fill=TolLightBlue!70}, 46 | {draw=TolDarkGreen, fill=TolDarkGreen!70}, 47 | } 48 | \pgfplotscreateplotcyclelist{mlineplot cycle}{% 49 | {TolDarkBlue, mark=*, mark size=1.5pt}, 50 | {TolLightBrown, mark=square*, mark size=1.3pt}, 51 | {TolLightGreen, mark=triangle*, mark size=1.5pt}, 52 | {TolDarkBrown, mark=diamond*, mark size=1.5pt}, 53 | } 54 | \pgfplotsset{ 55 | compat=1.9, 56 | mlineplot/.style={ 57 | mbaseplot, 58 | xmajorgrids=true, 59 | ymajorgrids=true, 60 | major grid style={dotted}, 61 | axis x line=bottom, 62 | axis y line=left, 63 | legend style={ 64 | cells={anchor=west}, 65 | draw=none 66 | }, 67 | cycle list name=mlineplot cycle, 68 | }, 69 | mbarplot base/.style={ 70 | mbaseplot, 71 | bar width=6pt, 72 | axis y line*=none, 73 | }, 74 | mbarplot/.style={ 75 | mbarplot base, 76 | ybar, 77 | xmajorgrids=false, 78 | ymajorgrids=true, 79 | area legend, 80 | legend image code/.code={% 81 | \draw[#1] (0cm,-0.1cm) rectangle (0.15cm,0.1cm); 82 | }, 83 | cycle list name=mbarplot cycle, 84 | }, 85 | horizontal mbarplot/.style={ 86 | mbarplot base, 87 | xmajorgrids=true, 88 | ymajorgrids=false, 89 | xbar stacked, 90 | area legend, 91 | legend image code/.code={% 92 | \draw[#1] (0cm,-0.1cm) rectangle (0.15cm,0.1cm); 93 | }, 94 | cycle list name=mbarplot cycle, 95 | }, 96 | mbaseplot/.style={ 97 | legend style={ 98 | draw=none, 99 | fill=none, 100 | cells={anchor=west}, 101 | }, 102 | x tick label style={ 103 | font=\footnotesize 104 | }, 105 | y tick label style={ 106 | font=\footnotesize 107 | }, 108 | legend style={ 109 | font=\footnotesize 110 | }, 111 | major grid style={ 112 | dotted, 113 | }, 114 | axis x line*=bottom, 115 | }, 116 | disable thousands separator/.style={ 117 | /pgf/number format/.cd, 118 | 1000 sep={} 119 | }, 120 | } 121 | \endinput 122 | %% 123 | %% End of file `pgfplotsthemetol.sty'. 124 | -------------------------------------------------------------------------------- /metropolis_theme/beamercolorthemecustommetropolis.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `beamercolorthemecustommetropolis.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% beamercolorthemecustommetropolis.dtx (with options: `package') 8 | %% --------------------------------------------------------------------------- 9 | %% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of 10 | %% contributors can be found at 11 | %% 12 | %% https://github.com/matze/mtheme/graphs/contributors 13 | %% 14 | %% and the original template was based on the HSRM theme by Benjamin Weiss. 15 | %% 16 | %% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 17 | %% International License (https://creativecommons.org/licenses/by-sa/4.0/). 18 | %% --------------------------------------------------------------------------- 19 | \NeedsTeXFormat{LaTeX2e} 20 | \ProvidesPackage{beamercolorthemecustommetropolis}[2017/01/23 Metropolis color theme] 21 | \RequirePackage{pgfopts} 22 | \pgfkeys{ 23 | /custommetropolis/color/block/.cd, 24 | .is choice, 25 | transparent/.code=\custommetropolis@block@transparent, 26 | fill/.code=\custommetropolis@block@fill, 27 | } 28 | \pgfkeys{ 29 | /custommetropolis/color/background/.cd, 30 | .is choice, 31 | dark/.code=\custommetropolis@colors@dark, 32 | light/.code=\custommetropolis@colors@light, 33 | } 34 | \newcommand{\custommetropolis@color@setdefaults}{ 35 | \pgfkeys{/custommetropolis/color/.cd, 36 | background=light, 37 | block=transparent, 38 | } 39 | } 40 | \definecolor{mDarkBrown}{HTML}{604c38} 41 | \definecolor{mDarkTeal}{HTML}{23373b} 42 | \definecolor{mLightBrown}{HTML}{EB811B} 43 | \definecolor{mLightGreen}{HTML}{14B03D} 44 | \newcommand{\custommetropolis@colors@dark}{ 45 | \setbeamercolor{normal text}{% 46 | fg=black!2, 47 | bg=mDarkTeal 48 | } 49 | \usebeamercolor[fg]{normal text} 50 | } 51 | \newcommand{\custommetropolis@colors@light}{ 52 | \setbeamercolor{normal text}{% 53 | fg=mDarkTeal, 54 | bg=black!2 55 | } 56 | } 57 | \setbeamercolor{alerted text}{% 58 | fg=mLightBrown 59 | } 60 | \setbeamercolor{example text}{% 61 | fg=mLightGreen 62 | } 63 | \setbeamercolor{titlelike}{use=normal text, parent=normal text} 64 | \setbeamercolor{author}{use=normal text, parent=normal text} 65 | \setbeamercolor{date}{use=normal text, parent=normal text} 66 | \setbeamercolor{institute}{use=normal text, parent=normal text} 67 | \setbeamercolor{structure}{use=normal text, fg=normal text.fg} 68 | \setbeamercolor{palette primary}{% 69 | use=normal text, 70 | fg=normal text.bg, 71 | bg=normal text.fg 72 | } 73 | \setbeamercolor{frametitle}{% 74 | use=palette primary, 75 | parent=palette primary 76 | } 77 | \setbeamercolor{progress bar}{% 78 | use=alerted text, 79 | fg=alerted text.fg, 80 | bg=alerted text.fg!50!black!30 81 | } 82 | \setbeamercolor{title separator}{ 83 | use=progress bar, 84 | parent=progress bar 85 | } 86 | \setbeamercolor{progress bar in head/foot}{% 87 | use=progress bar, 88 | parent=progress bar 89 | } 90 | \setbeamercolor{progress bar in section page}{ 91 | use=progress bar, 92 | parent=progress bar 93 | } 94 | \newcommand{\custommetropolis@block@transparent}{ 95 | \setbeamercolor{block title}{% 96 | use=normal text, 97 | fg=normal text.fg, 98 | bg= 99 | } 100 | \setbeamercolor{block body}{ 101 | bg= 102 | } 103 | } 104 | \newcommand{\custommetropolis@block@fill}{ 105 | \setbeamercolor{block title}{% 106 | use=normal text, 107 | fg=normal text.fg, 108 | bg=normal text.bg!80!fg 109 | } 110 | \setbeamercolor{block body}{ 111 | use={block title, normal text}, 112 | bg=block title.bg!50!normal text.bg 113 | } 114 | } 115 | \setbeamercolor{block title alerted}{% 116 | use={block title, alerted text}, 117 | bg=block title.bg, 118 | fg=alerted text.fg 119 | } 120 | \setbeamercolor{block title example}{% 121 | use={block title, example text}, 122 | bg=block title.bg, 123 | fg=example text.fg 124 | } 125 | \setbeamercolor{block body alerted}{use=block body, parent=block body} 126 | \setbeamercolor{block body example}{use=block body, parent=block body} 127 | \setbeamercolor{footnote}{fg=normal text.fg!90} 128 | \setbeamercolor{footnote mark}{fg=.} 129 | \setbeamercolor{bibliography entry author}{fg=, bg=} 130 | \setbeamercolor{bibliography entry title}{fg=, bg=} 131 | \setbeamercolor{bibliography entry location}{fg=, bg=} 132 | \setbeamercolor{bibliography entry note}{fg=, bg=} 133 | \custommetropolis@color@setdefaults 134 | \ProcessPgfPackageOptions{/custommetropolis/color} 135 | \mode 136 | \endinput 137 | %% 138 | %% End of file `beamercolorthemecustommetropolis.sty'. 139 | -------------------------------------------------------------------------------- /metropolis_theme/beamerouterthemecustommetropolis.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `beamerouterthemecustommetropolis.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% beamerouterthemecustommetropolis.dtx (with options: `package') 8 | %% --------------------------------------------------------------------------- 9 | %% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of 10 | %% contributors can be found at 11 | %% 12 | %% https://github.com/matze/mtheme/graphs/contributors 13 | %% 14 | %% and the original template was based on the HSRM theme by Benjamin Weiss. 15 | %% 16 | %% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 17 | %% International License (https://creativecommons.org/licenses/by-sa/4.0/). 18 | %% --------------------------------------------------------------------------- 19 | \NeedsTeXFormat{LaTeX2e} 20 | \ProvidesPackage{beamerouterthemecustommetropolis}[2017/01/23 Metropolis outer theme] 21 | \RequirePackage{etoolbox} 22 | \RequirePackage{calc} 23 | \RequirePackage{pgfopts} 24 | \pgfkeys{ 25 | /custommetropolis/outer/numbering/.cd, 26 | .is choice, 27 | none/.code=\setbeamertemplate{frame numbering}[none], 28 | counter/.code=\setbeamertemplate{frame numbering}[counter], 29 | fraction/.code=\setbeamertemplate{frame numbering}[fraction], 30 | } 31 | \pgfkeys{ 32 | /custommetropolis/outer/progressbar/.cd, 33 | .is choice, 34 | none/.code={% 35 | \setbeamertemplate{headline}[plain] 36 | \setbeamertemplate{frametitle}[plain] 37 | \setbeamertemplate{footline}[plain] 38 | }, 39 | head/.code={\pgfkeys{/custommetropolis/outer/progressbar=none} 40 | \addtobeamertemplate{headline}{}{% 41 | \usebeamertemplate*{progress bar in head/foot} 42 | } 43 | }, 44 | frametitle/.code={\pgfkeys{/custommetropolis/outer/progressbar=none} 45 | \addtobeamertemplate{frametitle}{}{% 46 | \usebeamertemplate*{progress bar in head/foot} 47 | } 48 | }, 49 | foot/.code={\pgfkeys{/custommetropolis/outer/progressbar=none} 50 | \addtobeamertemplate{footline}{}{% 51 | \usebeamertemplate*{progress bar in head/foot}% 52 | } 53 | }, 54 | } 55 | \newcommand{\custommetropolis@outer@setdefaults}{ 56 | \pgfkeys{/custommetropolis/outer/.cd, 57 | numbering=counter, 58 | progressbar=none, 59 | } 60 | } 61 | \setbeamertemplate{navigation symbols}{} 62 | \defbeamertemplate{frame footer}{none}{} 63 | \defbeamertemplate{frame footer}{custom}[1]{ #1 } 64 | \defbeamertemplate{frame numbering}{none}{} 65 | \defbeamertemplate{frame numbering}{counter}{\insertframenumber} 66 | \defbeamertemplate{frame numbering}{fraction}{ 67 | \insertframenumber/\inserttotalframenumber 68 | } 69 | \defbeamertemplate{headline}{plain}{} 70 | \defbeamertemplate{footline}{plain}{% 71 | \pgfsetfillopacity{0}\begin{beamercolorbox}[wd=\textwidth, sep=1.5ex]{footline}% 72 | \usebeamerfont{page number in head/foot}% 73 | \usebeamertemplate*{frame footer} 74 | \hfill% 75 | \pgfsetfillopacity{1} 76 | \usebeamertemplate*{frame numbering} 77 | \end{beamercolorbox}% 78 | } 79 | \newlength{\custommetropolis@frametitle@padding} 80 | \setlength{\custommetropolis@frametitle@padding}{2.2ex} 81 | \newcommand{\custommetropolis@frametitlestrut@start}{ 82 | \rule{0pt}{\custommetropolis@frametitle@padding +% 83 | \totalheightof{% 84 | \ifcsdef{custommetropolis@frametitleformat}{\custommetropolis@frametitleformat X}{X}% 85 | }% 86 | }% 87 | } 88 | \newcommand{\custommetropolis@frametitlestrut@end}{ 89 | \rule[-\custommetropolis@frametitle@padding]{0pt}{\custommetropolis@frametitle@padding} 90 | } 91 | \defbeamertemplate{frametitle}{plain}{% 92 | \nointerlineskip% 93 | \begin{beamercolorbox}[% 94 | wd=\paperwidth,% 95 | sep=0pt,% 96 | leftskip=\custommetropolis@frametitle@padding,% 97 | rightskip=\custommetropolis@frametitle@padding,% 98 | ]{frametitle}% 99 | \custommetropolis@frametitlestrut@start% 100 | \insertframetitle% 101 | \nolinebreak% 102 | \custommetropolis@frametitlestrut@end% 103 | \end{beamercolorbox}% 104 | } 105 | \setbeamertemplate{frametitle continuation}{% 106 | \usebeamerfont{frametitle} 107 | \romannumeral \insertcontinuationcount 108 | } 109 | \newlength{\custommetropolis@progressinheadfoot} 110 | \newlength{\custommetropolis@progressinheadfoot@linewidth} 111 | \setlength{\custommetropolis@progressinheadfoot@linewidth}{0.4pt} 112 | \setbeamertemplate{progress bar in head/foot}{ 113 | \nointerlineskip 114 | \setlength{\custommetropolis@progressinheadfoot}{% 115 | \paperwidth * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}% 116 | }% 117 | \begin{beamercolorbox}[wd=\paperwidth]{progress bar in head/foot} 118 | \tikzexternaldisable% 119 | \begin{tikzpicture} 120 | \fill[bg] (0,0) rectangle (\paperwidth, \custommetropolis@progressinheadfoot@linewidth); 121 | \fill[fg] (0,0) rectangle (\custommetropolis@progressinheadfoot, \custommetropolis@progressinheadfoot@linewidth); 122 | \end{tikzpicture}% 123 | \tikzexternalenable% 124 | \end{beamercolorbox} 125 | } 126 | \AtBeginDocument{% 127 | \apptocmd{\appendix}{% 128 | \pgfkeys{% 129 | /custommetropolis/outer/.cd, 130 | numbering=none, 131 | progressbar=none} 132 | }{}{} 133 | } 134 | \custommetropolis@outer@setdefaults 135 | \ProcessPgfPackageOptions{/custommetropolis/outer} 136 | \endinput 137 | %% 138 | %% End of file `beamerouterthemecustommetropolis.sty'. 139 | -------------------------------------------------------------------------------- /presentation.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "A Population Graph based Style Transmission model" 3 | fontsize: 9pt 4 | output: 5 | beamer_presentation: 6 | includes: 7 | in_header: preamble.tex 8 | keep_tex: true 9 | fig_caption: yes 10 | editor_options: 11 | chunk_output_type: console 12 | --- 13 | 14 | ```{r, echo = FALSE} 15 | # https://stackoverflow.com/questions/25646333/code-chunk-font-size-in-rmarkdown-with-knitr-and-latex 16 | def.chunk.hook <- knitr::knit_hooks$get("chunk") 17 | knitr::knit_hooks$set(chunk = function(x, options) { 18 | x <- def.chunk.hook(x, options) 19 | ifelse(options$size != "normalsize", paste0("\\", options$size,"\n\n", x, "\n\n \\normalsize"), x) 20 | }) 21 | knitr::opts_chunk$set(echo = TRUE, cache = TRUE) 22 | ``` 23 | 24 | ## Cultural Evolution -- Cultural Transmission -- Stylistic Variability 25 | 26 | - **Cultural Evolution** theory applies terminology and methods from evolutionary biology to cultural anthropology 27 | 28 | - **Cultural Transmission** investigates processes of idea transmission and diffusion of innovation 29 | 30 | - Ideas spread in space and time. They exist in **social space** and their spread depends on **social relations** 31 | 32 | - The spread of functional and stylistic traits is conceptually different. The fate of stylistic (**selectively neutral**) traits is determined by stochastic processes: **Stylistic Variability** 33 | 34 | \usebeamertemplate*{title separator} 35 | 36 | - There are many different ways to simulate the spread of **neutral traits** 37 | 38 | # Yet another simulation approach: Population Graph based Style Transmission 39 | 40 | ## Simulation concept: Idea agents in a diachronic population network 41 | 42 | **Idea agents** 43 | 44 | - Ideas are the **agents**, not humans (*the meme's eye view*) 45 | 46 | - Ideas have simple behaviour: **greedy expansion** 47 | 48 | - Ideas life in a diachronic **population network** 49 | 50 | \usebeamertemplate*{title separator} 51 | 52 | **Network world** 53 | 54 | - Each **node** represents a **social entity** (**humans**, households, ...) 55 | 56 | - Each **edge** represents a **social relationship** 57 | 58 | - Social entities **only** have relations to partners in **temporal vicinity** 59 | 60 | - Social entities have **stronger** relations to partners in **social vicinity** 61 | 62 | ## Population generation 63 | 64 | - **Populations** are divided into **units** (villages, clans, regions, ...) 65 | 66 | - Each **unit** has a `name` and a `size development function` and is made up of **humans** 67 | 68 | - Each human has a `year of birth` and a `year of death` 69 | 70 | \usebeamertemplate*{title separator} 71 | 72 | R package **popgenerator**: https://github.com/nevrome/popgenerator 73 | 74 | ```{r, eval=FALSE} 75 | popgenerator::init_population_settings() %>% 76 | popgenerator::generate_population() 77 | ``` 78 | 79 | ## Population generation: Code sample I 80 | 81 | ```{r, eval=FALSE} 82 | time <- 1:200 83 | 84 | unit_names <- factor(c("group_1", "group_2", "group_3", "group_4")) 85 | 86 | unit_size_functions <- list( 87 | "group_1" = function(t) {20 + 0.4 * t}, 88 | "group_2" = function(t) {20 + (0.04 * t)^2}, 89 | "group_3" = function(t) {50}, 90 | "group_4" = function(t) {20 + 15 * log(t)} 91 | ) 92 | 93 | popgenerator::init_population_settings( 94 | time, unit_names, unit_size_functions, 95 | age_distribution_function, age_range 96 | ) %>% popgenerator::generate_population() -> population 97 | ``` 98 | 99 | ## Population generation: Result 100 | 101 | ![](figures/code_sample_I_population_generation.jpg) 102 | 103 | ## Relations generation 104 | 105 | - Each **human** can have multiple **vertical** (Parent-Child) and **horizontal** (Friendship, Teacher-Student, ...) relations 106 | 107 | - Relations have a **`weight`**, which will be relevant for the idea transmission 108 | 109 | - The amount of **cross-unit relations** depends on a `unit interaction matrix` and `type based interaction probabilities` 110 | 111 | \usebeamertemplate*{title separator} 112 | 113 | R package **popgenerator**: https://github.com/nevrome/popgenerator 114 | 115 | ```{r, eval=FALSE} 116 | popgenerator::init_relations_settings() %>% 117 | popgenerator::generate_relations() 118 | ``` 119 | 120 | ## Relations generation: Code sample II 121 | 122 | ```{r, eval=FALSE} 123 | amount_friends <- 10 124 | 125 | weight_child_of <- 50 126 | weight_friend <- 10 127 | 128 | distance_matrix_equal <- matrix(1, 4, 4) %>% `diag<-`(0) 129 | cross_unit_proportion_child_of <- 0.002 130 | cross_unit_proportion_friend <- 0.01 131 | 132 | popgenerator::init_relations_settings( 133 | population, amount_friends, distance_matrix_equal, 134 | cross_unit_proportion_child_of, cross_unit_proportion_friend, 135 | weight_child_of, weight_friend 136 | ) %>% popgenerator::generate_relations() -> relations 137 | ``` 138 | 139 | ## Relations generation: Result 140 | 141 | ![](figures/code_sample_II_relations_generation.jpg) 142 | 143 | ## Idea expansion 144 | 145 | - **Ideas** start at some nodes at `t = 0` and expand **greedily** in **cycles** 146 | 147 | - Expansion can only happen **along edges** 148 | 149 | - Success of conversion depends on **edge `weight`** and **chance** 150 | 151 | - The simulation **ends**, when the ideas stop expanding 152 | 153 | \usebeamertemplate*{title separator} 154 | 155 | C++ CLI program **gluesless**: https://github.com/nevrome/gluesless 156 | (missing: gluesless-R interface) 157 | 158 | ```{bash, eval=FALSE} 159 | gluesless -pi network.paj -ii idea_config.txt -o output.txt 160 | ``` 161 | 162 | ## Idea expansion: Code sample III 163 | 164 | ```{r, eval=FALSE} 165 | system2( 166 | "../gluesless/build/gluesless", 167 | args = c( 168 | "-pi", graph_file, 169 | "-ii", ideas_file, 170 | "-o", output_file, "-q" 171 | ) 172 | ) 173 | result <- readLines("tmp_data/gluesless_result.txt") 174 | 175 | idea_development <- population %>% 176 | dplyr::mutate( 177 | idea = ifelse(id %in% result_idea_1, "idea_1", "idea_2"), 178 | from = birth_time - abs(birth_time - death_time)/2, 179 | to = death_time 180 | ) %>% 181 | aoristAAR::aorist( 182 | split_vars = c("unit", "idea") 183 | ) 184 | ``` 185 | 186 | ## Idea expansion: Result 187 | 188 | ![](figures/code_sample_III_idea_generation.jpg) 189 | 190 | # What YOU could do now 191 | 192 | ## Comparing real world time series with simulation results 193 | 194 | - Identify processes of fashion change and idea transmission and try to describe them with quantitative (!) **time series** 195 | 196 | - Compare these time series and calculate measures of **cultural distance** 197 | 198 | - Compare multiple measures of cultural and **spatial distance** to identify **correlation** 199 | 200 | \usebeamertemplate*{title separator} 201 | 202 | - Explore **models of idea transmission** to understand the **relation of trait distribution and the structure and behaviour of populations** 203 | 204 | ## Processes of Cultural Transmission: Bronze Age burial rites 205 | 206 | \begin{columns} 207 | \begin{column}{0.40\textwidth} 208 | \begin{figure} 209 | \includegraphics{figures/cultrans_bronzeageburials_map_graves.jpeg} 210 | \end{figure} 211 | \vspace{0.5cm} 212 | \footnotesize{Schmid, Evaluating Cultural Transmission in Bronze Age burial rites of Central, Northern and North-western Europe using radiocarbon data, Adaptive Behavior, \textit{forthcoming}} 213 | \end{column} 214 | \begin{column}{0.26\textwidth} 215 | \begin{figure} 216 | \includegraphics{figures/cultrans_bronzeageburials_development_burial_type.jpeg} 217 | \end{figure} 218 | \end{column} 219 | \end{columns} 220 | 221 | ## 222 | 223 | \titlepage 224 | -------------------------------------------------------------------------------- /metropolis_theme/beamerinnerthemecustommetropolis.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `beamerinnerthemecustommetropolis.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% beamerinnerthemecustommetropolis.dtx (with options: `package') 8 | %% --------------------------------------------------------------------------- 9 | %% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of 10 | %% contributors can be found at 11 | %% 12 | %% https://github.com/matze/mtheme/graphs/contributors 13 | %% 14 | %% and the original template was based on the HSRM theme by Benjamin Weiss. 15 | %% 16 | %% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 17 | %% International License (https://creativecommons.org/licenses/by-sa/4.0/). 18 | %% --------------------------------------------------------------------------- 19 | \NeedsTeXFormat{LaTeX2e} 20 | \ProvidesPackage{beamerinnerthemecustommetropolis}[2017/01/23 Metropolis inner theme] 21 | \RequirePackage{etoolbox} 22 | \RequirePackage{keyval} 23 | \RequirePackage{calc} 24 | \RequirePackage{pgfopts} 25 | \RequirePackage{tikz} 26 | \pgfkeys{ 27 | /custommetropolis/inner/sectionpage/.cd, 28 | .is choice, 29 | none/.code=\custommetropolis@disablesectionpage, 30 | simple/.code={\custommetropolis@enablesectionpage 31 | \setbeamertemplate{section page}[simple]}, 32 | progressbar/.code={\custommetropolis@enablesectionpage 33 | \setbeamertemplate{section page}[progressbar]}, 34 | } 35 | \pgfkeys{ 36 | /custommetropolis/inner/subsectionpage/.cd, 37 | .is choice, 38 | none/.code=\custommetropolis@disablesubsectionpage, 39 | simple/.code={\custommetropolis@enablesubsectionpage 40 | \setbeamertemplate{section page}[simple]}, 41 | progressbar/.code={\custommetropolis@enablesubsectionpage 42 | \setbeamertemplate{section page}[progressbar]}, 43 | } 44 | \newcommand{\custommetropolis@inner@setdefaults}{ 45 | \pgfkeys{/custommetropolis/inner/.cd, 46 | sectionpage=progressbar, 47 | subsectionpage=none 48 | } 49 | } 50 | \setbeamertemplate{title page}{ 51 | \vspace{-30em} 52 | \begin{minipage}[b][\paperheight]{\textwidth} 53 | 54 | \ifx\inserttitlegraphic\@empty\else\usebeamertemplate*{title graphic}\fi 55 | \ifx\inserttitle\@empty\else\usebeamertemplate*{title}\fi 56 | \ifx\insertsubtitle\@empty\else\usebeamertemplate*{subtitle}\fi 57 | \usebeamertemplate*{title separator} 58 | 59 | \vspace{1em} 60 | 61 | \begin{columns} 62 | \begin{column}{0.40\textwidth} 63 | 64 | \footnotesize{\textbf{Clemens Schmid}} 65 | \newline 66 | \footnotesize{@nevromeCS} 67 | \newline 68 | \footnotesize{\textbf{clemens@nevrome.de}} 69 | \newline 70 | \newline 71 | 72 | \footnotesize{\textbf{https://github.com/nevrome/ \newline popgen.styletrans.saa2019}} 73 | 74 | \end{column} 75 | \begin{column}{0.40\textwidth} 76 | 77 | \footnotesize{\textbf{SAA 2019}} 78 | \newline 79 | \newline 80 | \scriptsize{Practical Approaches to Identifying Evolutionary Processes in the Archaeological Record} 81 | \newline 82 | \newline 83 | \scriptsize{\textbf{12/04/2019}} 84 | 85 | \end{column} 86 | \end{columns} 87 | 88 | \end{minipage} 89 | } 90 | \def\maketitle{% 91 | \ifbeamer@inframe 92 | \titlepage 93 | \else 94 | \frame[plain,noframenumbering]{\titlepage} 95 | \fi 96 | } 97 | \def\titlepage{% 98 | \usebeamertemplate{title page} 99 | } 100 | \setbeamertemplate{title graphic}{ 101 | \vbox to 0pt { 102 | \vspace*{2em} 103 | \inserttitlegraphic% 104 | }% 105 | \nointerlineskip% 106 | } 107 | \setbeamertemplate{title}{ 108 | \raggedright% 109 | \linespread{1.0}% 110 | \inserttitle% 111 | \par% 112 | \vspace*{0.5em} 113 | } 114 | \setbeamertemplate{subtitle}{ 115 | \raggedright% 116 | \insertsubtitle% 117 | \par% 118 | \vspace*{0.5em} 119 | } 120 | \newlength{\custommetropolis@titleseparator@linewidth} 121 | \setlength{\custommetropolis@titleseparator@linewidth}{0.4pt} 122 | \setbeamertemplate{title separator}{ 123 | \tikzexternaldisable% 124 | \begin{tikzpicture} 125 | \fill[fg] (0,0) rectangle (\textwidth, \custommetropolis@titleseparator@linewidth); 126 | \end{tikzpicture}% 127 | \tikzexternalenable% 128 | \par% 129 | } 130 | \setbeamertemplate{author}{ 131 | \vspace*{2em} 132 | \textbf 133 | \insertauthor% 134 | \par% 135 | \vspace*{0.25em} 136 | } 137 | \setbeamertemplate{date}{ 138 | \footnotesize 139 | \insertdate% 140 | \par% 141 | } 142 | \setbeamertemplate{institute}{ 143 | \vspace*{3mm} 144 | \insertinstitute% 145 | \par% 146 | } 147 | \defbeamertemplate{section page}{simple}{ 148 | \begin{center} 149 | \usebeamercolor[fg]{section title} 150 | \usebeamerfont{section title} 151 | \insertsectionhead\par 152 | \ifx\insertsubsectionhead\@empty\else 153 | \usebeamercolor[fg]{subsection title} 154 | \usebeamerfont{subsection title} 155 | \insertsubsectionhead 156 | \fi 157 | \end{center} 158 | } 159 | \defbeamertemplate{section page}{progressbar}{ 160 | \centering 161 | \begin{minipage}{22em} 162 | \raggedright 163 | \usebeamercolor[fg]{section title} 164 | \usebeamerfont{section title} 165 | \insertsectionhead\\[-1ex] 166 | \usebeamertemplate*{progress bar in section page} 167 | \par 168 | \ifx\insertsubsectionhead\@empty\else% 169 | \usebeamercolor[fg]{subsection title}% 170 | \usebeamerfont{subsection title}% 171 | \insertsubsectionhead 172 | \fi 173 | \end{minipage} 174 | \par 175 | \vspace{\baselineskip} 176 | } 177 | \newcommand{\custommetropolis@disablesectionpage}{ 178 | \AtBeginSection{ 179 | % intentionally empty 180 | } 181 | } 182 | \newcommand{\custommetropolis@enablesectionpage}{ 183 | \AtBeginSection{ 184 | \ifbeamer@inframe 185 | \sectionpage 186 | \else 187 | \frame[plain,c,noframenumbering]{\sectionpage} 188 | \fi 189 | } 190 | } 191 | \setbeamertemplate{subsection page}{% 192 | \usebeamertemplate*{section page} 193 | } 194 | \newcommand{\custommetropolis@disablesubsectionpage}{ 195 | \AtBeginSubsection{ 196 | % intentionally empty 197 | } 198 | } 199 | \newcommand{\custommetropolis@enablesubsectionpage}{ 200 | \AtBeginSubsection{ 201 | \ifbeamer@inframe 202 | \subsectionpage 203 | \else 204 | \frame[plain,c,noframenumbering]{\subsectionpage} 205 | \fi 206 | } 207 | } 208 | \newlength{\custommetropolis@progressonsectionpage} 209 | \newlength{\custommetropolis@progressonsectionpage@linewidth} 210 | \setlength{\custommetropolis@progressonsectionpage@linewidth}{0.4pt} 211 | \setbeamertemplate{progress bar in section page}{ 212 | \setlength{\custommetropolis@progressonsectionpage}{% 213 | \textwidth * \ratio{\insertframenumber pt}{\inserttotalframenumber pt}% 214 | }% 215 | \tikzexternaldisable% 216 | \begin{tikzpicture} 217 | \fill[bg] (0,0) rectangle (\textwidth, \custommetropolis@progressonsectionpage@linewidth); 218 | \fill[fg] (0,0) rectangle (\custommetropolis@progressonsectionpage, \custommetropolis@progressonsectionpage@linewidth); 219 | \end{tikzpicture}% 220 | \tikzexternalenable% 221 | } 222 | \def\inserttotalframenumber{100} 223 | \newlength{\custommetropolis@blocksep} 224 | \newlength{\custommetropolis@blockadjust} 225 | \setlength{\custommetropolis@blocksep}{0.75ex} 226 | \setlength{\custommetropolis@blockadjust}{0.25ex} 227 | \providecommand{\custommetropolis@strut}{% 228 | \vphantom{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz()}% 229 | } 230 | \newcommand{\custommetropolis@block}[1]{ 231 | \par\vskip\medskipamount% 232 | \setlength{\parskip}{0pt} 233 | \ifbeamercolorempty[bg]{block title#1}{% 234 | \begin{beamercolorbox}[rightskip=0pt plus 4em]{block title#1}}{% 235 | \ifbeamercolorempty[bg]{block title}{% 236 | \begin{beamercolorbox}[rightskip=0pt plus 4em]{block title#1}% 237 | }% 238 | {% 239 | \begin{beamercolorbox}[ 240 | sep=\dimexpr\custommetropolis@blocksep-\custommetropolis@blockadjust\relax, 241 | leftskip=\custommetropolis@blockadjust, 242 | rightskip=\dimexpr\custommetropolis@blockadjust plus 4em\relax 243 | ]{block title#1}% 244 | }}% 245 | \usebeamerfont*{block title#1}% 246 | \custommetropolis@strut% 247 | \insertblocktitle% 248 | \custommetropolis@strut% 249 | \end{beamercolorbox}% 250 | \nointerlineskip% 251 | \ifbeamercolorempty[bg]{block body#1}{% 252 | \begin{beamercolorbox}[vmode]{block body#1}}{ 253 | \ifbeamercolorempty[bg]{block body}{% 254 | \begin{beamercolorbox}[vmode]{block body#1}% 255 | }{% 256 | \begin{beamercolorbox}[sep=\custommetropolis@blocksep, vmode]{block body#1}% 257 | \vspace{-\custommetropolis@parskip} 258 | }}% 259 | \usebeamerfont{block body#1}% 260 | \setlength{\parskip}{\custommetropolis@parskip}% 261 | } 262 | \setbeamertemplate{block begin}{\custommetropolis@block{}} 263 | \setbeamertemplate{block alerted begin}{\custommetropolis@block{ alerted}} 264 | \setbeamertemplate{block example begin}{\custommetropolis@block{ example}} 265 | \setbeamertemplate{block end}{\end{beamercolorbox}\vspace*{0.2ex}} 266 | \setbeamertemplate{block alerted end}{\end{beamercolorbox}\vspace*{0.2ex}} 267 | \setbeamertemplate{block example end}{\end{beamercolorbox}\vspace*{0.2ex}} 268 | \setbeamertemplate{itemize items}{\textbullet} 269 | \setbeamertemplate{caption label separator}{: } 270 | \setbeamertemplate{caption}[numbered] 271 | \setbeamertemplate{footnote}{% 272 | \parindent 0em\noindent% 273 | \raggedright 274 | \usebeamercolor{footnote}\hbox to 0.8em{\hfil\insertfootnotemark}\insertfootnotetext\par% 275 | } 276 | \newlength{\custommetropolis@parskip} 277 | \setlength{\custommetropolis@parskip}{0.5em} 278 | \setlength{\parskip}{\custommetropolis@parskip} 279 | \linespread{1.15} 280 | \define@key{beamerframe}{c}[true]{% centered 281 | \beamer@frametopskip=0pt plus 1fill\relax% 282 | \beamer@framebottomskip=0pt plus 1fill\relax% 283 | \beamer@frametopskipautobreak=0pt plus .4\paperheight\relax% 284 | \beamer@framebottomskipautobreak=0pt plus .6\paperheight\relax% 285 | \def\beamer@initfirstlineunskip{}% 286 | } 287 | \providebool{custommetropolis@standout} 288 | \define@key{beamerframe}{standout}[true]{% 289 | \booltrue{custommetropolis@standout} 290 | \begingroup 291 | \setkeys{beamerframe}{c} 292 | \setkeys{beamerframe}{noframenumbering} 293 | \ifbeamercolorempty[bg]{palette primary}{ 294 | \setbeamercolor{background canvas}{ 295 | use=palette primary, 296 | bg=-palette primary.fg 297 | } 298 | }{ 299 | \setbeamercolor{background canvas}{ 300 | use=palette primary, 301 | bg=palette primary.bg 302 | } 303 | } 304 | \setbeamercolor{local structure}{ 305 | fg=palette primary.fg 306 | } 307 | \centering 308 | \usebeamercolor[fg]{palette primary} 309 | \usebeamerfont{standout} 310 | } 311 | \apptocmd{\beamer@reseteecodes}{% 312 | \ifbool{custommetropolis@standout}{ 313 | \endgroup 314 | \boolfalse{custommetropolis@standout} 315 | }{} 316 | }{}{} 317 | \custommetropolis@inner@setdefaults 318 | \ProcessPgfPackageOptions{/custommetropolis/inner} 319 | \endinput 320 | %% 321 | %% End of file `beamerinnerthemecustommetropolis.sty'. 322 | -------------------------------------------------------------------------------- /metropolis_theme/beamerfontthemecustommetropolis.sty: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `beamerfontthemecustommetropolis.sty', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% beamerfontthemecustommetropolis.dtx (with options: `package') 8 | %% --------------------------------------------------------------------------- 9 | %% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of 10 | %% contributors can be found at 11 | %% 12 | %% https://github.com/matze/mtheme/graphs/contributors 13 | %% 14 | %% and the original template was based on the HSRM theme by Benjamin Weiss. 15 | %% 16 | %% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 17 | %% International License (https://creativecommons.org/licenses/by-sa/4.0/). 18 | %% --------------------------------------------------------------------------- 19 | \NeedsTeXFormat{LaTeX2e} 20 | \ProvidesPackage{beamerfontthemecustommetropolis}[2017/01/23 Metropolis font theme] 21 | \RequirePackage{etoolbox} 22 | \RequirePackage{ifxetex} 23 | \RequirePackage{ifluatex} 24 | \RequirePackage{pgfopts} 25 | \ifboolexpr{bool {xetex} or bool {luatex}}{ 26 | \@ifpackageloaded{fontspec}{ 27 | \PassOptionsToPackage{no-math}{fontspec} 28 | }{ 29 | \RequirePackage[no-math]{fontspec} 30 | } 31 | \newcounter{fontsnotfound} 32 | \newcommand{\checkfont}[1]{% 33 | \suppressfontnotfounderror=1% 34 | \font\x = "#1" at 10pt 35 | \selectfont 36 | \ifx\x\nullfont% 37 | \stepcounter{fontsnotfound}% 38 | \fi% 39 | \suppressfontnotfounderror=0% 40 | } 41 | 42 | \newcommand{\iffontsavailable}[3]{% 43 | \setcounter{fontsnotfound}{0}% 44 | \expandafter\forcsvlist\expandafter% 45 | \checkfont\expandafter{#1}% 46 | \ifnum\value{fontsnotfound}=0% 47 | #2% 48 | \else% 49 | #3% 50 | \fi% 51 | } 52 | \iffontsavailable{Fira Sans Light,% 53 | Fira Sans Light Italic,% 54 | Fira Sans,% 55 | Fira Sans Italic}% 56 | {% 57 | \setsansfont[ItalicFont={Fira Sans Light Italic},% 58 | BoldFont={Fira Sans},% 59 | BoldItalicFont={Fira Sans Italic}]% 60 | {Fira Sans Light}% 61 | }{% 62 | \iffontsavailable{Fira Sans Light OT,% 63 | Fira Sans Light Italic OT,% 64 | Fira Sans OT,% 65 | Fira Sans Italic OT}% 66 | {% 67 | \setsansfont[ItalicFont={Fira Sans Light Italic OT},% 68 | BoldFont={Fira Sans OT},% 69 | BoldItalicFont={Fira Sans Italic OT}]% 70 | {Fira Sans Light OT}% 71 | }{% 72 | \PackageWarning{beamerthemecustommetropolis}{% 73 | Could not find Fira Sans fonts% 74 | } 75 | } 76 | } 77 | \iffontsavailable{Fira Mono, Fira Mono Bold}{% 78 | \setmonofont[BoldFont={Fira Mono Medium}]{Fira Mono}% 79 | }{% 80 | \iffontsavailable{Fira Mono OT, Fira Mono Bold OT}{% 81 | \setmonofont[BoldFont={Fira Mono Medium OT}]{Fira Mono OT}% 82 | }{% 83 | \PackageWarning{beamerthemecustommetropolis}{% 84 | Could not find Fira Mono fonts% 85 | } 86 | } 87 | } 88 | \AtBeginEnvironment{tabular}{% 89 | \addfontfeature{Numbers={Monospaced}}% 90 | } 91 | }{% 92 | \PackageWarning{beamerthemecustommetropolis}{% 93 | You need to compile with XeLaTeX or LuaLaTeX to use the Fira fonts% 94 | } 95 | } 96 | \setbeamerfont{title}{size=\Large,% 97 | series=\bfseries} 98 | \setbeamerfont{author}{size=\small} 99 | \setbeamerfont{date}{size=\small} 100 | \setbeamerfont{section title}{size=\Large,% 101 | series=\bfseries} 102 | \setbeamerfont{block title}{size=\normalsize,% 103 | series=\bfseries} 104 | \setbeamerfont{block title alerted}{size=\normalsize,% 105 | series=\bfseries} 106 | \setbeamerfont*{subtitle}{size=\large} 107 | \setbeamerfont{frametitle}{size=\large,% 108 | series=\bfseries} 109 | \setbeamerfont{caption}{size=\footnotesize} 110 | \setbeamerfont{caption name}{series=\bfseries} 111 | \setbeamerfont{description item}{series=\bfseries} 112 | \setbeamerfont{page number in head/foot}{size=\scriptsize} 113 | \setbeamerfont{bibliography entry author}{size=\normalsize,% 114 | series=\normalfont} 115 | \setbeamerfont{bibliography entry title}{size=\normalsize,% 116 | series=\bfseries} 117 | \setbeamerfont{bibliography entry location}{size=\normalsize,% 118 | series=\normalfont} 119 | \setbeamerfont{bibliography entry note}{size=\small,% 120 | series=\normalfont} 121 | \setbeamerfont{standout}{size=\Large,% 122 | series=\bfseries} 123 | \pgfkeys{ 124 | /custommetropolis/font/titleformat title/.cd, 125 | .is choice, 126 | regular/.code={% 127 | \let\custommetropolis@titleformat\@empty% 128 | \setbeamerfont{title}{shape=\normalfont}% 129 | }, 130 | smallcaps/.code={% 131 | \let\custommetropolis@titleformat\@empty% 132 | \setbeamerfont{title}{shape=\scshape}% 133 | }, 134 | allsmallcaps/.code={% 135 | \let\custommetropolis@titleformat\lowercase% 136 | \setbeamerfont{title}{shape=\scshape}% 137 | \PackageWarning{beamerthemecustommetropolis}{% 138 | Be aware that titleformat title=allsmallcaps can lead to problems% 139 | } 140 | }, 141 | allcaps/.code={% 142 | \let\custommetropolis@titleformat\uppercase% 143 | \setbeamerfont{title}{shape=\normalfont} 144 | \PackageWarning{beamerthemecustommetropolis}{% 145 | Be aware that titleformat title=allcaps can lead to problems% 146 | } 147 | }, 148 | } 149 | \pgfkeys{ 150 | /custommetropolis/font/titleformat subtitle/.cd, 151 | .is choice, 152 | regular/.code={% 153 | \let\custommetropolis@subtitleformat\@empty% 154 | \setbeamerfont{subtitle}{shape=\normalfont}% 155 | }, 156 | smallcaps/.code={% 157 | \let\custommetropolis@subtitleformat\@empty% 158 | \setbeamerfont{subtitle}{shape=\scshape}% 159 | }, 160 | allsmallcaps/.code={% 161 | \let\custommetropolis@subtitleformat\lowercase% 162 | \setbeamerfont{subtitle}{shape=\scshape}% 163 | \PackageWarning{beamerthemecustommetropolis}{% 164 | Be aware that titleformat subtitle=allsmallcaps can lead to problems% 165 | } 166 | }, 167 | allcaps/.code={% 168 | \let\custommetropolis@subtitleformat\uppercase% 169 | \setbeamerfont{subtitle}{shape=\normalfont}% 170 | \PackageWarning{beamerthemecustommetropolis}{% 171 | Be aware that titleformat subtitle=allcaps can lead to problems% 172 | } 173 | }, 174 | } 175 | \pgfkeys{ 176 | /custommetropolis/font/titleformat section/.cd, 177 | .is choice, 178 | regular/.code={% 179 | \let\custommetropolis@sectiontitleformat\@empty% 180 | \setbeamerfont{section title}{shape=\normalfont}% 181 | }, 182 | smallcaps/.code={% 183 | \let\custommetropolis@sectiontitleformat\@empty% 184 | \setbeamerfont{section title}{shape=\scshape}% 185 | }, 186 | allsmallcaps/.code={% 187 | \let\custommetropolis@sectiontitleformat\MakeLowercase% 188 | \setbeamerfont{section title}{shape=\scshape}% 189 | \PackageWarning{beamerthemecustommetropolis}{% 190 | Be aware that titleformat section=allsmallcaps can lead to problems% 191 | } 192 | }, 193 | allcaps/.code={% 194 | \let\custommetropolis@sectiontitleformat\MakeUppercase% 195 | \setbeamerfont{section title}{shape=\normalfont}% 196 | \PackageWarning{beamerthemecustommetropolis}{% 197 | Be aware that titleformat section=allcaps can lead to problems% 198 | } 199 | }, 200 | } 201 | \pgfkeys{ 202 | /custommetropolis/font/titleformat frame/.cd, 203 | .is choice, 204 | regular/.code={% 205 | \let\custommetropolis@frametitleformat\@empty% 206 | \setbeamerfont{frametitle}{shape=\normalfont}% 207 | }, 208 | smallcaps/.code={% 209 | \let\custommetropolis@frametitleformat\@empty% 210 | \setbeamerfont{frametitle}{shape=\scshape}% 211 | }, 212 | allsmallcaps/.code={% 213 | \let\custommetropolis@frametitleformat\MakeLowercase% 214 | \setbeamerfont{frametitle}{shape=\scshape}% 215 | \PackageWarning{beamerthemecustommetropolis}{% 216 | Be aware that titleformat frame=allsmallcaps can lead to problems% 217 | } 218 | }, 219 | allcaps/.code={% 220 | \let\custommetropolis@frametitleformat\MakeUppercase% 221 | \setbeamerfont{frametitle}{shape=\normalfont} 222 | \PackageWarning{beamerthemecustommetropolis}{% 223 | Be aware that titleformat frame=allcaps can lead to problems% 224 | } 225 | }, 226 | } 227 | \pgfkeys{ 228 | /custommetropolis/font/.cd, 229 | titleformattitle/.code=\pgfkeysalso{titleformat title=#1}, 230 | titleformatsubtitle/.code=\pgfkeysalso{titleformat subtitle=#1}, 231 | titleformatsection/.code=\pgfkeysalso{titleformat section=#1}, 232 | titleformatframe/.code=\pgfkeysalso{titleformat frame=#1}, 233 | } 234 | \newcommand{\custommetropolis@font@setdefaults}{ 235 | \pgfkeys{/custommetropolis/font/.cd, 236 | titleformat title=regular, 237 | titleformat subtitle=regular, 238 | titleformat section=regular, 239 | titleformat frame=regular, 240 | } 241 | } 242 | \def\custommetropolis@titleformat#1{#1} 243 | \def\custommetropolis@subtitleformat#1{#1} 244 | \def\custommetropolis@sectiontitleformat#1{#1} 245 | \def\custommetropolis@frametitleformat#1{#1} 246 | \patchcmd{\beamer@title}% 247 | {\def\inserttitle{#2}}% 248 | {\def\inserttitle{\custommetropolis@titleformat{#2}}}% 249 | {}% 250 | {\PackageError{beamerfontthemecustommetropolis}{Patching title failed}\@ehc} 251 | \patchcmd{\beamer@subtitle}% 252 | {\def\insertsubtitle{#2}}% 253 | {\def\insertsubtitle{\custommetropolis@subtitleformat{#2}}}% 254 | {}% 255 | {\PackageError{beamerfontthemecustommetropolis}{Patching subtitle failed}\@ehc} 256 | \patchcmd{\sectionentry} 257 | {\def\insertsectionhead{#2}} 258 | {\def\insertsectionhead{\custommetropolis@sectiontitleformat{#2}}} 259 | {} 260 | {\PackageError{beamerfontthemecustommetropolis}{Patching section title failed}\@ehc} 261 | \@tempswafalse 262 | \patchcmd{\beamer@section} 263 | {\edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\unexpanded{#1}}}} 264 | {\edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{% 265 | \noexpand\custommetropolis@sectiontitleformat{\unexpanded{#1}}}}} 266 | {\@tempswatrue} 267 | {} 268 | \patchcmd{\beamer@section} 269 | {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}} 270 | {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{% 271 | \custommetropolis@sectiontitleformat{#1}}}} 272 | {\@tempswatrue} 273 | {} 274 | \patchcmd{\beamer@section} 275 | {\protected@edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}} 276 | {\protected@edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{% 277 | \noexpand\custommetropolis@sectiontitleformat{#1}}}} 278 | {\@tempswatrue} 279 | {} 280 | \if@tempswa\else 281 | \PackageError{beamerfontthemecustommetropolis}{Patching section title failed}\@ehc 282 | \fi 283 | \@tempswafalse 284 | \patchcmd{\beamer@subsection} 285 | {\edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{\unexpanded{#1}}}} 286 | {\edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{% 287 | \noexpand\custommetropolis@sectiontitleformat{\unexpanded{#1}}}}} 288 | {\@tempswatrue} 289 | {} 290 | \patchcmd{\beamer@subsection} 291 | {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{#1}}} 292 | {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{% 293 | \custommetropolis@sectiontitleformat{#1}}}} 294 | {\@tempswatrue} 295 | {} 296 | \patchcmd{\beamer@subsection} 297 | {\protected@edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}} 298 | {\protected@edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{% 299 | \noexpand\custommetropolis@sectiontitleformat{#1}}}} 300 | {\@tempswatrue} 301 | {} 302 | \if@tempswa\else 303 | \PackageError{beamerfontthemecustommetropolis}{Patching section title failed}\@ehc 304 | \fi 305 | \patchcmd{\beamer@@frametitle} 306 | {{% 307 | \gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space% 308 | \usebeamertemplate*{frametitle continuation}\fi}}% 309 | \gdef\beamer@frametitle{#2}% 310 | \gdef\beamer@shortframetitle{#1}% 311 | }} 312 | {{% 313 | \gdef\insertframetitle{{\custommetropolis@frametitleformat{#2}\ifnum% 314 | \beamer@autobreakcount>0\relax{}\space% 315 | \usebeamertemplate*{frametitle continuation}\fi}}% 316 | \gdef\beamer@frametitle{#2}% 317 | \gdef\beamer@shortframetitle{#1}% 318 | }} 319 | {} 320 | {\PackageError{beamerfontthemecustommetropolis}{Patching frame title failed}\@ehc} 321 | \custommetropolis@font@setdefaults 322 | \ProcessPgfPackageOptions{/custommetropolis/font} 323 | \endinput 324 | %% 325 | %% End of file `beamerfontthemecustommetropolis.sty'. 326 | -------------------------------------------------------------------------------- /tmp_data/gluesless_result.txt: -------------------------------------------------------------------------------- 1 | Number of iterations: 2 | 20 3 | 4 | Number of remaining nodes after this iteration: 5 | 4020 4014 3976 3800 3417 3107 2890 2661 2401 2151 1921 1651 1353 1020 739 509 248 83 26 11 11 6 | 7 | Nodes per Idea: 8 | idea_2 9 | 433 283 465 186 194 234 253 323 327 343 352 377 382 410 421 506 524 532 543 551 561 579 53 78 118 125 127 135 136 142 149 156 159 164 177 182 187 190 197 218 235 247 249 261 267 282 284 286 288 289 292 301 308 314 325 326 332 354 355 359 367 370 378 381 391 396 407 413 417 422 423 426 427 443 453 471 472 473 489 494 495 500 502 504 508 533 534 541 557 563 575 590 600 601 608 610 612 613 617 626 629 630 631 632 634 654 663 680 705 12 27 28 32 38 40 42 48 61 63 74 77 86 87 88 89 102 106 111 117 120 121 137 138 141 144 148 150 153 157 163 170 178 179 183 185 188 193 195 196 203 207 209 211 213 214 217 220 225 236 238 245 246 252 257 262 270 271 272 277 278 285 294 299 300 302 303 306 309 316 317 319 322 328 330 331 333 336 337 341 342 344 347 353 356 361 362 366 369 372 380 383 384 387 389 390 395 399 400 401 405 412 418 424 428 429 430 431 444 446 451 461 466 475 484 488 499 503 510 511 513 518 522 538 540 542 546 547 550 553 554 555 559 562 564 566 569 574 580 581 587 588 589 596 607 609 618 621 635 642 643 646 648 649 650 652 658 664 668 669 670 671 676 677 679 682 684 690 691 692 694 700 715 718 728 729 730 733 738 748 754 759 763 764 765 769 777 778 780 805 815 816 6 7 11 14 18 19 20 37 39 49 52 59 67 73 80 81 82 83 98 105 107 108 116 119 124 132 143 147 151 162 169 172 173 174 175 181 184 191 208 210 212 219 228 237 239 248 258 263 265 266 290 305 318 321 351 371 411 425 432 438 440 441 442 452 460 479 485 486 487 493 501 509 512 523 531 537 539 548 565 611 616 620 633 644 653 655 661 662 667 678 688 689 698 699 703 706 708 711 717 725 726 731 732 739 740 741 742 749 751 756 757 760 766 767 768 770 771 773 776 779 783 790 794 804 806 808 817 818 819 821 825 826 831 833 834 840 841 842 843 845 847 849 850 856 862 863 864 865 866 872 873 874 875 876 887 888 904 905 910 911 920 942 952 4 10 36 62 97 115 126 154 189 205 243 556 687 707 772 781 782 785 789 791 792 793 799 800 803 807 820 827 832 835 836 844 846 851 857 858 860 877 879 880 890 897 901 902 903 906 908 914 915 921 922 923 924 925 930 931 933 934 938 944 948 950 951 955 956 957 963 966 972 973 974 976 981 992 993 1001 1003 1004 1005 1022 1023 1043 1055 1056 1065 1072 1074 1096 1119 47 889 907 912 913 919 943 945 946 947 953 961 975 977 978 982 983 995 996 1002 1013 1015 1016 1025 1029 1037 1048 1057 1064 1066 1073 1075 1090 1097 1098 1099 1100 1117 1118 1120 1126 1137 1148 1149 1150 1151 1159 1160 1173 1183 1201 1203 1213 1215 1216 1228 1229 1243 1253 1254 1304 1305 1027 1067 1103 1104 1122 1123 1202 1214 1217 1218 1278 1294 1325 1326 1355 1357 1367 1399 1138 1163 1364 10 | idea_1 11 | 365 437 525 165 230 251 275 295 392 420 450 457 474 481 527 530 570 582 583 604 645 666 13 15 22 56 57 58 71 92 104 113 123 128 145 168 200 204 224 231 232 242 254 276 280 281 296 297 304 310 312 335 345 346 360 368 373 374 379 385 394 403 439 448 455 456 463 480 482 483 492 496 505 507 514 520 526 535 545 549 552 573 576 585 591 605 614 619 625 636 637 638 640 641 651 657 659 660 673 674 695 696 702 719 727 743 775 802 814 823 1011 3 8 16 21 23 24 29 33 41 43 45 51 55 60 64 68 72 79 84 93 94 95 99 109 110 112 114 129 131 133 139 140 152 158 160 161 166 180 192 198 199 206 215 221 222 223 226 227 229 233 240 241 255 256 259 260 264 268 269 279 287 291 293 298 311 313 315 320 329 334 338 339 340 348 357 358 363 364 376 388 393 397 404 406 414 415 419 435 436 445 447 449 454 458 462 464 467 469 470 476 477 478 491 498 516 517 519 521 528 529 544 558 560 567 568 572 577 578 584 586 592 593 594 595 597 599 603 622 623 624 627 628 639 647 656 665 675 681 683 685 686 693 697 701 709 710 712 713 722 724 734 735 736 744 745 755 761 762 774 788 801 810 811 812 813 828 829 837 838 852 853 854 855 861 871 885 891 927 928 929 932 936 990 1000 1012 1033 1081 1115 1136 1241 1350 1 5 9 17 30 31 34 44 50 65 66 69 75 76 85 90 91 96 101 103 122 134 167 171 176 201 216 244 250 273 307 324 349 350 375 386 398 402 408 409 416 434 459 468 490 497 515 536 571 598 606 615 672 704 714 716 720 721 723 746 747 750 752 753 758 784 786 787 795 796 797 809 822 824 830 839 859 868 869 870 881 882 886 894 895 896 898 900 909 916 918 926 935 939 940 954 964 965 968 971 979 980 987 988 991 998 999 1009 1010 1017 1018 1020 1021 1032 1034 1035 1040 1041 1042 1052 1053 1054 1076 1079 1082 1083 1084 1093 1095 1124 1133 1146 1171 1172 1182 1226 1238 1239 1240 1252 1264 1276 1336 1389 1407 1562 1563 2 26 46 70 100 146 155 602 737 798 848 867 878 883 884 892 893 899 917 937 941 949 958 959 960 962 969 970 984 986 989 994 1006 1014 1024 1026 1030 1031 1046 1050 1051 1058 1062 1063 1069 1070 1071 1077 1078 1080 1088 1089 1091 1094 1105 1106 1116 1125 1129 1131 1132 1134 1135 1144 1147 1158 1168 1170 1178 1179 1189 1196 1197 1199 1200 1209 1210 1211 1227 1234 1235 1251 1261 1263 1265 1285 1292 1301 1303 1312 1321 1322 1351 1363 1379 1380 1381 1406 1408 1418 1421 1430 1431 1445 1447 1459 1460 1463 1470 1480 1491 1508 1517 1541 1545 1576 1586 1607 1631 1666 1669 1680 1704 1729 1732 1762 1775 1841 25 130 202 967 985 997 1007 1008 1019 1039 1044 1047 1049 1059 1060 1061 1068 1085 1087 1101 1108 1110 1111 1113 1114 1121 1127 1128 1130 1139 1140 1145 1153 1164 1169 1175 1177 1180 1181 1188 1198 1225 1236 1237 1247 1249 1250 1259 1260 1262 1267 1268 1275 1277 1279 1286 1293 1298 1299 1300 1302 1317 1319 1320 1323 1327 1328 1334 1335 1337 1344 1346 1347 1349 1352 1362 1366 1369 1375 1376 1377 1388 1394 1395 1414 1420 1428 1439 1446 1467 1468 1492 1493 1494 1501 1510 1520 1531 1534 1542 1543 1544 1548 1550 1551 1554 1561 1565 1566 1573 1575 1577 1595 1605 1606 1608 1610 1611 1620 1621 1632 1634 1642 1643 1644 1645 1667 1679 1682 1683 1685 1692 1693 1700 1702 1727 1742 1753 1757 1770 1772 1785 1797 1800 1814 1826 1832 1843 1860 1861 1881 1882 1893 1894 1896 1897 1898 1910 1923 1924 1951 1954 1965 1974 1975 1995 2012 274 1028 1036 1038 1045 1092 1102 1107 1109 1141 1142 1152 1154 1156 1157 1161 1162 1165 1167 1174 1184 1185 1186 1187 1190 1191 1193 1194 1205 1208 1212 1219 1220 1221 1224 1231 1242 1246 1248 1256 1257 1266 1269 1271 1272 1283 1290 1295 1297 1310 1311 1313 1318 1324 1331 1338 1339 1348 1353 1354 1356 1358 1360 1365 1368 1374 1378 1382 1386 1387 1390 1392 1393 1397 1398 1400 1402 1404 1405 1409 1410 1411 1412 1413 1419 1426 1427 1432 1433 1434 1435 1436 1437 1438 1440 1441 1442 1443 1444 1448 1456 1457 1458 1461 1462 1464 1466 1469 1471 1476 1477 1478 1481 1482 1486 1489 1490 1495 1497 1500 1502 1503 1505 1506 1507 1509 1519 1521 1528 1532 1536 1539 1546 1547 1552 1553 1564 1578 1590 1598 1600 1609 1623 1624 1630 1633 1636 1662 1671 1681 1684 1686 1691 1701 1703 1705 1713 1714 1715 1716 1728 1730 1731 1741 1743 1754 1755 1756 1758 1760 1761 1771 1773 1786 1799 1801 1802 1813 1816 1817 1830 1833 1842 1844 1862 1863 1879 1880 1907 1909 1919 1920 1935 1937 1938 1942 1950 1952 1953 1961 1963 1976 1978 1994 1996 1999 2000 2002 2003 2025 2038 2039 2049 2050 2069 2084 2085 2086 2098 2099 2102 2118 2120 2131 2132 2133 2134 2149 2150 2151 2152 2153 2161 2162 2166 2167 2174 2176 2193 2195 2197 2220 1086 1112 1143 1155 1166 1176 1192 1195 1204 1206 1207 1222 1223 1230 1232 1233 1244 1255 1258 1270 1273 1274 1280 1281 1282 1284 1288 1289 1291 1296 1306 1307 1308 1309 1314 1329 1333 1340 1341 1342 1345 1361 1370 1372 1373 1384 1391 1396 1401 1403 1415 1416 1417 1422 1424 1425 1429 1449 1450 1452 1455 1465 1472 1474 1475 1479 1483 1484 1485 1487 1488 1496 1499 1511 1513 1515 1516 1518 1522 1524 1526 1527 1529 1530 1533 1535 1537 1538 1549 1558 1559 1560 1567 1568 1569 1572 1574 1580 1581 1582 1583 1584 1585 1587 1588 1589 1591 1592 1594 1596 1597 1602 1603 1604 1612 1616 1617 1618 1622 1626 1628 1639 1640 1648 1653 1655 1656 1657 1658 1659 1660 1664 1665 1668 1670 1672 1673 1676 1678 1706 1708 1737 1738 1740 1747 1759 1764 1774 1777 1784 1831 1859 1864 1883 1895 1908 1911 1921 1922 1925 1936 1939 1940 1962 1964 1977 1979 1986 1988 1989 1997 1998 2001 2021 2023 2024 2037 2040 2047 2051 2052 2053 2060 2061 2070 2071 2087 2101 2119 2121 2135 2136 2163 2165 2168 2175 2178 2179 2189 2190 2191 2194 2196 2207 2208 2209 2210 2211 2212 2213 2221 2222 2223 2225 2226 2228 2241 2242 2243 2244 2245 2246 2247 2255 2266 2267 2268 2279 2282 2283 2284 2309 2310 2326 2335 2347 2348 2349 2366 2368 2384 2392 2393 2397 2434 2443 2757 1245 1287 1315 1316 1330 1332 1343 1359 1371 1383 1385 1423 1451 1453 1454 1473 1498 1504 1512 1514 1523 1525 1555 1556 1557 1570 1571 1579 1599 1601 1613 1614 1615 1619 1625 1627 1629 1635 1637 1638 1641 1646 1649 1650 1651 1652 1654 1661 1675 1677 1688 1690 1695 1697 1698 1699 1707 1709 1710 1711 1712 1717 1718 1719 1722 1723 1724 1725 1726 1734 1735 1736 1739 1744 1745 1746 1748 1749 1750 1751 1752 1763 1765 1766 1768 1769 1778 1779 1781 1782 1787 1791 1792 1793 1795 1803 1804 1806 1807 1810 1811 1815 1819 1820 1821 1822 1828 1837 1846 1849 1851 1853 1854 1866 1871 1884 1885 1888 1891 1892 1904 1933 1941 1958 1987 2033 2041 2059 2081 2083 2093 2094 2112 2114 2127 2129 2137 2142 2173 2177 2192 2224 2227 2230 2232 2248 2249 2254 2265 2269 2270 2280 2281 2297 2311 2312 2323 2324 2325 2346 2350 2351 2362 2363 2364 2365 2367 2379 2383 2394 2395 2396 2412 2413 2422 2423 2432 2433 2435 2444 2445 2446 2447 2459 2460 2461 2463 2464 2465 2466 2467 2479 2480 2481 2484 2485 2486 2487 2488 2500 2502 2504 2505 2506 2507 2518 2522 2535 2538 2541 2542 2543 2563 2566 2577 2579 2591 2596 2606 2629 2684 2687 2730 2793 2840 2851 2909 2926 2928 2939 1540 1593 1647 1663 1674 1687 1689 1694 1696 1720 1721 1733 1767 1776 1780 1783 1788 1789 1790 1794 1796 1805 1808 1809 1812 1818 1823 1824 1825 1827 1829 1834 1835 1836 1838 1839 1840 1845 1847 1848 1850 1852 1855 1856 1857 1865 1867 1868 1870 1872 1873 1874 1875 1876 1877 1878 1886 1887 1889 1890 1900 1901 1902 1903 1905 1906 1912 1913 1914 1915 1916 1917 1926 1929 1930 1931 1943 1945 1946 1947 1949 1955 1956 1957 1959 1960 1966 1967 1969 1971 1980 1981 1982 1984 1985 1991 1992 2004 2006 2007 2008 2015 2016 2018 2020 2028 2029 2034 2036 2048 2056 2058 2064 2075 2076 2090 2100 2105 2107 2109 2110 2115 2124 2147 2148 2160 2170 2172 2184 2186 2204 2206 2214 2217 2219 2233 2234 2235 2236 2237 2238 2239 2252 2256 2257 2264 2275 2277 2292 2308 2319 2327 2331 2333 2341 2375 2381 2382 2414 2442 2448 2449 2453 2458 2462 2478 2482 2483 2498 2499 2501 2512 2515 2517 2519 2520 2521 2529 2536 2537 2539 2540 2544 2555 2556 2562 2564 2565 2573 2575 2576 2578 2592 2593 2594 2595 2602 2604 2605 2614 2615 2617 2626 2630 2637 2638 2640 2641 2652 2653 2654 2655 2657 2658 2666 2668 2669 2670 2671 2672 2673 2674 2690 2693 2708 2709 2710 2722 2723 2726 2731 2732 2743 2744 2745 2746 2759 2760 2762 2763 2764 2777 2795 2809 2823 2825 2826 2839 2842 2847 2849 2852 2872 2889 2891 2893 2908 2966 2980 2982 3008 3009 3011 3021 3022 3036 3038 3039 3054 3092 1858 1869 1899 1918 1927 1928 1932 1934 1944 1948 1968 1970 1972 1973 1983 1990 1993 2005 2009 2010 2011 2013 2014 2017 2019 2022 2026 2027 2030 2031 2035 2042 2043 2044 2045 2046 2054 2055 2057 2062 2065 2066 2067 2068 2072 2073 2074 2077 2078 2079 2080 2082 2088 2089 2091 2092 2095 2096 2097 2103 2104 2106 2111 2113 2116 2123 2125 2128 2130 2138 2145 2154 2155 2156 2157 2158 2159 2171 2180 2182 2187 2188 2201 2205 2215 2218 2240 2253 2259 2260 2261 2262 2263 2271 2276 2278 2289 2290 2291 2293 2294 2296 2302 2303 2306 2307 2315 2316 2317 2318 2320 2321 2328 2329 2330 2337 2342 2343 2344 2355 2360 2361 2371 2372 2376 2377 2378 2390 2408 2410 2418 2419 2421 2426 2429 2431 2452 2454 2456 2457 2472 2492 2493 2496 2497 2503 2511 2513 2516 2530 2546 2550 2552 2554 2559 2570 2572 2574 2586 2588 2600 2601 2603 2616 2619 2620 2623 2627 2628 2634 2656 2667 2685 2686 2688 2689 2691 2703 2720 2721 2724 2725 2727 2728 2729 2749 2754 2758 2761 2773 2778 2779 2780 2789 2790 2791 2792 2794 2801 2807 2808 2822 2824 2827 2828 2838 2843 2844 2848 2853 2854 2855 2856 2862 2864 2869 2870 2871 2873 2874 2875 2876 2886 2890 2894 2895 2896 2901 2904 2910 2912 2913 2920 2921 2923 2927 2929 2930 2941 2943 2944 2945 2946 2948 2949 2950 2958 2962 2964 2965 2967 2968 2976 2981 2983 2984 2985 2986 3000 3001 3002 3003 3012 3020 3025 3027 3037 3040 3041 3045 3056 3059 3070 3071 3074 3079 3080 3081 3082 3090 3095 3097 3102 3108 3124 3135 3139 3141 3143 3144 3161 3173 3176 3188 3224 3240 3242 3681 2032 2063 2108 2117 2122 2139 2140 2141 2143 2144 2146 2169 2183 2185 2198 2199 2200 2202 2216 2229 2231 2250 2258 2272 2273 2274 2285 2287 2288 2298 2300 2301 2304 2305 2313 2314 2322 2332 2334 2336 2339 2345 2353 2356 2357 2358 2359 2369 2370 2374 2380 2385 2386 2388 2389 2391 2398 2399 2402 2404 2406 2407 2409 2411 2415 2425 2427 2428 2430 2436 2438 2439 2440 2441 2455 2471 2474 2475 2476 2477 2490 2491 2494 2495 2514 2524 2525 2527 2528 2531 2532 2534 2545 2548 2549 2551 2553 2560 2561 2567 2568 2581 2583 2584 2585 2590 2597 2599 2608 2610 2612 2613 2621 2622 2624 2625 2632 2633 2635 2636 2639 2643 2644 2647 2650 2651 2660 2661 2662 2663 2664 2665 2675 2676 2681 2683 2692 2696 2698 2700 2701 2704 2705 2706 2707 2713 2718 2736 2739 2740 2741 2742 2748 2752 2756 2774 2775 2776 2784 2785 2786 2788 2802 2803 2804 2805 2806 2810 2814 2815 2817 2818 2819 2820 2833 2834 2837 2841 2850 2860 2861 2863 2865 2878 2887 2892 2905 2906 2907 2911 2919 2922 2931 2937 2940 2942 2947 2960 2961 2963 2969 2978 2997 2998 3006 3010 3018 3019 3023 3024 3026 3028 3035 3042 3043 3044 3053 3055 3057 3058 3060 3063 3064 3068 3069 3072 3073 3078 3083 3084 3091 3094 3096 3098 3100 3101 3103 3104 3105 3107 3109 3110 3111 3112 3113 3117 3118 3120 3122 3123 3125 3126 3136 3140 3142 3145 3146 3147 3155 3157 3159 3160 3163 3165 3170 3172 3175 3177 3178 3179 3180 3187 3189 3191 3192 3193 3194 3195 3196 3198 3202 3204 3206 3207 3208 3209 3220 3226 3230 3234 3238 3239 3241 3243 3255 3256 3257 3258 3259 3263 3264 3265 3268 3269 3270 3271 3272 3273 3280 3282 3293 3296 3297 3308 3311 3322 3324 3326 3340 3342 3362 3365 3379 3383 3399 3515 3530 3550 3600 3623 3652 3805 3806 2126 2181 2203 2251 2286 2295 2299 2338 2340 2352 2354 2373 2387 2400 2401 2403 2405 2416 2417 2420 2424 2450 2451 2468 2469 2470 2473 2489 2508 2509 2510 2523 2526 2533 2547 2558 2569 2571 2580 2582 2587 2589 2598 2609 2611 2618 2631 2642 2645 2646 2648 2649 2659 2677 2678 2679 2680 2682 2694 2697 2699 2702 2711 2712 2714 2715 2717 2719 2733 2734 2735 2738 2747 2750 2751 2755 2765 2766 2768 2769 2770 2771 2772 2781 2782 2783 2787 2798 2800 2811 2812 2816 2821 2829 2835 2846 2857 2859 2866 2867 2868 2879 2882 2885 2902 2903 2918 2924 2925 2938 2951 2952 2953 2954 2955 2959 2973 2977 2979 2999 3007 3015 3065 3066 3077 3089 3093 3106 3116 3119 3121 3133 3134 3138 3148 3154 3158 3162 3164 3167 3169 3171 3183 3190 3197 3203 3205 3211 3218 3219 3221 3222 3223 3225 3227 3231 3232 3233 3235 3237 3244 3252 3254 3266 3267 3274 3277 3279 3289 3290 3291 3294 3295 3298 3303 3306 3307 3309 3310 3312 3313 3314 3315 3316 3320 3321 3325 3327 3338 3341 3343 3344 3345 3350 3359 3360 3361 3363 3364 3366 3367 3375 3380 3381 3382 3384 3392 3395 3396 3397 3398 3400 3401 3402 3403 3404 3411 3416 3419 3420 3421 3426 3429 3430 3431 3433 3441 3442 3448 3450 3451 3452 3453 3461 3463 3464 3475 3490 3492 3493 3495 3496 3497 3512 3513 3514 3516 3524 3529 3532 3534 3535 3551 3552 3560 3562 3570 3578 3579 3581 3617 3621 3638 3653 3656 3685 3699 3701 3716 3743 3751 3752 3763 3764 3765 3767 3792 3835 3851 3937 3958 2437 2557 2607 2695 2716 2737 2767 2796 2797 2799 2813 2830 2832 2836 2845 2858 2880 2881 2883 2884 2888 2897 2898 2899 2900 2915 2917 2932 2934 2935 2936 2957 2970 2971 2974 2988 2991 2992 2993 3005 3013 3014 3016 3029 3031 3032 3033 3034 3046 3048 3051 3052 3067 3075 3086 3127 3130 3132 3137 3156 3174 3186 3201 3236 3247 3248 3250 3253 3275 3278 3281 3283 3285 3287 3288 3292 3299 3301 3302 3304 3305 3318 3319 3323 3328 3331 3336 3337 3339 3346 3354 3355 3356 3357 3358 3368 3373 3376 3377 3378 3391 3393 3394 3405 3410 3413 3414 3415 3417 3418 3425 3427 3428 3432 3436 3439 3440 3443 3445 3446 3447 3449 3454 3457 3458 3462 3466 3470 3471 3473 3474 3480 3481 3487 3491 3494 3500 3505 3507 3510 3511 3519 3522 3523 3528 3531 3537 3545 3548 3553 3554 3557 3561 3563 3564 3565 3567 3568 3569 3571 3572 3577 3583 3584 3586 3597 3598 3599 3601 3602 3604 3606 3607 3618 3619 3620 3635 3637 3639 3640 3641 3651 3654 3666 3667 3668 3671 3679 3684 3690 3698 3700 3706 3712 3713 3717 3718 3719 3740 3741 3753 3766 3768 3773 3776 3793 3795 3807 3818 3821 3823 3837 3838 3841 3850 3852 3853 3856 3877 3878 3880 3881 3893 3906 3910 3935 3973 3974 3976 4014 2831 2877 2914 2916 2933 2956 2972 2975 2987 2989 2990 2994 2995 2996 3004 3017 3030 3047 3049 3050 3061 3062 3076 3085 3087 3088 3099 3115 3128 3129 3131 3150 3151 3152 3153 3166 3168 3181 3182 3184 3185 3199 3200 3210 3212 3214 3215 3216 3228 3229 3249 3260 3261 3262 3276 3284 3300 3329 3332 3333 3334 3347 3348 3349 3351 3352 3353 3369 3370 3372 3374 3385 3386 3387 3388 3389 3390 3406 3408 3409 3412 3422 3424 3434 3437 3438 3444 3456 3459 3460 3467 3468 3469 3472 3476 3477 3478 3479 3482 3485 3486 3489 3498 3501 3502 3503 3506 3508 3509 3520 3521 3525 3527 3533 3536 3540 3541 3544 3546 3555 3556 3558 3566 3574 3575 3576 3580 3582 3585 3587 3590 3592 3594 3596 3603 3608 3610 3612 3613 3616 3622 3626 3629 3630 3631 3632 3633 3634 3636 3642 3643 3650 3658 3660 3661 3663 3664 3665 3669 3670 3672 3674 3678 3680 3682 3683 3691 3692 3693 3694 3695 3696 3697 3702 3703 3705 3715 3720 3722 3724 3725 3726 3727 3728 3729 3730 3731 3732 3738 3739 3742 3748 3749 3750 3754 3755 3756 3762 3769 3770 3771 3775 3785 3786 3791 3797 3802 3803 3804 3809 3814 3832 3834 3836 3839 3840 3848 3849 3860 3863 3864 3865 3867 3872 3873 3874 3876 3879 3888 3894 3895 3896 3898 3899 3911 3912 3919 3920 3923 3924 3925 3926 3928 3936 3938 3939 3940 3941 3959 3960 3961 3963 3978 3979 3981 3982 3984 3995 3996 3999 4015 3114 3149 3213 3217 3245 3246 3251 3286 3317 3335 3371 3407 3423 3435 3455 3465 3483 3488 3504 3517 3518 3526 3538 3539 3542 3543 3547 3559 3589 3591 3593 3595 3605 3609 3611 3614 3615 3624 3625 3627 3628 3644 3645 3646 3647 3648 3649 3655 3657 3659 3662 3673 3676 3677 3686 3687 3688 3689 3704 3707 3708 3709 3710 3711 3714 3721 3723 3733 3734 3735 3736 3744 3745 3747 3760 3761 3772 3774 3777 3780 3782 3783 3784 3787 3788 3790 3796 3798 3799 3808 3811 3813 3816 3817 3819 3820 3822 3824 3828 3831 3842 3847 3854 3855 3861 3862 3866 3868 3869 3875 3884 3885 3886 3887 3889 3890 3891 3892 3897 3908 3909 3914 3915 3918 3921 3927 3932 3933 3934 3942 3944 3946 3947 3948 3951 3954 3955 3956 3957 3962 3966 3969 3971 3975 3977 3980 3986 3987 3989 3991 3993 3994 3997 3998 4000 4004 4007 4010 4011 4012 4013 4016 4017 4018 4020 3484 3499 3549 3588 3737 3746 3758 3759 3778 3779 3781 3789 3800 3801 3810 3812 3815 3825 3826 3827 3829 3830 3833 3843 3844 3845 3846 3857 3859 3870 3871 3882 3903 3904 3905 3913 3917 3922 3929 3930 3943 3945 3949 3950 3952 3953 3968 3970 3972 3988 3990 4001 4002 4006 4008 4009 4019 3573 3858 3883 3900 3901 3902 3907 3931 3964 3965 3967 3983 3985 4003 4005 12 | 13 | --------------------------------------------------------------------------------