# (gH) -_- countsites.r ; TimeStamp (unix) : 26 Juin 2013 vers 16:57
# source("statgh.r")
library(hash)
library(lubridate)
##############################################################################
countSites <- function(rep1="",rep2="") {
##############################################################################
if (missing(rep1) | (rep1=="")) {
cat(" counSites() : fusion de fichiers txt pour compter les sites \n\n")
cat("syntaxe : countSites(rep1_longevity,rep2_network) \n")
cat("exemple : countSites(\"results_longevity_module\",\"results_network\") \n")
cat("\n")
cat("le mieux est d'exécuter cette fonction dans le répertoire parent de ces deux répertoires\n\n")
return("")
} # fin d'aide
tdeb <- Sys.time()
# ---------------------------------------------------------------------------
cat("\n\n")
cat("COMPTAGE DES SITES dans les répertoires ",rep1," et ",rep2)
cat("\n\n")
# ---------------------------------------------------------------------------
nomf1 <- "longevity.csv"
nomf2 <- "network.csv"
nomf3 <- "global.csv"
nomf4 <- "tglobal.csv"
tdf1 <- compteFichiers(rep1)
tdf2 <- compteFichiers(rep2)
# ---------------------------------------------------------------------------
cnt1 <- compteSite(tdf1,rep1,"L")
cnt2 <- compteSite(tdf2,rep2,"N")
# ---------------------------------------------------------------------------
cat("\n",format(Sys.time(),"%X")," Fusion...\n")
cnt3 <- merge(cnt1,cnt2,by="site",all.x=TRUE,all.y=TRUE)
cnt3[ is.na(cnt3) ] <- 0
cnt4 <- t(cnt3[,-1])
colnames(cnt4) <- cnt3[,1]
# ---------------------------------------------------------------------------
write.csv(x=cnt1,file=nomf1,row.names=FALSE)
write.csv(x=cnt2,file=nomf2,row.names=FALSE)
write.csv(x=cnt3,file=nomf3,row.names=FALSE)
write.csv(x=cnt4,file=nomf4,row.names=TRUE)
cat("\n")
cat("FIN DE COMPTAGE DES SITES dans les répertoires ",rep1," et ",rep2,"\n\n")
tfin <- Sys.time()
cat(" durée : ",as.duration(tfin-tdeb)," secondes entre ",format(tdeb,"%X")," et ",format(tfin, "%X"))
cat("\n")
cat("\n")
cat(" Fichiers résultats : ",nomf1,dims(cnt1),", ",nomf2,dims(cnt2),",\n ",nomf3,dims(cnt3)," et ",nomf4,dims(cnt4),"\n")
} # fin de fonction countSites
##############################################################################
##############################################################################
fichiersTxt <- function(rep=".") {
##############################################################################
fs <- paste("/tmp/liste.",runif(1,1,10**8),sep="")
cmd <- paste("(cd ",rep," ; ls *.txt | sort -n > ",fs," ) ",sep="")
# cat(cmd,"\n")
system(cmd)
return(as.data.frame(read.table(fs,as.is=c(1))))
} # fin de fonction fichiersTxt
##############################################################################
compteFichiers <- function(rep) {
##############################################################################
tdf <- fichiersTxt(rep)
nbf <- nrow(tdf)
cat(" il y a ",sprintf("%4d",nbf)," fichiers .txt dans ",rep,"\n")
return(tdf)
} # fin de fonction compteSite
##############################################################################
tdm2df <- function(tdm,nomcol) {
##############################################################################
leDf <- as.data.frame(matrix(nrow=nrow(tdm),ncol=2))
colnames(leDf) <- c("site",nomcol)
leDf[,1] <- row.names(tdm)
leDf[,2] <- tdm[,1]
return(leDf)
} # fin de fonction tdm2df
##############################################################################
compteSite <- function(tdf,rep,inirep) {
##############################################################################
cat("\n")
nbf <- nrow(tdf)
cat(" Traitement des ",sprintf("%4d",nbf)," fichiers .txt dans ",rep,"\n")
for (idf in (1:nbf)) {
leFichier <- tdf[idf,1]
nomFichier <- paste(rep,"/",leFichier,sep="")
cat(" fichier ",sprintf("%5d",idf)," / ",nbf," : ", leFichier,"\n")
lesmots <- sitesVus(nomFichier)
if (lesmots=="") {
cat(" pas de site vu\n")
} else {
# cat(" on comptabilise les mots de ",lesmots,"\n")
tdmc <- analexies(lesmots,FALSE,FALSE,FALSE)$tmots
idFichier <- paste(inirep,"_",leFichier,sep="")
tdmcDf <- tdm2df(tdmc,idFichier)
if (idf==1) {
cntSites <- tdmcDf
} else {
cntSites <- merge(cntSites,tdmcDf,by="site",all.x=TRUE,all.y=TRUE)
} # fin si
} # fin si
} # fin pour idf
cat("\n")
# merge produit des NA au lieu de 0, donc :
cntSites[ is.na(cntSites) ] <- 0
return(cntSites)
} # fin de fonction compteSite
##############################################################################
sitesVus <- function(unFichier) {
##############################################################################
# on analyse unFichier, produit par PLACE (http://www.dna.affrc.go.jp/PLACE/index.html)
# le premier site est indiqué après une ligne de "_"
# lorsqu'on voit plusieurs "--" qui se suivent, il n'y a plus de site à lire
# chaque site correspond au premier mot de la ligne
texte <- ""
lignes <- readLines(unFichier)
nbligs <- length(lignes)
sites <- 0
for (idl in (1:nbligs)) {
laLigne <- lignes[idl]
if (nchar(laLigne)>0) {
if (substr(laLigne,1,5)=="-----") { sites <- 0 }
if (sites==1) {
mots <- strsplit(laLigne," ")
mot1 <- mots[[1]][1]
# cat(idl," : on retient juste ",mot1," dans ",laLigne,"\n")
texte <- paste(texte,mot1)
} # fin si
if (substr(laLigne,1,5)=="_____") { sites <- 1 }
} # fin si
} # fin pour idl
# print(texte)
return(texte)
} # fin de fonction sitesVus
##############################################################################
##############################################################################
##############################################################################
# countSites("testmo","testne")
# cat("\n")
countSites("results_longevity_module","results_network")
|