コード例 #1
0
ファイル: osutil.c プロジェクト: tarc/2pg_cartesian
void delete_file(const char *path, const char *filename){
	/*Deletes file*/
	char *path_file_name;
	path_file_name = path_join_file(path, filename);
	remove(path_file_name);
	free(path_file_name);
}
コード例 #2
0
void saving_time_execution(const char *local, const double *finished, const double *started,
	const time_t *f_time, const time_t *s_time){
	FILE *f_info;
	char *f_information = NULL;
	char *path_file_name = NULL;
	double diff_t;	
	f_information = (char*)malloc(sizeof(char)*MAX_FILE_NAME);	

	diff_t = difftime(*f_time, *s_time);
	strcpy(f_information, NAME_FILE);
	path_file_name = path_join_file(local, f_information);
	f_info = open_file(path_file_name, fAPPEND);	
	fprintf(f_info, "\n\nDate \n");
	fprintf(f_info,"Started on %s", asctime(gmtime(s_time)));
	fprintf(f_info, "Finished on %s", asctime(gmtime(f_time)));	
	fprintf(f_info, "Total time %f seconds \n",diff_t);		

	fprintf(f_info, "\n\nTime Execution\n");
	fprintf(f_info, "Started = %f\n", *started);
	fprintf(f_info, "Finished = %f\n", *finished);
	fprintf(f_info, "Runtime = %9.4f\n", *finished - *started);
	

	fclose(f_info);
	free(path_file_name);
	free(f_information);
}
コード例 #3
0
void save_information(const char *local_execute, const int *num_proc, 
	const int *v_num_dock, const int *nthreads){
	
	FILE *f_info;
	char *f_information = NULL;
	char *path_file_name = NULL;
	int num_dock_total;
	int i;
	f_information = (char*)malloc(sizeof(char)*MAX_FILE_NAME);

	strcpy(f_information, NAME_FILE);

	path_file_name = path_join_file(local_execute, f_information);

	f_info = open_file(path_file_name, fWRITE);
	fprintf(f_info, "Process Number = %d\n", *num_proc);
	fprintf(f_info, "Threads Number = %d\n", *nthreads);
	num_dock_total = 0;
	fprintf(f_info, "Docking Number per process\n");
	for (i = 0; i < *num_proc; i++){
		fprintf(f_info, "\t%d\t%d\n", i, v_num_dock[i]);
		num_dock_total = num_dock_total + v_num_dock[i];
	}		
	fprintf(f_info, "Docking Number total %d\n", num_dock_total);

	fclose(f_info);

	free(path_file_name);
	free(f_information);
}
コード例 #4
0
ファイル: docking.c プロジェクト: joaopauloaraujo/drugdesign
//create a file with docking
void save_file_docking_from_array(const docking_t *v_doc, const int *num_doc, 
  const char *local_execute, const int *suf){
  FILE *f_dock=NULL;
  char *line=NULL;  
  char *f_file = NULL;
  char *path_file_name = NULL;  
  int d;

  f_file = (char*)malloc(sizeof(char)*MAX_FILE_NAME);
  build_docking_file_name(f_file, suf);
  path_file_name = path_join_file(local_execute, f_file);

  f_dock = open_file(path_file_name, fWRITE);
  fprintf(f_dock, "%d\n", *num_doc);
  for(d = 0; d < *num_doc; d++){
    fprintf(f_dock, "%s\t%s\t%d\t%d\n", v_doc[d].receptor, 
      v_doc[d].compound,
      v_doc[d].num_torsion_angle, 
      v_doc[d].num_atom);
  }
  fclose(f_dock);
  
  free(path_file_name);
  free(f_file);
}
コード例 #5
0
ファイル: docking.c プロジェクト: joaopauloaraujo/drugdesign
void load_docking_from_file(docking_t *v_doc, const int *num_dock, 
  const char *local, const int *suf){
  char *path_file_name = NULL;  
  FILE *f_dock=NULL;
  char *f_file = NULL;
  char *line=NULL;
  int d;

  line = (char*)malloc(MAX_LINE_FILE);
  
  f_file = (char*)malloc(sizeof(char)*MAX_FILE_NAME);
  build_docking_file_name(f_file, suf);
  path_file_name = path_join_file(local, f_file);

  f_dock = open_file(path_file_name, fREAD);
  //ignoring first line of file
  fgets(line, MAX_LINE_FILE, f_dock);
  for (d = 0; d < *num_dock; d++){
      fgets(line, MAX_LINE_FILE, f_dock);
      set_receptor_compound(v_doc[d].receptor, v_doc[d].compound,
        &v_doc[d].num_torsion_angle,
        &v_doc[d].num_atom,
        line);      
  }
  fclose(f_dock);     
  free(line);
  free(f_file);
  free(path_file_name);
}
コード例 #6
0
void save_values_to_analysis(const float *energy_after_mc_criteria,
    const float *energy_new_solution, const float *ener_before_mc_crit, 
    const float *prob, const float *rr, 
    const input_parameters_t *in_para, const int *num_sol){    
    
    FILE * energy_file; 
    char *file_name;
    file_name = Malloc(char, MAX_FILE_NAME);
    strcpy(file_name, "monte_carlo_energies.fit");
    char *fname = path_join_file(in_para->path_local_execute, file_name);        
    if (*num_sol == 1){
        energy_file = open_file(fname, fWRITE);
        fprintf (energy_file,"#Index\tEnergy_After_Criteria\tEnergy_Before_Criteria\tNew_Solution\tProb\trr\n");
    }else{
        energy_file = open_file(fname, fAPPEND);
    }    
    fprintf (energy_file,"%i\t%.10e\t%.10e\t%.10e\t%f\t%f\n", *num_sol, *energy_after_mc_criteria, 
        *ener_before_mc_crit, *energy_new_solution, *prob, *rr);
    fclose(energy_file);    
    free(fname);
    free(file_name);    
}
コード例 #7
0
ファイル: solutionio.c プロジェクト: tarc/2pg_cartesian
void save_solution_file(const char *path, const char *file_name,
		const int *fit, const solution_t *solutions, const int *pop_size,
		const int *tag, const input_parameters_t *in_para){

    char *fname = path_join_file(path,file_name);
	FILE *fit_file = open_file(fname,fWRITE);
	write_header_generation(fit_file, tag);
	/* objective that must be maximized. When they are obtained these values
	 * are multiplied by -1 because 2PG works with these opposite values.
	 * However, when they will be stored, they must be written in original
	 * value */
	if ( (in_para->fitness_energies[*fit] == fit_hbond) ||
		(in_para->fitness_energies[*fit] == fit_hydrophilic)||
		(in_para->fitness_energies[*fit] == fit_hbond_main)	||
		(in_para->fitness_energies[*fit] == fit_stride_total) ||
		(in_para->fitness_energies[*fit] == fit_stride_helix)	||
		(in_para->fitness_energies[*fit] == fit_stride_beta) ) {
		write_oposite_objective_values(fit_file,fit,solutions,pop_size);
	}else{
		write_objectives_values(fit_file,fit,solutions,pop_size);
	}
	fclose(fit_file);
	free(fname);
}
コード例 #8
0
void save_solution(const solution_t *solution_curr, 
    const input_parameters_t *in_para, const int *model){
    const protein_t* p_curr;
    FILE * pdbfile; 
    char *file_name;
    file_name = Malloc(char, MAX_FILE_NAME);
    strcpy(file_name, "monte_carlo_solutions.pdb");
    char *fname = path_join_file(in_para->path_local_execute,
        file_name);    
    p_curr = (protein_t*) solution_curr->representation;
    if (*model == 1){
        pdbfile = open_file(fname, fWRITE);
        writeHeader(pdbfile, 0.00, &p_curr->p_topol->numatom);
    }else{
        pdbfile = open_file(fname, fAPPEND);
    }
    writeModel(pdbfile, model);
    writeATOM(pdbfile, p_curr->p_atoms, &p_curr->p_topol->numatom);
    writeEndModel(pdbfile);
    fclose(pdbfile);

    free(fname);
    free(file_name);    
}
int main(int argc, char *argv[]){
	input_parameters_t in_param;
	display_msg("Reading the configure file \n");
	load_parameters_from_file(&in_param,argv[1]);

	/*Represents extension of files that will be looked in directory*/
	char *ext = NULL;
	/*Represents how many files there is in directory*/
	int num_files;
	/*Represents file names that are in directory and have target extension*/
	owner_file_t *file_names = NULL;

	protein_t *population_p= NULL; // main population of protein
	solution_t *solutions_p= NULL; // main solution
	dominance_t *dominance= NULL; // main of dominance
	ea_nsga2_t *nsga2_solutions_p= NULL; // main of front


/**************** START GETTING FILE NAMES *************************/
	ext = Malloc(char, 4);
	strcpy(ext, "pdb");
	num_files = how_many_files_directory_by_extension(in_param.path_local_execute, ext);
	file_names = allocate_file_t(&num_files, &in_param.number_fitness);
	insert_files_directory_by_extension(file_names, in_param.path_local_execute, ext);
	free(ext);
/**************** FINISHED GETTING FILE NAMES *************************/


/**************** START GETTING THE OBJECTIVES *************************/	
	init_gromacs_execution();
/*
	// RUN PDB2GMX IN ALL FILES FOR PATTERN OF ATOM NAMES 
	display_msg("Run of pdb2gmx for pattern of atom names\n");
	for (int ind = 0; ind < num_files; ind ++){
		call_pdb2gmx_for_pattern_atom_names(file_names[ind].file_name, in_param.path_local_execute, in_param.path_gromacs_programs, in_param.force_field);
		clean_gromacs_simulation(in_param.path_local_execute);
	}	
	// FINISHED RUN PDB2GMX 
*/
	population_p = allocateProtein(&num_files);
	solutions_p = allocate_solution(&num_files, &in_param.number_fitness);        
	for (int ind = 0; ind < num_files; ind ++){
		printf("Computing Objectives of %s\n", file_names[ind].file_name);
		char *path_PDB_file_name = path_join_file(in_param.path_local_execute, file_names[ind].file_name);
		int num_atom = get_num_atom(path_PDB_file_name);		
		population_p[ind].p_atoms = allocate_pdbatom(&num_atom);		
		load_pdb_file_without_num_atom(population_p[ind].p_atoms, NULL,	path_PDB_file_name);
		int num_res = get_number_residues_from_atom(population_p[ind].p_atoms, &num_atom);
		population_p[ind].p_topol = allocateTop_Global(&num_res, &num_atom);		
		renumerate_residue_number(population_p[ind].p_atoms, &num_atom);		
		build_topology_individual(&population_p[ind]);		
		solutions_p[ind].representation = &population_p[ind];
		get_gromacs_objectives_of_solution(&solutions_p[ind], &in_param, &ind);
		desAllocateTop_Global(population_p[ind].p_topol);
		desAllocate_pdbatom(population_p[ind].p_atoms);
		free(path_PDB_file_name);
	}	
	finish_gromacs_execution();
	//Deleting temporary files
	system("rm PROT_IND_*.pdb");
/**************** FINISHED GETTING THE OBJECTIVES *************************/

/**************** START GETTING FRONT *************************/
	in_param.size_population = num_files;
	nsga2_solutions_p = allocate_nsga2_without_allocation_of_representation(&in_param);	
	//Setting identification
	for (int i = 0; i < num_files; i++){
		nsga2_solutions_p[i].sol->ID = i+1;
	}

    //Setting dominance
	dominance = allocate_dominance(&num_files);
	set_dominance(dominance, solutions_p, &num_files);

	//Coping values of dominance
	for (int ind = 0; ind < num_files; ind++){
		// Indicates number of solutions that are dominated by me
		file_names[ind].number_solutions_are_dominated = dominance[ind].max_dominated;
	}	

	//Coping values of objective
	for (int ind = 0; ind < num_files; ind++){
		for (int ob = 0; ob < in_param.number_fitness; ob++)	
			nsga2_solutions_p[ind].sol->obj_values[ob] = solutions_p[ind].obj_values[ob];
	}

    //Setting front based on dominance concept
    compute_fronts(nsga2_solutions_p, dominance, &num_files);

    //Coping values from nsga2_solutions_p to owner_file_t
	for (int ind = 0; ind < num_files; ind++){
		//Coping objectives
		for (int ob = 0; ob < in_param.number_fitness; ob++){	
			file_names[ind].obj_values[ob] = nsga2_solutions_p[ind].sol->obj_values[ob];
		}
		file_names[ind].front = nsga2_solutions_p[ind].front;
	}
	desallocate_dominance(dominance, &num_files);
	desallocate_solution_nsga2(nsga2_solutions_p, &num_files);
/**************** FINISHED GETTING FRONT *************************/

/**************** START GETTING FINAL RESULTS *************************/
    //Sorting solutions
    sorting_solutions_by_front_dominance(file_names, &num_files, &in_param.number_fitness);

    //Saving file
	save_analysis_files(file_names, &num_files, &in_param.number_fitness, in_param.fitness_energies);
/**************** FINISHED FINAL RESULTS *************************/

	desalocate_file_t(file_names, &num_files);
    desallocate_solution(solutions_p, &num_files);
    desallocateProtein(population_p, &num_files);	
	deAllocateload_parameters(&in_param);
	display_msg("Done !!! \n");
	return 0;
}