R: Write Genotypes in SPAGeDi Format

write.SPAGeDi {polysat} | R Documentation

## Write Genotypes in SPAGeDi Format

### Description

`write.SPAGeDi` uses data contained in a `genambig` object to create a file that can be read by the software SPAGeDi. The user controls how the genotypes are formatted, and can provide a data frame of spatial coordinates for each sample.

### Usage

    write.SPAGeDi(object, samples = Samples(object),
                  loci = Loci(object), allelesep = "/",
                  digits = 2, file = "",
                  spatcoord = data.frame(X = rep(1, length(samples)),
                                         Y = rep(1, length(samples)),
                                         row.names = samples))

### Arguments

`object` | A `genambig` object containing genotypes, ploidies, population identities, and microsatellite repeat lengths for the dataset of interest.
`samples` | Character vector. Samples to write to the file. Must be a subset of `Samples(object)`.
`loci` | Character vector. Loci to write to the file. Must be a subset of `Loci(object)`.
`allelesep` | The character that will be used to separate alleles within a genotype. If each allele should instead be a fixed number of digits, with no characters to delimit alleles, set `allelesep = ""`.
`digits` | Integer. The number of digits used to represent each allele.
`file` | A character string indicating the path to which the file should be written.
`spatcoord` | Data frame. Spatial coordinates of each sample. Column names are used for column names in the file. Row names indicate sample, or if absent it is assumed that the rows are in the same order as `samples`.

### Details

The Categories column of the SPAGeDi file that is produced contains information from the `PopNames` and `PopInfo` slots of `object`; the population name for each sample is written to the column.

The first line of the file contains the number of individuals, number of categories, number of spatial coordinates, number of loci, number of digits for coding alleles, and maximum ploidy, and is generated automatically from the data provided.

The function does not write distance intervals to the file, but instead writes `0` to the second line.

All alleles for a given locus are divided by the `Usatnts` value for that locus, after all missing data symbols have been replaced with zeros. If necessary, a multiple of 10 is subtracted from all alleles at a locus in order to get the alleles down to the right number of digits.

If a genotype has fewer alleles than the `Ploidies` value for that sample and locus, zeros are added up to the ploidy. If the genotype has more alleles than the ploidy, a random subset of alleles is used and a warning is printed. If the genotype has only one allele (is fully heterozygous), then that allele is replicated to the ploidy of the individual. Genotypes are then concatenated into strings, delimited by `allelesep`. If `allelesep=""`, leading zeros are first added to alleles as necessary to make them the right number of digits.

### Value

A file is written but no value is returned.

### Author(s)

Lindsay V. Clark

### References

https://ebe.ulb.ac.be/ebe/SPAGeDi.html

Hardy, O. J. and Vekemans, X. (2002) SPAGeDi: a versatile computer program to analyse spatial genetic structure at the individual or population levels. Molecular Ecology Notes 2, 618–620.

### See Also

`read.SPAGeDi`, `write.freq.SPAGeDi`, `write.GenoDive`, `write.Structure`, `write.GeneMapper`, `write.ATetra`, `write.Tetrasat`, `write.POPDIST`

### Examples

    # set up data to write (usually read from a file)
    mygendata <- new("genambig", samples = c("ind1","ind2","ind3","ind4"),
                     loci = c("loc1", "loc2"))
    mygendata <- reformatPloidies(mygendata, output="sample")
    Genotypes(mygendata, samples="ind1") <- list(c(102,106,108),c(207,210))
    Genotypes(mygendata, samples="ind2") <- list(c(104),c(204,210))
    Genotypes(mygendata, samples="ind3") <- list(c(100,102,108),c(201,213))
    Genotypes(mygendata, samples="ind4") <- list(c(102,112),c(-9))
    Ploidies(mygendata) <- c(3,2,2,2)
    Usatnts(mygendata) <- c(2,3)
    PopNames(mygendata) <- c("A", "B")
    PopInfo(mygendata) <- c(1,1,2,2)
    myspatcoord <- data.frame(X=c(27,29,24,30), Y=c(44,41,45,46),
                              row.names=c("ind1","ind2","ind3","ind4"))

    ## Not run:
    # write a file
    write.SPAGeDi(mygendata, spatcoord = myspatcoord,
                  file="SpagOutExample.txt")

    ## End(Not run)

[Package polysat version 1.7-6 Index]