2
#include <stdlib.h> // system
6
#include <aw_device.hxx>
7
#include <aw_window.hxx>
8
#include <aw_awars.hxx>
10
#include <awt_sel_boxes.hxx>
14
extern GBDATA *GLOBAL_gb_main;
16
void aed_start_naligning(AW_window *aw) {
17
AW_root *root = aw->get_root();
21
GBS_strstruct *strstruct = GBS_stropen(1000);
22
GBS_strcat(strstruct,"xterm -sl 1000 -sb -e sh -c 'LD_LIBRARY_PATH=\"");
23
GBS_strcat(strstruct,GB_getenv("LD_LIBRARY_PATH"));
24
GBS_strcat(strstruct,"\";export LD_LIBRARY_PATH;for i in ");
25
if ( root->awar("naligner/what")->read_int() ) {
26
GB_transaction dummy(GLOBAL_gb_main);
27
for (GBDATA *gb_species = GBT_first_marked_species(GLOBAL_gb_main);
29
gb_species = GBT_next_marked_species(gb_species))
31
GBS_chrcat(strstruct, '\"');
32
GBS_strcat(strstruct, GBT_read_name(gb_species));
33
GBS_strcat(strstruct, "\" ");
36
char *species_name = root->awar( AWAR_SPECIES_NAME )->read_string();
37
GBS_strcat(strstruct,"\"");
38
GBS_strcat(strstruct,species_name);
39
GBS_strcat(strstruct,"\" ");
44
GBS_strcat(strstruct,"; do arb_naligner");
47
if ( root->awar("naligner/against")->read_int() ) {
48
GBS_strcat(strstruct," -PARB_PT_SERVER");
49
GBS_intcat(strstruct, root->awar( "naligner/pt_server" )->read_int() );
51
GBS_strcat(strstruct," \"-f");
52
char *family = root->awar("naligner/sagainst")->read_string();
53
GBS_strcat(strstruct,family);
55
GBS_strcat(strstruct,"\"");
57
GBS_strcat(strstruct," \"-s$i\" ");
59
if (root->awar( "naligner/mark_profile" )->read_int() ) GBS_strcat(strstruct," -mf");
60
if (root->awar( "naligner/unmark_sequence" )->read_int() ) GBS_strcat(strstruct," -us");
62
GBS_strcat(strstruct," -minf"); GBS_intcat(strstruct,root->awar("naligner/minf")->read_int());
63
GBS_strcat(strstruct," -maxf"); GBS_intcat(strstruct,root->awar("naligner/maxf")->read_int());
64
GBS_strcat(strstruct," -minw"); GBS_floatcat(strstruct,root->awar("naligner/minw")->read_float());
65
GBS_strcat(strstruct," -maxew"); GBS_floatcat(strstruct,root->awar("naligner/maxew")->read_float());
66
GBS_strcat(strstruct," -ib"); GBS_intcat(strstruct,root->awar("naligner/det/ib")->read_int());
67
GBS_strcat(strstruct," -ic"); GBS_intcat(strstruct,root->awar("naligner/det/ic")->read_int());
69
GBS_strcat(strstruct," -cl"); GBS_floatcat(strstruct, root->awar("naligner/det/cl")->read_float());
74
GBS_strcat(strstruct," -cm"); GBS_floatcat(strstruct,root->awar("naligner/det/cm")->read_float());
75
GBS_strcat(strstruct," -ch"); GBS_floatcat(strstruct,root->awar("naligner/det/ch")->read_float());
76
GBS_strcat(strstruct," -mgf"); GBS_floatcat(strstruct,root->awar("naligner/igap_panelty")->read_float());
77
GBS_strcat(strstruct," -mma1");
78
GBS_strcat(strstruct," -msub");
82
if ( i==4 || j==4 ) { /* gap panelty */
84
GBS_floatcat(strstruct,0.0);
86
GBS_floatcat(strstruct,root->awar("naligner/gap_panelty")->read_float());
87
GBS_chrcat(strstruct,',');
90
if (i<j) sprintf(var,"naligner/%c%c","acgt-"[i],"acgt-"[j]);
91
else sprintf(var,"naligner/%c%c","acgt-"[j],"acgt-"[i]);
92
GBS_floatcat(strstruct,root->awar(var)->read_float());
93
if (i<4 || j<4) GBS_chrcat(strstruct,',');
97
GBS_strcat(strstruct," || echo \"Aligner failed\";done;");
100
GBS_strcat(strstruct,"echo press \"(return)\" to close window;read a' &");
101
buffer = GBS_strclose(strstruct);
103
printf("%s\n",buffer);
108
void create_naligner_variables(AW_root *root,AW_default db1)
110
root->awar_int( "naligner/what", 0 , db1);
112
root->awar_int( "naligner/against", 0 , db1);
113
root->awar_string( "naligner/sagainst", "" , db1);
114
root->awar_int( "naligner/pt_server", -1 , db1);
116
root->awar_int( "naligner/mark_profile", 1 , db1);
117
root->awar_int( "naligner/unmark_sequence", 0 , db1);
120
root->awar_float( "naligner/aa", 0.0 , db1);
121
root->awar_float( "naligner/ac", 3.0 , db1);
122
root->awar_float( "naligner/ag", 1.0 , db1);
123
root->awar_float( "naligner/at", 3.0 , db1);
124
root->awar_float( "naligner/cc", 0.0 , db1);
125
root->awar_float( "naligner/cg", 3.0 , db1);
126
root->awar_float( "naligner/ct", 1.0 , db1);
127
root->awar_float( "naligner/gg", 0.0 , db1);
128
root->awar_float( "naligner/gt", 3.0 , db1);
129
root->awar_float( "naligner/tt", 0.0 , db1);
130
root->awar_float( "naligner/gap_panelty", 5.0 , db1);
131
root->awar_float( "naligner/igap_panelty", 0.2 , db1);
132
root->awar_int( "naligner/minf", 3 , db1);
133
root->awar_int( "naligner/maxf", 30 , db1);
136
root->awar_float( "naligner/minw", .7 , db1);
137
root->awar_float( "naligner/maxew", .2 , db1);
139
root->awar_float( "naligner/det/cl", .25 , db1);
140
root->awar_float( "naligner/det/cm", .5 , db1);
141
root->awar_float( "naligner/det/ch", .8 , db1);
142
root->awar_int( "naligner/det/ib", 5 , db1);
143
root->awar_int( "naligner/det/ic", 5 , db1);
147
void ed_nalign_save(AW_window *aww)
149
AW_root *root = aww->get_root();
150
root->save_default("naligner/aa");
153
AW_window *create_expert_naligner_window(AW_root *root)
155
const int mwidth = 5;
156
AW_window_simple *aws = new AW_window_simple;
157
aws->init( root, "ALIGNER_V2_EXPERT2", "ALIGNER V2.0 EXPERT 2");
158
aws->load_xfig("ed_al_ex.fig");
161
aws->callback ( (AW_CB0)AW_POPDOWN );
162
aws->create_button( "CLOSE", "CLOSE", "C" );
165
aws->callback(ed_nalign_save);
166
aws->create_button("SAVE", "SAVE","S");
169
aws->create_input_field("naligner/minw",mwidth);
172
aws->create_input_field("naligner/maxew",mwidth);
175
aws->create_input_field("naligner/det/ib",mwidth);
178
aws->create_input_field("naligner/det/ic",mwidth);
181
aws->create_input_field("naligner/det/cl",mwidth);
184
aws->create_input_field("naligner/det/cm",mwidth);
187
aws->create_input_field("naligner/det/ch",mwidth);
189
return (AW_window *)aws;
192
AW_window *create_special_naligner_window(AW_root *root, AW_CL cd2)
194
AW_window_simple *aws = new AW_window_simple;
195
const int mwidth = 3;
196
aws->init( root, "ALIGNER_V2_EXPERT", "ALIGNER V2.0 EXPERT");
197
aws->load_xfig("ed_al_sp.fig");
200
aws->label_length(22);
203
aws->callback ( (AW_CB0)AW_POPDOWN );
204
aws->create_button( "CLOSE", "CLOSE", "C" );
207
aws->create_input_field( "naligner/minf", 6);
210
aws->create_input_field( "naligner/maxf", 6);
213
aws->create_input_field("naligner/aa",mwidth);
215
aws->create_input_field("naligner/ac",mwidth);
217
aws->create_input_field("naligner/ag",mwidth);
219
aws->create_input_field("naligner/at",mwidth);
222
aws->create_input_field("naligner/ac",mwidth);
224
aws->create_input_field("naligner/cc",mwidth);
226
aws->create_input_field("naligner/cg",mwidth);
228
aws->create_input_field("naligner/ct",mwidth);
231
aws->create_input_field("naligner/ag",mwidth);
233
aws->create_input_field("naligner/cg",mwidth);
235
aws->create_input_field("naligner/gg",mwidth);
237
aws->create_input_field("naligner/gt",mwidth);
240
aws->create_input_field("naligner/at",mwidth);
242
aws->create_input_field("naligner/ct",mwidth);
244
aws->create_input_field("naligner/gt",mwidth);
246
aws->create_input_field("naligner/tt",mwidth);
249
aws->create_input_field("naligner/gap_panelty",4);
252
aws->create_input_field("naligner/igap_panelty",4);
255
aws->callback((AW_CB1)AW_POPUP,(AW_CL)create_expert_naligner_window);
256
aws->create_button("EXPERT_OPTIONS", "EXPERT2","E");
259
aws->callback(ed_nalign_save);
260
aws->create_button("SAAVE", "SAVE","S");
262
return (AW_window *)aws;
265
AW_window *create_naligner_window( AW_root *root, AW_CL cd2 ) {
267
AW_window_simple *aws = new AW_window_simple;
268
aws->init( root, "ALIGNER_V2","ALIGNER V2.0");
269
aws->load_xfig("awt/align.fig");
273
aws->label_length( 10 );
274
aws->button_length( 10 );
277
aws->callback ( (AW_CB0)AW_POPDOWN );
278
aws->create_button( "CLOSE", "CLOSE", "O" );
281
aws->callback ( AW_POPUP_HELP, (AW_CL) "ne_align_seq.hlp" );
282
aws->create_button( "HELP", "HELP" );
285
aws->callback ( aed_start_naligning );
287
aws->create_button( "GO", "GO", "G");
290
aws->callback ( (AW_CB1)AW_POPUP,(AW_CL)create_special_naligner_window );
291
aws->create_button( "OPTIONS", "PARAMETERS", "E");
294
aws->create_toggle_field("naligner/what","Align","A");
295
aws->insert_toggle("Selected Species:","S",0);
296
aws->insert_default_toggle("Marked Species","M",1);
297
aws->update_toggle_field();
300
aws->create_input_field( AWAR_SPECIES_NAME, 2);
303
aws->create_toggle_field("naligner/against","Reference","g");
304
aws->insert_toggle("Species by name","S",0);
305
aws->insert_default_toggle("Auto search by pt_server","S",1);
306
aws->update_toggle_field();
308
aws->at( "sagainst" );
309
aws->create_input_field( "naligner/sagainst", 2);
311
aws->label_length( 25 );
313
aws->at( "pt_server" );
314
aws->label("PT_SERVER:");
315
awt_create_selection_list_on_pt_servers(aws, "naligner/pt_server", true);
318
aws->label_length(40);
319
aws->label("Mark sequences found by the pt_server");
320
aws->create_toggle( "naligner/mark_profile");
322
return (AW_window *)aws;