function (i)readIntTable(s$ path) { if (!fileExists(path)) stop("readIntTable(): File not found at path " + path); l = readFile(path); m = sapply(l, "asInteger(strsplit(applyValue));", simplify="matrix"); return t(m); } initialize() { initializeSLiMModelType("nonWF"); initializeSLiMOptions(nucleotideBased=T); length = initializeAncestralNucleotides("/mnt/rstor/SOM_EPBI_FRS2/zxc307/1000g2021/fasta/hs37d5_chr22.fa"); defineConstant("L", length); defineConstant("K", 200); initializeMutationTypeNuc("m1", 0.5, "f", 0.0); m1.convertToSubstitution = T; initializeGenomicElementType("g1", m1, 1.0, mmJukesCantor(1e-7)); initializeGenomicElement(g1, 0, L-1); initializeRecombinationRate(1e-8); // read in the pedigree log files defineConstant("M", readIntTable("mating.txt")); defineConstant("D", readIntTable("death.txt")); // extract the ticks for quick lookup defineConstant("Mt", drop(M[,0])); defineConstant("Dt", drop(D[,0])); } reproduction() { // generate all offspring for the tick m = M[Mt == community.tick,]; for (index in seqLen(nrow(m))) { row = m[index,]; ind = subpop.subsetIndividuals(tag=row[,1]); mate = subpop.subsetIndividuals(tag=row[,2]); child = subpop.addCrossed(ind, mate); child.tag = row[,3]; } self.active = 0; } 1 early() { sim.addSubpop("p1", 90); // provide initial tags matching the original model p1.individuals.tag = 1:90; } early() { // execute the predetermined mortality inds = p1.individuals; inds.fitnessScaling = 1.0; d = drop(D[Dt == community.tick, 1]); indices = match(d, inds.tag); inds[indices].fitnessScaling = 0.0; } 1 late() { p1.genomes.readFromVCF("/mnt/rstor/SOM_EPBI_FRS2/zxc307/1000g2021/GBR/GBR.chr22.90.recode.vcf", m1); log = sim.createLogFile("./test.log",logInterval=1); log.addGeneration(); log.addSubpopulationSize(p1); log.addCustomColumn("FreqA", "nucleotideFrequencies(sim.chromosome.ancestralNucleotides())[0];"); log.addCustomColumn("FreqC", "nucleotideFrequencies(sim.chromosome.ancestralNucleotides())[1];"); log.addCustomColumn("FreqG", "nucleotideFrequencies(sim.chromosome.ancestralNucleotides())[2];"); log.addCustomColumn("FreqT", "nucleotideFrequencies(sim.chromosome.ancestralNucleotides())[3];"); } 1:5 late() { mut = sim.mutationsOfType(m1); } 5 late() { g = p1.sampleIndividuals(200).genomes; g.outputVCF("./test.vcf"); sim.simulationFinished();}