/* Function: p7_bg_Create() * Incept: SRE, Fri Jan 12 13:32:51 2007 [Janelia] * * Purpose: Allocate a <P7_BG> object for digital alphabet <abc>, * initializes it to appropriate default values, and * returns a pointer to it. * * For protein models, default iid background frequencies * are set (by <p7_AminoFrequencies()>) to average * SwissProt residue composition. For DNA, RNA and other * alphabets, default frequencies are set to a uniform * distribution. * * The model composition <bg->mcomp[]> is not initialized * here; neither is the filter null model <bg->fhmm>. To * use the filter null model, caller will want to * initialize these fields by calling * <p7_bg_SetFilterByHMM()>. * * Throws: <NULL> on allocation failure. * * Xref: STL11/125. */ P7_BG * p7_bg_Create(const ESL_ALPHABET *abc) { P7_BG *bg = NULL; int status; ESL_ALLOC(bg, sizeof(P7_BG)); bg->f = NULL; bg->fhmm = NULL; ESL_ALLOC(bg->f, sizeof(float) * abc->K); if ((bg->fhmm = esl_hmm_Create(abc, 2)) == NULL) goto ERROR; if (abc->type == eslAMINO) { if (p7_AminoFrequencies(bg->f) != eslOK) goto ERROR; } else esl_vec_FSet(bg->f, abc->K, 1. / (float) abc->K); bg->p1 = 350./351.; bg->omega = 1./256.; bg->abc = abc; return bg; ERROR: p7_bg_Destroy(bg); return NULL; }
/* Function: p7_bg_Create() * Synopsis: Create a <P7_BG> null model object. * * Purpose: Allocate a <P7_BG> object for digital alphabet <abc>, * initializes it to appropriate default values, and * returns a pointer to it. * * For protein models, default iid background frequencies * are set (by <p7_AminoFrequencies()>) to average * Swiss-Prot residue composition. For DNA, RNA and other * alphabets, default frequencies are set to a uniform * distribution. * * The model composition <bg->mcomp[]> is not initialized * here; neither is the filter null model <bg->fhmm>. To * use the filter null model, caller will want to * initialize these fields by calling * <p7_bg_SetFilter()>. * * Throws: <NULL> on allocation failure. * * Xref: STL11/125. */ P7_BG * p7_bg_Create(const ESL_ALPHABET *abc) { P7_BG *bg = NULL; int status; ESL_ALLOC(bg, sizeof(P7_BG)); bg->f = NULL; bg->fhmm = NULL; // this is not hard-coded for alphabet size... ESL_ALLOC(bg->f, sizeof(float) * abc->K); if ((bg->fhmm = esl_hmm_Create(abc, 2)) == NULL) goto ERROR; if (abc->type == eslAMINO) { if (p7_AminoFrequencies(bg->f) != eslOK) goto ERROR; } // adding in background probabilities for music intervals else if (abc->type == eslMUSIC) { if (p7_MusicFrequencies(bg->f) != eslOK) goto ERROR; } else esl_vec_FSet(bg->f, abc->K, 1. / (float) abc->K); bg->p1 = 350./351.; bg->omega = 1./256.; bg->abc = abc; return bg; ERROR: p7_bg_Destroy(bg); return NULL; }