1 /****************************************************************\
2 * *
3 * Coding DNA comparison model *
4 * *
5 * Guy St.C. Slater.. mailto:guy@ebi.ac.uk *
6 * Copyright (C) 2000-2009. All Rights Reserved. *
7 * *
8 * This source code is distributed under the terms of the *
9 * GNU General Public License, version 3. See the file COPYING *
10 * or http://www.gnu.org/licenses/gpl.txt for details *
11 * *
12 * If you use this code, please keep this notice intact. *
13 * *
14 \****************************************************************/
15
16 #include "coding2coding.h"
17 #include "frameshift.h"
18
Coding2Coding_Data_init(Coding2Coding_Data * c2cd,Sequence * query,Sequence * target)19 void Coding2Coding_Data_init(Coding2Coding_Data *c2cd,
20 Sequence *query, Sequence *target){
21 g_assert(query->alphabet->type == Alphabet_Type_DNA);
22 g_assert(target->alphabet->type == Alphabet_Type_DNA);
23 Affine_Data_init(&c2cd->ad, query, target, TRUE);
24 if(!Coding2Coding_Data_get_Frameshift_Data(c2cd))
25 Coding2Coding_Data_get_Frameshift_Data(c2cd)
26 = Frameshift_Data_create();
27 return;
28 }
29
Coding2Coding_Data_create(Sequence * query,Sequence * target)30 Coding2Coding_Data *Coding2Coding_Data_create(
31 Sequence *query, Sequence *target){
32 register Coding2Coding_Data *c2cd = g_new0(Coding2Coding_Data, 1);
33 Coding2Coding_Data_init(c2cd, query, target);
34 return c2cd;
35 }
36
Coding2Coding_Data_clear(Coding2Coding_Data * c2cd)37 void Coding2Coding_Data_clear(Coding2Coding_Data *c2cd){
38 Affine_Data_clear(&c2cd->ad);
39 Frameshift_Data_destroy(
40 Coding2Coding_Data_get_Frameshift_Data(c2cd));
41 return;
42 }
43
Coding2Coding_Data_destroy(Coding2Coding_Data * c2cd)44 void Coding2Coding_Data_destroy(Coding2Coding_Data *c2cd){
45 Coding2Coding_Data_clear(c2cd);
46 g_free(c2cd);
47 return;
48 }
49
Coding2Coding_create(void)50 C4_Model *Coding2Coding_create(void){
51 register gchar *name = "coding2coding";
52 register C4_Model *model = NULL;
53 register C4_Transition *match_transition;
54 model = Affine_create(Affine_Model_Type_LOCAL,
55 Alphabet_Type_DNA, Alphabet_Type_DNA, TRUE);
56 g_assert(model);
57 C4_Model_rename(model, name);
58 C4_Model_open(model);
59 match_transition = C4_Model_select_single_transition(model,
60 C4_Label_MATCH);
61 g_assert(match_transition);
62 Frameshift_add(model, match_transition->input, "query", TRUE);
63 Frameshift_add(model, match_transition->input, "target", FALSE);
64 C4_Model_close(model);
65 return model;
66 }
67
68