df
X
colnames(X)
colnames(X) <- NULL
X
genind2df(X)
df2genind(X)
Q
undebug(df2genind)
df2genind(X)
df2genind(X,sep="/")
df2genind(X,sep="/")$loc.names
colnames(X)
colnames(X) <- c('a','b','c')
df2genind(X,sep="/")$loc.names
toto <- df2genind(X,sep="/")
toto
geind2df(toto)
genind2df(toto)
genind2df(toto,sep="/")
X
df=matrix(c('a/b','a/a','a/b','x/x','NA','x/y'),nrow=2)
colnames(df)=paste("locus",1:3,sep=".")
rownames(df)=1:2
df # looks ok

df
colnames(df)
grep("[.][^.]*[.]",colnames(df))
grep("[.][^.]*[.]", "toto")
grep("[.][^.]*[.]", "toto..")
grep("[.][^.]*[.]", "toto.1.2")
gsub("[.][^.]*$", "", "toto.1.2")
gsub("[.][^.]*$", "", "toto.1..a.s.as.2")
gsub("[.][^.]*$", "", "toto.1")
transX
gsub("[.][^.]*$", "", colnames(transX))
gsub("^.*[.]","",colnames(transX))
transX
genind <- function(tab,pop=NULL,prevcall=NULL,ploidy=2,type=c("codom","PA")){
    ## handle arguments
    X <- as.matrix(tab)
    if(is.null(colnames(X))) stop("tab columns have no name.")
    if(is.null(rownames(X))) {rownames(X) <- 1:nrow(X)}

    type <- match.arg(type)
    ploidy <- as.integer(ploidy)
    nind <- nrow(X)


    ## HANDLE LABELS ##

    ## loc names is not type-dependent
    temp <- colnames(X)
    ## temp <- gsub("[.].*$","",temp)
    temp <- gsub("[.][^.]*$", "", temp)
    temp <- .rmspaces(temp)
    loc.names <- unique(temp)
    nloc <- length(loc.names)
    loc.codes <- .genlab("L",nloc)
    names(loc.names) <- loc.codes

    ## ind names is not type-dependent either
    ind.codes <- .genlab("", nind)
    ind.names <- .rmspaces(rownames(X))
    names(ind.names) <- ind.codes
    rownames(X) <- ind.codes


    if(type=="codom"){
        ## loc.nall
        loc.nall <-  table(temp)[match(loc.names,names(table(temp)))]
        loc.nall <- as.integer(loc.nall)
        names(loc.nall) <- loc.codes

        ## loc.fac
        loc.fac <- rep(loc.codes,loc.nall)

        ## alleles name
        temp <- colnames(X)
        temp <- gsub("^.*[.]","",temp)
        temp <- .rmspaces(temp)
        all.names <- split(temp,loc.fac)
        all.codes <- lapply(all.names,function(e) .genlab("",length(e)))
        for(i in 1:length(all.names)){
            names(all.names[[i]]) <- all.codes[[i]]
        }

        colnames(X) <- paste(loc.fac,unlist(all.codes),sep=".")
        loc.fac <- as.factor(loc.fac)
    } else { # end if type=="codom" <=> if type=="PA"
        colnames(X) <- loc.codes
        loc.fac <- NULL
        all.names <- NULL
        loc.nall <- NULL
    }

    ## Ideally I should use an 'initialize' method here
    res <- new("genind")
    res@tab <- X
    res@ind.names <- ind.names
    res@loc.names <- loc.names
    res@loc.nall <- loc.nall
    res@loc.fac <- loc.fac
    res@all.names <- all.names

    ## populations name (optional)
    ## beware, keep levels of pop sorted in
    ## there order of appearance
    if(!is.null(pop)) {
        # convert pop to a factor if it is not
        if(!is.factor(pop)) {pop <- factor(pop)}
        pop.lab <- .genlab("P",length(levels(pop)) )
        # put pop levels in appearance order
        pop <- as.character(pop)
        pop <- factor(pop, levels=unique(pop))
        temp <- pop
        # now levels are correctly ordered
        levels(pop) <- pop.lab
        res@pop <- pop
        pop.names <- as.character(levels(temp))
        names(pop.names) <- as.character(levels(res@pop))
        res@pop.names <- pop.names
    }

    ## ploidy
    plo <- as.integer(ploidy)
    if(plo < as.integer(1)) stop("ploidy inferior to 1")
    res@ploidy <- plo

    ## type of marker
    res@type <- as.character(type)

    if(is.null(prevcall)) {prevcall <- match.call()}
    res@call <- prevcall

    return(res)

} # end genind

genind(transX)
genind(transX)$loc.names
genind2df(genind(transX))
Q()
q()
n
df=matrix(c('a/b','a/a','a/b','x/x','NA','x/y'),nrow=2)
colnames(df)=paste("locus",1:3,sep=".")
rownames(df)=1:2
df # looks ok

toto=df2genind(df, sep="/", ploidy=2)
toto
toto@tab # only one locus !?!

genind2df(toto,sep="/")
q()
y
