{"id":20810673,"url":"https://github.com/rscherrer/speciome","last_synced_at":"2026-04-21T17:31:50.091Z","repository":{"id":49060350,"uuid":"357932172","full_name":"rscherrer/speciome","owner":"rscherrer","description":"Simulation of adaptive speciation with complex genotype-phenotype map","archived":false,"fork":false,"pushed_at":"2024-12-30T09:31:08.000Z","size":2294,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-12T04:30:59.519Z","etag":null,"topics":["divergence","evolution","fst","genetics","genomics","simulation","speciation"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rscherrer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-14T14:21:37.000Z","updated_at":"2024-12-30T09:31:12.000Z","dependencies_parsed_at":"2024-11-17T20:34:53.918Z","dependency_job_id":"5b1ca348-3a73-4391-983a-912276f4ea6d","html_url":"https://github.com/rscherrer/speciome","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/rscherrer/speciome","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rscherrer%2Fspeciome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rscherrer%2Fspeciome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rscherrer%2Fspeciome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rscherrer%2Fspeciome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rscherrer","download_url":"https://codeload.github.com/rscherrer/speciome/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rscherrer%2Fspeciome/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32102142,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T11:25:29.218Z","status":"ssl_error","status_checked_at":"2026-04-21T11:25:28.499Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["divergence","evolution","fst","genetics","genomics","simulation","speciation"],"created_at":"2024-11-17T20:26:58.658Z","updated_at":"2026-04-21T17:31:50.056Z","avatar_url":"https://github.com/rscherrer.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# speciome\n\nSimulation program for evolutionary biologists to study speciation with a complex genotype-phenotype map.\n\n## Prerequisites\n\n* A C++20 compiler (e.g. [GCC](https://gcc.gnu.org) or [Clang](https://clang.llvm.org))\n* (optional) [CMake](docs/CMAKE.md) version 3.16 or higher\n* (optional) R and [speciomer](https://github.com/rscherrer/speciomer) to read and analyze the data\n\n## Build\n\nHere are instructions to build with CMake, but you can compile the source code with the tools of your choice.\n\n(Click [here](docs/BUILD.md) to build as developer.)\n\n(Click [here](docs/PEREGRINE.md) to build on the [Peregrine](https://www.rug.nl/society-business/centre-for-information-technology/research/services/hpc/facilities/peregrine-hpc-cluster?lang=en) cluster.)\n\n### Linux, MacOS\n\n```shell\ngit clone git@github.com:rscherrer/speciome.git\ncd speciome\ncp CMakeLists_user.txt CMakeLists.txt # user configuration\nmkdir build \u0026\u0026 cd build\ncmake ..\ncmake --build .\n```\n\nThe executable `speciome` is built in `../bin/`.\n\n### Windows\n\n```cmd\ngit clone git@github.com:rscherrer/speciome.git\ncd speciome\ncopy CMakeLists_user.txt CMakeLists.txt :: user configuration\nmkdir build\ncd build\ncmake ..\ncmake --build . --config Release\n```\n\nThe executable `speciome.exe` is built in `../bin/`.\n\n### IDEs\n\nMany IDEs support CMake out of the box. \"Open folder\" should do the trick...\nYou can use CMake to generate the input files for your favorite IDE too:\n\n```shell\ngit clone git@github.com:rscherrer/speciome.git\ncd speciome\ncp CMakeLists_user.txt CMakeLists.txt # user configuration\nmkdir build\ncd build\n# Generate VisualStudio project files\ncmake -G \"Visual Studio 17 2022\" -A x64 ..\n# Generate Xcode project files (Xcode must be installed)\ncmake -G Xcode    \n```\n\nThis will place the project files in `../build`.\n\n## Use\n\nRun a simulation with default parameters with:\n\n```\n./speciome \n```\n\nOr provide a parameter file with non-default parameter values:\n\n```\n./speciome parameters.txt\n```\n\n### Parameter file\n\nThe parameter file must contain parameter names followed by their values, for example:\n\n```\nhsymmetry 1\necosel 0.6\nallfreq 0.2\nnvertices 30 30 30\n```\n\nParameters that are not provided in the parameter file will take default values. Beware that some parameters take multiple values. Click [here](docs/PARAMETERS.md) for a list of all parameters. To allow for replication, if `parsave` is set to 1, the parameters used in the simulation (including any automatically-generated `seed`) will be saved into a file named `paramlog.txt` within the working directory.\n\n### Model description\n\nThis program runs an individual-based simulation where agents live, reproduce and die, through thousands of generations. Individuals have traits that are genetically encoded and can evolve. The model is built in such a way that under the right conditions, the population may split into two phenotypically distinct and reproductively isolated clusters, or species (i.e. speciaiton has happened). Importantly, the genotype codes for the phenotype in a nonlinear way allowing not only additive but also dominance, epistatic and environmental effects. See the accompanying manuscript for more information.\n\n### Genetic architecture\n\nThe genetic architecture refers to the constant features of the genotype-phenotype map. Those are features that do not change through time and cannot evolve, including e.g. the number of chromosomes, numbers and positions of loci and topologies and interaction weights of the gene networks. If `archload` is set to 0, a new architecture is generated at the beginning of the simulation. Otherwise, the program will read an architecture from a file `architecture.txt` that must be present in the working directory. Click [here](docs/ARCHITECTURE.md) to see what a genetic architecture file should look like. If `archsave` is set to 1, the architecture that was used in the simulation (whether generated or provided) will be saved into `architecture.txt`.\n\n### Saving data\n\nSet `datsave` to 1 to allow data recording. The data are saved every `tsave` generations into binary `*.dat` files. Click [here](docs/VARIABLES.md) for a list of the variables that can be saved.\n\nEach variable is saved as a vector of values (64bit double precision floating point numbers). By default the program will save all variables. Set `choosewhattosave` to 1 to decide which variables to save instead. The program will then expect a file `whattosave.txt` in the working directory. This file should be a list of names of variable to save. For example:\n\n```\ntime\nEI\nSI\nRI\nlocus_Fst\n```\n\nwill save time, speciation metrics EI, SI and RI at each time point, and summary statistic Fst for each locus at each time point.\n\nSome variables need other variables to be saved in order to be interpreted down the line. For example, `time` must be saved in order for the recorded time points to be appended to the resulting data tables. Or, the `population_sizes` in each recorded time point must be known for each individual to be assigned a time point in `individual_*` variables and in individual whole genomes.\n\n### Reading data\n\nThe data are saved in binary to speed up the writing (and the reading) process. Plus, different users will need to combine the data in many different ways depending on the question they are asking. To read and assemble the data into analyzable datasets, use our R package [speciomer](https://github.com/rscherrer/speciomer). Note that some functions in this package will expect certain files (e.g. `paramlog.txt`, `architecture.txt` or `time.dat`) to be present. In general we advise the following:\n\n* save the generative parameter values (`parsave 1`)\n* have the genetic architecture at hand (e.g. `archsave 1`) to interpret the genetic data you might save (`locus_*`, `edge_*` and whole individual genomes)\n* save `time`, as it is useful information for any of the other variables\n* save `population_sizes` whenever `individual_*` variables or whole individual genomes are saved\n\n### Saving genomes\n\nSaving the whole genomes of all individuals through time takes a lot of space, for this reason this output is controlled separately from the other output variables. Click [here](docs/GENOMES.md) for details.\n\n## About\n\nThis program is a descendent of [ExplicitGenomeSpeciation](https://github.com/rscherrer/ExplicitGenomeSpeciation). Disclaimer: this simulation program was used to get insights into the effect of the genetic architecture on the process of speciation. It was not designed as a statistical inference package or a data processing tool, although its simulations could in theory be used for training machine learning algorithms to recognize various evolutionary scenarios. This code comes with no guarantee whatsoever.\n\n## Links\n\n* [speciomer](https://github.com/rscherrer/speciomer): read the simulated data in R\n* [speciomx](https://github.com/rscherrer/speciomx): deterministic approximation based on adaptive dynamics theory\n* [speciome-analyses](https://github.com/rscherrer/speciome-analyses): analysis scripts and results of the study\n* [speciome-ms](https://github.com/rscherrer/speciome-ms): manuscript\n* [speciome-private](https://github.com/rscherrer/speciome-private): stuff that needs not be made public\n\n## Permissions\n\nCopyright (c) Raphael Scherrer and G. Sander van Doorn, 2023 (open source license will be added upon publication).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frscherrer%2Fspeciome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frscherrer%2Fspeciome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frscherrer%2Fspeciome/lists"}