# (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")
Retour à la page principale de (gH)