/** * Called by the GUI when a key event is received, triggers an action in the * controller. * */ void Controller::receive_gui_event(const char *event,const char *value) { if(m_sleeping) return; //TODO: Fix this total mess, refactor into switch, break conditions out into methods. if(strcmp(event,"Sleep" ) == 0) event_sleep(event,value); else if(strcmp(event,"KEYPRESS" ) == 0) m_powerup=true; else if(strcmp(event,"TOTALTIMER" ) == 0) event_totaltimer(event,value); else if(strcmp(event,"Save:PulseWidth") == 0) event_save_pulsewidth(event,value); else if(strcmp(event,"Save:Calib" ) == 0) event_save_calibration(); else if(strcmp(event,"Save:Becq" ) == 0) event_save_becq(event,value); else if(strcmp(event,"Save:UTCOff" ) == 0) event_save_utcoff(event,value); else if(strcmp(event,"Save:Time" ) == 0) save_time(); else if(strcmp(event,"Save:Date" ) == 0) save_date(); else if(strcmp(event,"Save:WarnCPM" ) == 0) save_warncpm(); else if(strcmp(event,"Japanese" ) == 0) event_japanese(event,value); else if(strcmp(event,"Never Dim" ) == 0) event_neverdim(event,value); else if(strcmp(event,"English" ) == 0) event_english(event,value); else if(strcmp(event,"CPM/CPS Auto" ) == 0) event_cpm_cps_auto(event,value); else if(strcmp(event,"Geiger Beep" ) == 0) event_geiger_beep(event,value); else if(strcmp(event,"\x80Sv" ) == 0) event_usv(event,value); else if(strcmp(event,"\x80R" ) == 0) event_rem(event,value); else if(strcmp(event,"Clear Log" ) == 0) event_clear_log(event,value); else if(strcmp(event,"Save:Brightness") == 0) event_save_brightness(event,value); else if(strcmp(event,"Save:LogInter" ) == 0) save_loginterval(); else if(strcmp(event,"CALIBRATE" ) == 0) initialise_calibration(); else if(strcmp(event,"UTCSCREEN" ) == 0) event_utcscreen(event,value); else if(strcmp(event,"TIMESCREEN" ) == 0) event_timescreen(event,value); else if(strcmp(event,"BECQSCREEN" ) == 0) event_becqscreen(event,value); else if(strcmp(event,"LOGINTERVAL" ) == 0) event_loginterval(event,value); else if(strcmp(event,"WARNSCREEN" ) == 0) event_warnscreen(event,value); else if(strcmp(event,"DATESCREEN" ) == 0) event_datescreen(event,value); else if(strcmp(event,"BrightnessSCN" ) == 0) event_brightnessscn(event,value); else if(strcmp(event,"LeftBrightness" ) == 0) event_leftbrightness(event,value); else if(strcmp(event,"QR Transfer" ) == 0) qr_logxfer(); else if(strcmp(event,"Audio Xfer" ) == 0) event_audioxfer(event,value); else if(strcmp(event,"QR Tweet" ) == 0) event_qrtweet(event,value); else if(strcmp(event,"varnumchange" ) == 0) { if(strcmp ("BRIGHTNESS",value) == 0) event_varnum_brightness(event,value); else if(strcmpl("CAL" ,value,3) ) update_calibration(); else if(strcmpl("DATE" ,value,4) ) event_varnum_date(event,value); else if(strcmpl("TIME" ,value,4) ) event_varnum_time(event,value); } }
/*------------------------------------------------------------------------------ Call a user-supplied weight function, or read a user-supplied file, to determine the weight of the region at angular position az, el in deg. ================================================================================ In c, the user-supplied function should take the form: double weight(double *az, double *el) verbose is available as a global variable that can be declared with extern int verbose; or you can use the msg() routine for printing messages. ================================================================================ In fortran, the same user-supplied function should take the form (note the trailing _ added to the function name, as is standard when calling fortran routines from c): real*8 function weight_(az, el) real*8 az, el ================================================================================ Input: az, el = azimuth, elevation in degrees. survey = name of survey, or name of file containing list of weights. Output: weight at angular position az, el; if survey is null, then weight is set to 1. */ double weight_fn(double az, double el, char *survey) { double weight; /* null survey */ if (!survey) { weight = 1.; /* 2dF 10k quasar survey */ } else if (strcmpl(survey, "2QZ10k") == 0) { weight = twoqz_(&az, &el, &verbose); /* 2dF 100k galaxy survey */ } else if (strcmpl(survey, "2dF100k") == 0) { weight = twodf_(&az, &el); /* try reading weights from file */ } else { weight = rdweight(survey); } return(weight); }
void ReadATrait(quanttrait *traitp) { char *s; s = getstr(); // Checking if it has the sysmiss symbol if (!strcmpl(SYSMISS,s)) { traitp->sysmiss = 1; traitp->value = 0; } else { traitp->sysmiss = 0; traitp->value = atof(s); } return; }
int ExportMerlinPedigree (individual *indlist) { individual *ind; markerlist *marker; namelist *pedlist, *pedigr; quanttrait *qt; int fndr, i, pednr; // Checks that data exists if (!listlen(indlist)) { return -1; } cfopen ("merlin.ped","w"); pedigr = MakePedigreeList(indlist); // Run through each pedigree for (pedlist = pedigr, pednr=1; pedlist; pedlist = pedlist ->next, pednr++) { // First select all founders then all offspring for (fndr = 1; fndr >= 0; fndr--) { for (ind = indlist; ind; ind = ind->next) { // First prints the founders from right pedigree if ((founder(ind)==fndr) && (!strcmpl(ind->pedigree, pedlist->name))) { // Converts ID's to simple numbers fprintf(F, "%-5d %-12d", pednr, ind->globalid); if (ind->father) fprintf(F, "%-12d", ind->father->globalid); else fprintf(F, "%-12d", 0); if (ind->mother) fprintf(F, "%-12d", ind->mother->globalid); else fprintf(F, "%-12d", 0); fprintf(F, "%-2d", ind->sex); // Print marker info for (marker = ind->marker, i=1; marker; marker = marker->next, i++) { #ifdef XGH if (options->Index[O_XLINKED] && ind->sex == S_MALE ) { fprintf(F, " %2d %2d ", NumberOfAlleles(i)+1, marker->allele2); } else fprintf(F, " %2d %2d ", marker->allele1, marker->allele2); #else fprintf(F, " %2d %2d ", marker->allele1, marker->allele2); #endif } // Print traits for (qt = ind->qttrait; qt; qt = qt->next) { if (qt->sysmiss) fprintf(F, " %-6s ", "x"); else fprintf(F, " %-6f ", qt->value); } fprintf(F, "\n"); } } } } fclose(F); printf("Created MERLIN pedigree file\n"); freelist(pedigrees); pedigrees = 0; return(0); }
void ExportLinkagePedigree (individual *indlist, int aff) { individual *ind; markerlist *marker; namelist *pedlist, *pedigr; quanttrait *qt; int fndr, i; if (aff==1) cfopen ("gh.ped","w"); else cfopen ("linkage.ped","w"); pedigr = MakePedigreeList(indlist); for (pedlist = pedigr; pedlist; pedlist = pedlist ->next) { for (fndr = 1; fndr >= 0; fndr--) { for (ind = indlist; ind; ind = ind->next) { // First prints the founders from right pedigree if ((founder(ind)==fndr) && (!strcmpl(ind->pedigree, pedlist->name))) { // Converts GeneHunter ID number to simple numbers if (aff == 1) { fprintf(F, "%-7s %-12d", ind->pedigree, ind->globalid); if (ind->father) fprintf(F, "%-12d", ind->father->globalid); else fprintf(F, "%-12d", 0); if (ind->mother) fprintf(F, "%-12d", ind->mother->globalid); else fprintf(F, "%-12d", 0); } else { fprintf(F, "%-7s %-12s", ind->pedigree, ind->id); if (ind->father) fprintf(F, "%-12s", ind->father->id); else fprintf(F, "%-12d", 0); if (ind->mother) fprintf(F, "%-12s", ind->mother->id); else fprintf(F, "%-12d", 0); } fprintf(F, "%-2d", ind->sex); if (aff) fprintf(F, "1 "); for (marker = ind->marker, i=1; marker; marker = marker->next, i++) { #ifdef XGH if (options->Index[O_XLINKED] && ind->sex == S_MALE ) { fprintf(F, " %2d %2d ", NumberOfAlleles(i)+1, marker->allele2); } else fprintf(F, " %2d %2d ", marker->allele1, marker->allele2); #else fprintf(F, " %2d %2d ", marker->allele1, marker->allele2); #endif } for (qt = ind->qttrait; qt; qt = qt->next) { if (qt->sysmiss) fprintf(F, " %s ", SYSMISS); else fprintf(F, " %f ", qt->value); } fprintf(F, "\n"); } } } } fclose(F); if (aff) printf("Created GeneHunter pedigree file\n"); else printf("Created LINKAGE pedigree file\n"); freelist(pedigrees); pedigrees = 0; }
void ExportMendelPedigree (individual *indlist) { int i; namelist *pedigree, *pedlist; markerlist *marker; individual *ind; pedlist = MakePedigreeList(indlist); cfopen ("mendel.ped", "w"); fprintf(F, "(I4,A15,A8)\n"); fprintf(F, "(3A11,3A2"); // Add marker info if (numberofmarkers()>0) fprintf(F, ",%d(1X,A7)", numberofmarkers()); if (numberoftraits()>0) fprintf(F, ",%d(1X,A8)", numberoftraits()); fprintf(F, ")\n"); for (pedigree = pedlist; pedigree; pedigree = pedigree ->next) { fprintf(F, "%-4d%-15s\n",FamilySize(indlist, pedigree->name), pedigree->name); for (ind = indlist; ind; ind = ind->next) { if (!strcmpl(pedigree->name, ind->pedigree)) { if (founder(ind)) { fprintf(F, "%-11s%-11s%-11s", ind->id, "",""); } else { fprintf(F, "%-11s%-11s%-11s", ind->id, ind->father->id, ind->mother->id); } // Spaces here for non-existing disease status and monozygotic twin status? fprintf(F, "%2s ", ind->sex==S_MALE ? "M" : "F"); // Now write the marker information for (i=1; i<=numberofmarkers(); i++) { marker = markernumber(ind, order[i]); if (marker->allele1 == 0 || marker->allele2 == 0) { fprintf(F, " %7s", ""); } else { // fprintf(F, " %3d/%-3d", marker->allele1, marker->allele2); fprintf(F, " %3c/%-3c", 64+marker->allele1, 64+marker->allele2); } } // Then write the trait information for (i=1; i<=numberoftraits(); i++) { if (!traitmiss(ind, i)) fprintf(F, " %8f", trait(ind, i)); else fprintf(F, " %8s", ""); } fprintf(F, "\n"); } } } freelist(pedlist); fclose(F); }
int ExportCRIMAPGen(individual *indlist, int xlinked) { individual *ind; namelist *pedigree, *ped; markerlist *mkr; char mkrname[NAMESIZE], tempstr[NAMESIZE]; int nFamilies, nLoci, i, nInternalID, nMembers, al1, al2, pseudoal; nLoci = listlen(indlist->marker); pedigree = MakePedigreeList(indlist); nFamilies = listlen(pedigree); cfopen ("crimap.gen", "w"); fprintf(F, "%d %d", nFamilies, nLoci); // The first line // Prints the markers in the correct order for (i = 1; i<= nLoci; i++) { // Remove white spaces in marker name RemoveWhiteSpace(tempstr, GetName(markernames, order[i])); strncpy(mkrname, tempstr, 15); fprintf(F, " %s", mkrname); } fprintf(F, "\n"); // Fixes internal id's for use below for (ped = pedigree; ped; ped = ped->next) { nInternalID = 1; for (ind = indlist; ind; ind = ind->next) { // From the right pedigree if (!strcmpl(ind->pedigree, ped->name)) { ind->localid = nInternalID; nInternalID++; } } } // Writes each family for (ped = pedigree; ped; ped = ped->next) { // Family name fprintf(F, "%s\n", ped->name); nMembers = 0; // Count the number of family members for (ind = indlist; ind; ind = ind->next) { // From the right pedigree if (!strcmpl(ind->pedigree, ped->name)) nMembers++; } fprintf(F, "%d\n", nMembers); for (ind = indlist; ind; ind = ind->next) { // From the right pedigree if (!strcmpl(ind->pedigree, ped->name)) { if (founder(ind)) fprintf(F, "%d 0 0 ", ind->localid); else fprintf(F, "%d %d %d ", ind->localid, ind->father->localid, ind->mother->localid); switch (ind->sex) { case S_MALE: fprintf(F, "1"); break; case S_FEMALE: fprintf(F, "0"); break; default: fprintf(F, "3"); break; } // Should now print the alleles for each locus // If xlinked, then create a pseudo allele for each marker // to make the males heterozygous for (i = 1; i<= nLoci; i++) { mkr = markernumber(ind, order[i]); al1 = mkr->allele1; al2 = mkr->allele2; if (xlinked && ind->sex == S_MALE && al1>0 && al2>0) { pseudoal = NumberOfAlleles(order[i])+1; al2 = pseudoal; } fprintf(F, " %d %d", al1, al2); } fprintf(F, "\n"); } } } fclose(F); printf("Created crimap gen file\n"); if (xlinked) { printf("Pseudo-allele generated for all males\n"); } return 0; }
int ExportRelpairPedigree(individual *indlist) { int i, famsize; namelist *pedlist, *pedigr; individual *ind, *ind2; markerlist *marker; cfopen ("relpair.ped", "w"); fprintf(F, "(I4,1X,A8)\n"); fprintf(F, "(3A8,2A1"); if (numberofmarkers()) fprintf(F, ",A3"); if (numberofmarkers()>1) { fprintf(F, ",%d(1X,A3))\n", numberofmarkers()-1); } pedigr = MakePedigreeList(indlist); for (pedlist = pedigr; pedlist; pedlist = pedlist ->next) { // Start by calculating the family size famsize = 0; for (ind2 = indlist; ind2; ind2 = ind2->next) { if (!strcmpl(pedlist->name, ind2->pedigree)) { famsize++; } } fprintf(F, "%4d %s \n",famsize, pedlist->name); for (ind = indlist; ind; ind = ind->next) { // Pick correct pedigree if (!strcmpl(ind->pedigree,pedlist->name)) { fprintf(F, "%-8s", ind->id); if (ind->father) fprintf(F, "%-8s", ind->father->id); else fprintf(F, "%-8s", "0"); if (ind->mother) fprintf(F, "%-8s", ind->mother->id); else fprintf(F, "%-8s", "0"); if (ind->sex == S_MALE) fprintf(F, "M"); else fprintf(F, "F"); fprintf(F, " "); // MZ status // Prints the genotypes for (i = 1; i<=numberofmarkers(); i++) { marker = markernumber(ind, order[i]); if (marker->allele1*marker->allele2) fprintf(F, "%c/%c ", marker->allele1 + 64, marker->allele2 + 64); else fprintf(F, " "); } fprintf(F, "\n"); } } } fclose(F); freelist(pedigr); printf("Created relpair pedigree file\n"); return 1; }