void HiRes5Engine::initGameState() { _state.vars.resize(40); insertDisk(2); StreamPtr stream(_disk->createReadStream(0x5, 0x1, 0x00, 3)); loadItems(*stream); // A combined total of 1213 rooms static const byte rooms[kRegions] = { 6, 16, 24, 57, 40, 30, 76, 40, 54, 38, 44, 21, 26, 42, 49, 32, 59, 69, 1, 1, 1, 1, 1, 18, 25, 13, 28, 28, 11, 23, 9, 31, 6, 29, 29, 34, 9, 10, 95, 86, 1 }; initRegions(rooms, kRegions); loadRegion(1); _state.room = 5; _doAnimation = false; }
int main(int argc, char *argv[]) { if(argc != 5){ printf("Usage: gregions mode distance regionsfile.prof \n"); printf("\t mode = 0 -> ASCII candidates \n"); printf("\t mode = 1 -> Reference Candidates \n"); printf("example: bin/gregions 1 1.2 input/regions-score.1M.prof input/human_genome.fasta \n"); exit(0); } regions_t *regions; sequences_t *genome; seq_format_t candidatesMode = SEQ_ASCII, queriesMode = SEQ_ASCII; uint32_t mode = atof(argv[1]); float distance = atof(argv[2]); char *profileFile = argv[3], *genomeFile = argv[4]; char regionsFile[512]; FILE *fp = NULL; const uint32_t numGenomes = 1; uint32_t *h_genomePositionCandidates = NULL, *h_regionsProfiledScores = NULL; uint32_t numQueries = 0, totalSizeQueries = 0, numCandidates = 0, totalSizeCandidates = 0; if(mode == 1) candidatesMode |= SEQ_REF_POS; fp = fopen(profileFile, "rb"); if (fp == NULL) return(E_OPENING_FILE); PSA_ERROR(countRegionsProfile(fp, distance, &numQueries, &totalSizeQueries, &numCandidates, &totalSizeCandidates)); PSA_ERROR(initRegions(®ions, numQueries, numCandidates, numCandidates)); PSA_ERROR(allocateRegions(regions, distance, totalSizeQueries, queriesMode, totalSizeCandidates, candidatesMode)); h_genomePositionCandidates = (uint32_t *) malloc(numCandidates * sizeof(uint32_t)); if (h_genomePositionCandidates == NULL) PSA_ERROR(E_ALLOCATE_MEM); h_regionsProfiledScores = (uint32_t *) malloc(numCandidates * sizeof(uint32_t)); if (h_regionsProfiledScores == NULL) PSA_ERROR(E_ALLOCATE_MEM); rewind(fp); if(mode == 1) PSA_ERROR(loadRegionsProfile(fp, regions->queries->h_ASCII, regions->queries->h_size, regions->queries->h_ASCIIposition, regions->candidates->h_refPosition, regions->alignments->h_info, h_regionsProfiledScores)); else PSA_ERROR(loadRegionsProfile(fp, regions->queries->h_ASCII, regions->queries->h_size, regions->queries->h_ASCIIposition, h_genomePositionCandidates, regions->alignments->h_info, h_regionsProfiledScores)); regions->queries->formats |= queriesMode; fclose(fp); fp = fopen(genomeFile, "rb"); if (fp == NULL) return(E_OPENING_FILE); PSA_ERROR(initSequences(&genome, numGenomes)); PSA_ERROR(loadSequenceMFASTA(fp, &genome->h_size, &genome->h_ASCII, &genome->h_ASCIIposition, &genome->formats)); fclose(fp); /* recover the candidates from genome in ASCII rep */ if (mode == 1) PSA_ERROR(gatherCandidatesASCIIReference(regions, genome)); else PSA_ERROR(gatherCandidatesASCIIStream(regions, h_genomePositionCandidates, genome)); regions->candidates->formats |= candidatesMode; /* DEBUG REGIONS*/ #if defined(DEBUG) PSA_ERROR(printRegions(regions, 4, 1)); #endif if (mode == 1) sprintf(regionsFile, "%s.%u.%u.%u.ref.regions", profileFile, regions->queries->num, regions->averageSizeQuery, regions->averageCandidatesPerQuery);\ else sprintf(regionsFile, "%s.%u.%u.%u.regions", profileFile, regions->queries->num, regions->averageSizeQuery, regions->averageCandidatesPerQuery); fp = fopen(regionsFile, "wb"); if (fp == NULL) return(E_OPENING_FILE); PSA_ERROR(saveRegions(fp, regions)); fclose(fp); PSA_ERROR(freeRegions(®ions)); free(h_genomePositionCandidates); free(h_regionsProfiledScores); return (SUCCESS); }