Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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(&regions, 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(&regions));
	free(h_genomePositionCandidates);
	free(h_regionsProfiledScores);

    return (SUCCESS);
}