void FileUtils::fileCounter(const QString& filePath, int* pCounter) { QFileInfo curFile(filePath); if(!curFile.exists()) return; if (curFile.isDir()) { QString dir = curFile.filePath(); QDir curDir(dir); int childCount = curDir.entryInfoList().count(); QFileInfoList newFileList = curDir.entryInfoList(); if(childCount > 2) { for(int i = 0;i< childCount; i++) { if(newFileList.at(i).fileName() == "." || newFileList.at(i).fileName() == "..") continue; fileCounter(newFileList.at(i).filePath(), pCounter); } } } else { if(pCounter) *pCounter += 1; } }
int FileUtils::fileCount(const QString& filePath) { int fCount = 0; fileCounter(filePath, &fCount); return fCount; }
main(int argc, char *argv[]){ int tabSize = pow(4, atoi(argv[3])) ; char hashSize = (char)tabSize; pid_t parentpid; pid_t pid[1]; int status; char jfCountFile1[256]; char jfCountFile2[256]; char jfDumpFile1[256]; char jfDumpFile2[256]; char fileName1[256]; char fileName2[256]; sprintf(jfCountFile1,"time jellyfish count %s -m %s -s %i -o %s-%s-jfCount",argv[1],argv[3],tabSize, argv[1],argv[3]); sprintf(jfCountFile2,"time jellyfish count %s -m %s -s %i -o %s-%s-jfCount",argv[2],argv[3],tabSize, argv[2],argv[3]); sprintf(jfDumpFile1,"time jellyfish dump %s-%s-jfCount -c -o %s-%s-Kmers",argv[1],argv[3],argv[1],argv[3]); sprintf(jfDumpFile2,"time jellyfish dump %s-%s-jfCount -c -o %s-%s-Kmers",argv[2],argv[3],argv[2],argv[3]); sprintf(fileName1,"%s-%s-Kmers",argv[1],argv[3]); sprintf(fileName2,"%s-%s-Kmers",argv[2],argv[3]); printf("%s\n%s\n",jfCountFile1,jfCountFile2); printf("%s\n%s\n%s\n%s\n",jfDumpFile1,jfDumpFile2,fileName1,fileName2); if((pid[0] = fork())<0){ perror("fork"); abort(); }else if(pid[0]==0){ printf("Executing jellyfish functions on %s with %s-mers...\n",argv[1],argv[3]); system(jfCountFile1); printf("...Count file for %s completed\n",argv[1]); system(jfDumpFile1); printf("... jellyfish dump completed for %s with %s-mers.\n",argv[1],argv[3]); exit(0); } if((pid[1] = fork())<0){ perror("fork"); abort(); }else if(pid[1]==0){ printf("Executing jellyfish functions on %s with %s-mers...\n",argv[2],argv[3]); system(jfCountFile2); printf("...Count file for %s completed\n",argv[2]); system(jfDumpFile2); printf("... jellyfish dump completed for %s with %s-mers.\n",argv[2],argv[3]); exit(0); } while ((parentpid = wait(&status)) > 0); puts("Both processes are completed."); FILE *fp1 = fopen(fileName1,"r"); FILE *fp2 = fopen(fileName2,"r"); int lineCount = fileCounter(fp2); fseek(fp2, 0, SEEK_SET); struct hashtable_s *uniqueTable = createHashTable(1.5 * lineCount); kmerKram(uniqueTable,fp2,1); kmerKram(uniqueTable,fp1,-1); char outFileName[256]; sprintf(outFileName,"%s-VS-%s-%sMERS.fasta",argv[1],argv[2],argv[3]); FILE *outFile = fopen(outFileName,"w"); FILE *sequences = fopen(argv[2],"r"); fseek(fp2, 0, SEEK_SET); skimThroughFasta(sequences, outFile, atoi(argv[3]),uniqueTable); }