// Main function void main(void) { reset_peripheral(); initClock(); initTimer(); initDisplay(); initPin(); initGPIO(); initADC(); initConsole(); int i = 0; //init_password(); send_data(); initCircBuf (&speed_buffer, BUF_SIZE); init_set_speed_data(&speed_set_data); int screen = 0; int screen_prev = 0; float speed = 0; float buffed_speed = 0; int fake_speed = 0; float acc = 0; float max_acc = 0; //float fuel_eco = 0; float distance = 0; bool fix = 0; uint8_t satillite = 0; float quality = 0; clock time; int aim_pos = 0; unsigned long adc = 0; //int error_stepper = 0; IntMasterEnable(); while(1){ //reading data read_data = split_data(UART_char_data_old, read_data); // decode data speed = read_speed(); //read data into variables adc = run_adc()/7; //calculations aim_pos = speed_feedback(buffed_speed, encoder_1/40, speed_set_data.speed); if (speed_set_data.enable == 1){ step_motor_control(encoder_1/40, aim_pos); } //sending fake data fake_speed = (int)adc;//= random_at_most(100/1.852); send_info(fake_speed);//knots //storing data store_speed(speed); buffed_speed = analysis_speed(); acc = read_acceleration(buffed_speed); max_acc = max_acc_func(acc, max_acc); time = read_time(); satillite = read_satillite(); fix = read_fix(); quality = read_quality(); debounce_button(); // debounce buttons screen = read_button_screen(screen, fix); distance = read_distance(); select_read(); //need a mosfet for turning power off // select adds a an on and off switch yo if (screen == 1){ if(screen_prev != 1 && screen == 1){ speed_set_data.speed = buffed_speed; } speed_set_data.speed = set_speed(speed_set_data.speed); // set the speed to cruise at } if (screen == 2){ //0 to 100 acceleration_test(speed); } // refresh chainging if (fix == 1 && speed_set_data.old == speed_set_data.speed && refresh_rate < 4){ UARTSend((unsigned char *)PMTK_SET_NMEA_UPDATE_5HZ, 18, 0); refresh_rate += 1; } if (i >= 50){ display(screen, buffed_speed, acc, max_acc, speed_set_data.speed, satillite, encoder_1/40, time, distance, quality, UART_char_data_old, aim_pos, adc, acc_times); i = 0; } screen_prev = screen; i++; } }
static void read_vector(vms_vector *v,CFILE *file) { v->x = read_fix(file); v->y = read_fix(file); v->z = read_fix(file); }
int load_mine_data_compiled(CFILE *LoadFile) { int i,segnum,sidenum; ubyte version; short temp_short; ushort temp_ushort; ubyte bit_mask; // For compiled levels, textures map to themselves, prevent tmap_override always being gray, // bug which Matt and John refused to acknowledge, so here is Mike, fixing it. #ifdef EDITOR for (i=0; i<MAX_TEXTURES; i++) tmap_xlate_table[i] = i; #endif // memset( Segments, 0, sizeof(segment)*MAX_SEGMENTS ); fuelcen_reset(); //=============================== Reading part ============================== // cfread( &version, sizeof(ubyte), 1, LoadFile ); // 1 byte = compiled version version = read_byte(LoadFile); Assert( version==COMPILED_MINE_VERSION ); // cfread( &temp_ushort, sizeof(ushort), 1, LoadFile ); // 2 bytes = Num_vertices // Num_vertices = temp_ushort; Num_vertices = read_short(LoadFile); Assert( Num_vertices <= MAX_VERTICES ); // cfread( &temp_ushort, sizeof(ushort), 1, LoadFile ); // 2 bytes = Num_segments // Num_segments = INTEL_SHORT(temp_ushort); Num_segments = read_short(LoadFile); Assert( Num_segments <= MAX_SEGMENTS ); // cfread( Vertices, sizeof(vms_vector), Num_vertices, LoadFile ); for (i = 0; i < Num_vertices; i++) read_vector( &(Vertices[i]), LoadFile); for (segnum=0; segnum<Num_segments; segnum++ ) { #ifdef EDITOR Segments[segnum].segnum = segnum; Segments[segnum].group = 0; #endif cfread( &bit_mask, sizeof(ubyte), 1, LoadFile ); #if defined(SHAREWARE) && !defined(MACINTOSH) // -- read_special(segnum,bit_mask,LoadFile); read_verts(segnum,LoadFile); read_children(segnum,bit_mask,LoadFile); #else read_children(segnum,bit_mask,LoadFile); read_verts(segnum,LoadFile); // --read_special(segnum,bit_mask,LoadFile); #endif Segments[segnum].objects = -1; // Read fix Segments[segnum].static_light (shift down 5 bits, write as short) // cfread( &temp_ushort, sizeof(temp_ushort), 1, LoadFile ); // temp_ushort = read_short(LoadFile); // Segment2s[segnum].static_light = ((fix)temp_ushort) << 4; //cfread( &Segments[segnum].static_light, sizeof(fix), 1, LoadFile ); // Read the walls as a 6 byte array for (sidenum=0; sidenum<MAX_SIDES_PER_SEGMENT; sidenum++ ) { Segments[segnum].sides[sidenum].pad = 0; } cfread( &bit_mask, sizeof(ubyte), 1, LoadFile ); for (sidenum=0; sidenum<MAX_SIDES_PER_SEGMENT; sidenum++) { ubyte byte_wallnum; if (bit_mask & (1 << sidenum)) { cfread( &byte_wallnum, sizeof(ubyte), 1, LoadFile ); if ( byte_wallnum == 255 ) Segments[segnum].sides[sidenum].wall_num = -1; else Segments[segnum].sides[sidenum].wall_num = byte_wallnum; } else Segments[segnum].sides[sidenum].wall_num = -1; } for (sidenum=0; sidenum<MAX_SIDES_PER_SEGMENT; sidenum++ ) { if ( (Segments[segnum].children[sidenum]==-1) || (Segments[segnum].sides[sidenum].wall_num!=-1) ) { // Read short Segments[segnum].sides[sidenum].tmap_num; // cfread( &temp_ushort, sizeof(ushort), 1, LoadFile ); temp_ushort = read_short(LoadFile); Segments[segnum].sides[sidenum].tmap_num = temp_ushort & 0x7fff; if (!(temp_ushort & 0x8000)) Segments[segnum].sides[sidenum].tmap_num2 = 0; else { // Read short Segments[segnum].sides[sidenum].tmap_num2; // cfread( &Segments[segnum].sides[sidenum].tmap_num2, sizeof(short), 1, LoadFile ); Segments[segnum].sides[sidenum].tmap_num2 = read_short(LoadFile); } // Read uvl Segments[segnum].sides[sidenum].uvls[4] (u,v>>5, write as short, l>>1 write as short) for (i=0; i<4; i++ ) { // cfread( &temp_short, sizeof(short), 1, LoadFile ); temp_short = read_short(LoadFile); Segments[segnum].sides[sidenum].uvls[i].u = ((fix)temp_short) << 5; // cfread( &temp_short, sizeof(short), 1, LoadFile ); temp_short = read_short(LoadFile); Segments[segnum].sides[sidenum].uvls[i].v = ((fix)temp_short) << 5; // cfread( &temp_ushort, sizeof(temp_ushort), 1, LoadFile ); temp_ushort = read_short(LoadFile); Segments[segnum].sides[sidenum].uvls[i].l = ((fix)temp_ushort) << 1; //cfread( &Segments[segnum].sides[sidenum].uvls[i].l, sizeof(fix), 1, LoadFile ); } } else { Segments[segnum].sides[sidenum].tmap_num = 0; Segments[segnum].sides[sidenum].tmap_num2 = 0; for (i=0; i<4; i++ ) { Segments[segnum].sides[sidenum].uvls[i].u = 0; Segments[segnum].sides[sidenum].uvls[i].v = 0; Segments[segnum].sides[sidenum].uvls[i].l = 0; } } } } #if 0 { FILE *fp; fp = fopen("segments.out", "wt"); for (i = 0; i <= Highest_segment_index; i++) { side sides[MAX_SIDES_PER_SEGMENT]; // 6 sides short children[MAX_SIDES_PER_SEGMENT]; // indices of 6 children segments, front, left, top, right, bottom, back short verts[MAX_VERTICES_PER_SEGMENT]; // vertex ids of 4 front and 4 back vertices int objects; // pointer to objects in this segment for (j = 0; j < MAX_SIDES_PER_SEGMENT; j++) { byte type; // replaces num_faces and tri_edge, 1 = quad, 2 = 0:2 triangulation, 3 = 1:3 triangulation ubyte pad; //keep us longword alligned short wall_num; short tmap_num; short tmap_num2; uvl uvls[4]; vms_vector normals[2]; // 2 normals, if quadrilateral, both the same. fprintf(fp, "%d\n", Segments[i].sides[j].type; fprintf(fp, "%d\n", Segments[i].sides[j].pad; fprintf(fp, "%d\n", Segments[i].sides[j].wall_num; fprintf(fp, "%d\n", Segments[i].tmap_num } fclose(fp); } #endif Highest_vertex_index = Num_vertices-1; Highest_segment_index = Num_segments-1; validate_segment_all(); // Fill in side type and normals. // MIKE!!!!! You should know better than this when the mac is involved!!!!!! for (i=0; i<Num_segments; i++) { // NO NO!!!! cfread( &Segment2s[i], sizeof(segment2), 1, LoadFile ); Segment2s[i].special = read_byte(LoadFile); Segment2s[i].matcen_num = read_byte(LoadFile); Segment2s[i].value = read_byte(LoadFile); Segment2s[i].s2_flags = read_byte(LoadFile); Segment2s[i].static_light = read_fix(LoadFile); fuelcen_activate( &Segments[i], Segment2s[i].special ); } reset_objects(1); //one object, the player return 0; }
int main(int argc, char* argv[]){ // Input Files // /* Intro Message */ printf("\n"); printf("A Program to Repack Protein Side-chains for Protein Docking Refinement Procedures\n"); printf("Copyright (c) 2014, Structural Bioinformatics Laboratory, Boston University\n"); printf("Author: Mohammad Moghadasi ([email protected]) \n"); if(argc!=10){ printf("Usage:\n ./main \n Complex_IN.pdb Complex_IN.psf Complex_IN.mol2 Complex_IN_Ligand.pdb\n Libmol-param-file charmm-param-file.prm charmm-rtf-file.rtf rotamer-library-binary-file.txt\n Complex_OUT.pdb\n \n"); exit(EXIT_FAILURE); } char* ifile = argv[1]; //pdb file of both receptor and ligand char* psffile = argv[2]; //charmm type psf file char* mol2file = argv[3]; //mol2 file char* pdbfilelig = argv[4]; //pdb file of ligand char* atom_prm_file = argv[5]; //libmol parameter file prmfile = argv[6]; //charmm type parameter file rtffile = argv[7]; //charmm type connectivity file char* rotamer_library_file = argv[8]; //rotamer raw library file char* ofile = argv[9]; //output file // Filling the atom_group struct // struct prm *atomprm = read_prm(atom_prm_file,_MOL_VERSION_); struct atomgrp* ag = read_file_atomgrp(ifile, atomprm, -1); read_ff_charmm(psffile, prmfile, rtffile, ag); if(!read_hybridization_states_from_mol2(mol2file,ag)){ exit (EXIT_FAILURE); } fix_acceptor_bases(ag,atomprm); struct List lig_list; read_fix(pdbfilelig,&lig_list.n,&lig_list.K); fixed_init(ag); fixed_update_unfreeze_all(ag); zero_grads(ag); fill_ingrp(ag); struct agsetup* ags; ags = malloc(sizeof(struct agsetup)); init_nblst(ag,ags); update_nblst(ag,ags); // Mark interface residues // int num_of_res_interface; int res_list_interface[ag->nres]; mark_interface_residues(ag,ags,lig_list, lig_rec_dist ,&num_of_res_interface,res_list_interface); // Initialize side chain rotamer library // //nrotCoef = 3; nrotCoef = 1; MAX_ROT = 245; MAX_RES = ag->nres;//needed for full_pack cutoff = 3; // Reslist // struct ifres_list* reslist; ifres_list_malloc( &reslist ); reslist->num_of_ifres = num_of_res_interface; for(int r = 0; r < reslist->num_of_ifres ; r++) reslist->ifres_num[r] = res_list_interface[r]; // Library // char *rotamer_lib; load_file_to_memory(rotamer_library_file, &rotamer_lib); struct rot_info *rotinf; init_rotinf(ag, num_of_res_interface, res_list_interface, rotamer_lib, &rotinf); struct ifres_list* reslist_minor; ifres_list_malloc( &reslist_minor ) ; // MAIN FUNCITION // // clock_t start, finish; start = clock(); full_pack(ag,lig_list,rotinf,num_of_res_interface, reslist_minor); finish = clock(); if(0) printf("Processing Time = %f\n",((double)(finish-start)/CLOCKS_PER_SEC)); // Writing the atom_group into a PDB // write_pdb_traj_nopar(ag,ifile,ofile); // Free memory // Free_ifres_list( &reslist_minor ); free(rotamer_lib); return 0; }