-
Notifications
You must be signed in to change notification settings - Fork 1
/
loci2gphocs.R
31 lines (29 loc) · 1.02 KB
/
loci2gphocs.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
## loci2gphocs: converts pyRAD .loci output to sequence input file for gphocs
# default behavior is to output a list of character strings, one per line of the output file, use the write function to write to file (default settings work fine)
#example:
#source("PathTo/loci2blat.R")
#output <- loci2gphocs("pathTo.lociFile")
#write(output,"pathToOutputFileLocation")
loci2gphocs <- function(infile){
library(R.utils)
loci <- readLines(infile)
a <- grep("//",loci)
j <- 1
output <- c(paste(length(a)),"")
pb <- ProgressBar(max=length(a),ticks=10,stepLength=100/length(a),newlineWhenDone=F)
for (i in (1:length(a))){
locus <- loci[j:(a[i]-1)]
locus <- gsub(">","",locus)
locus <- gsub("-","N",locus)
j <- a[i]+1
c <- strsplit(locus," [a-zA-Z]")
d <- do.call(rbind.data.frame, c)
nchar <- nchar(as.character(d[1,2]))
nsamples <- nrow(d)
header <- paste("locus",i," ",nsamples," ",(nchar+1),sep="")
concat <- c(header,locus,"")
output <- append(output,concat)
increase(pb)
}
output
}