cDNA * get_cDNA_from_cDNADB(cDNADB * cdnadb,DataEntry * de) { Sequence * seq; Sequence * temp; if( cdnadb == NULL ) { warn("Cannot get entry from a null database"); return NULL; } if( de == NULL ) { warn("Cannot get entry with a null dataentry"); return NULL; } if( cdnadb->is_single_seq == TRUE ) { if( de->is_reversed == TRUE ) return cDNA_from_Sequence(hard_link_Sequence(cdnadb->rev->seq)); else return cDNA_from_Sequence(hard_link_Sequence(cdnadb->forw->seq)); } /* we need to get out the Sequence from seqdb */ seq = get_Sequence_from_SequenceDB(cdnadb->sdb,de); if( seq == NULL ) { warn("Cannot get entry for %s from cDNA db",de->name); return NULL; } if( seq->type != SEQUENCE_DNA) { warn("Sequence from %s data entry doesn't look like DNA. Forcing it to",de->name); } force_to_dna_Sequence(seq,1.0,NULL); if( de->is_reversed == TRUE ) { temp = reverse_complement_Sequence(seq); free_Sequence(seq); seq = temp; } return cDNA_from_Sequence(seq); }
Genomic * get_Genomic_from_GenomicDB(GenomicDB * gendb,DataEntry * de) { Sequence * seq; Sequence * temp; /* we need to get out the Sequence from seqdb */ if( gendb == NULL || de == NULL ) { warn("Cannot get a genomic sequence from NULL objects. Ugh!"); return NULL; } if( gendb->is_single_seq) { if( de->is_reversed == TRUE ) return hard_link_Genomic(gendb->revsingle); else return hard_link_Genomic(gendb->single); } seq = get_Sequence_from_SequenceDB(gendb->sdb,de); if( seq == NULL ) { warn("Cannot get entry for %s from Genomic db",de->name); } /* check dna status. We assumme someone knows what he is doing when he makes a genomic db!*/ if( seq->type != SEQUENCE_DNA) { warn("Sequence from %s data entry doesn't look like DNA. Forcing it to",de->name); } force_to_dna_Sequence(seq,1.0,NULL); if( de->is_reversed == TRUE ) { temp = reverse_complement_Sequence(seq); free_Sequence(seq); seq = temp; } return Genomic_from_Sequence_Nheuristic(seq,gendb->length_of_N); }
ThreeStateModel * indexed_ThreeStateModel_ThreeStateDB(ThreeStateDB * mdb,DataEntry * en) { Sequence * seq; Protein * pro; ThreeStateModel * tsm; switch(mdb->dbtype) { case TSMDB_SINGLE : return hard_link_ThreeStateModel(mdb->single); case TSMDB_HMMER1PFAM : tsm = ThreeStateModel_from_name_PfamHmmer1DB(mdb->phdb,en->name); set_startend_policy_ThreeStateModel(tsm,mdb->type,30,0.2); return tsm; case TSMDB_PROTEIN : seq = get_Sequence_from_SequenceDB(mdb->sdb,en); if( seq == NULL ) { warn("could not retrieve %s as a sequence from database",en->name); return NULL; } pro = Protein_from_Sequence(seq); if( pro == NULL ) { warn("Could not convert sequence to a protein. Exiting!"); return NULL; } /* convert protein to threestatemodel */ tsm = ThreeStateModel_from_half_bit_Sequence(pro,mdb->comp,mdb->rm,mdb->gap,mdb->ext); if( tsm == NULL ) { warn("Could not convert protein to threestatemode. Exiting!"); free_Protein(pro); return NULL; } free_Protein(pro); /* DB status already set by seqdb */ return tsm; case TSMDB_GENERIC : tsm = ((*mdb->index_generic)(mdb,en)); if( tsm == NULL ) { return NULL; } /* fprintf(stdout,"Setting %d as policy\n",mdb->type); */ set_startend_policy_ThreeStateModel(tsm,mdb->type,30,0.2); return tsm; default : warn("Unknown threestatedb type"); return NULL; } warn("Should never get here - in threestatedb reload!"); return NULL; }