Class: Edlib::Aligner
- Inherits:
-
Object
- Object
- Edlib::Aligner
- Defined in:
- lib/edlib.rb,
ext/edlib/edlib.c
Instance Method Summary collapse
- #additional_equalities ⇒ Object
- #additional_equalities=(equalities) ⇒ Object
- #align(query, target) ⇒ Object
- #config ⇒ Object
-
#initialize(k: -1,, mode: 'NW', task: 'DISTANCE', additional_equalities: nil) ⇒ Aligner
constructor
A new instance of Aligner.
- #k ⇒ Object
- #k=(k) ⇒ Object
- #mode ⇒ Object
- #mode=(mode) ⇒ Object
- #task ⇒ Object
- #task=(task) ⇒ Object
Constructor Details
#initialize(k: -1,, mode: 'NW', task: 'DISTANCE', additional_equalities: nil) ⇒ Aligner
Returns a new instance of Aligner.
5 6 7 8 9 10 11 |
# File 'lib/edlib.rb', line 5 def initialize(k:-1, mode: 'NW', task: 'DISTANCE', additional_equalities: nil) mode = mode.to_s if mode.is_a? Symbol task = task.to_s if task.is_a? Symbol mode = mode.upcase if mode.is_a? String task = task.upcase if task.is_a? String initialize_raw(k, mode, task, additional_equalities) end |
Instance Method Details
#additional_equalities ⇒ Object
220 221 222 223 224 225 |
# File 'ext/edlib/edlib.c', line 220 static VALUE aligner_get_additional_equalities(VALUE self) { EdlibAlignConfig *config = get_config(self); return get_additional_equalities(config); } |
#additional_equalities=(equalities) ⇒ Object
264 265 266 267 268 269 |
# File 'ext/edlib/edlib.c', line 264 static VALUE aligner_set_additional_equalities(VALUE self, VALUE equalities) { EdlibAlignConfig *config = get_config(self); return set_additional_equalities(config, equalities); } |
#align(query, target) ⇒ Object
307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 |
# File 'ext/edlib/edlib.c', line 307 static VALUE aligner_align(VALUE self, VALUE query, VALUE target) { EdlibAlignConfig *config = get_config(self); if (!config) { rb_raise(rb_eRuntimeError, "config is NULL"); } EdlibAlignConfig cfg = edlibNewAlignConfig( config->k, config->mode, config->task, config->additionalEqualities, config->additionalEqualitiesLength); EdlibAlignResult result = edlibAlign( StringValueCStr(query), RSTRING_LEN(query), StringValueCStr(target), RSTRING_LEN(target), cfg); if (result.status != 0) { rb_raise(rb_eRuntimeError, "edlibAlign failed"); } VALUE edit_distance = INT2NUM(result.editDistance); VALUE alphabet_length = INT2NUM(result.alphabetLength); VALUE locations = rb_ary_new(); VALUE alignment = rb_ary_new(); VALUE cigar; int *el = result.endLocations; int *sl = result.startLocations; for (int i = 0; i < result.numLocations; i++) { VALUE ary = rb_ary_new(); if (sl) { rb_ary_push(ary, INT2NUM(sl[i])); } else { rb_ary_push(ary, Qnil); } if (el) { rb_ary_push(ary, INT2NUM(el[i])); } else { rb_ary_push(ary, Qnil); } rb_ary_push(locations, ary); } for (int i = 0; i < result.alignmentLength; i++) { rb_ary_push(alignment, UINT2NUM(result.alignment[i])); } char *ccigar = edlibAlignmentToCigar(result.alignment, result.alignmentLength, 1); // EDLIB_CIGAR_EXTENDED cigar = rb_str_new2(ccigar); VALUE hash = rb_hash_new(); rb_hash_aset(hash, ID2SYM(rb_intern("edit_distance")), edit_distance); rb_hash_aset(hash, ID2SYM(rb_intern("alphabet_length")), alphabet_length); rb_hash_aset(hash, ID2SYM(rb_intern("locations")), locations); rb_hash_aset(hash, ID2SYM(rb_intern("alignment")), alignment); rb_hash_aset(hash, ID2SYM(rb_intern("cigar")), cigar); edlibFreeAlignResult(result); return hash; } |
#config ⇒ Object
271 272 273 274 275 276 277 278 279 280 281 282 283 284 |
# File 'ext/edlib/edlib.c', line 271 static VALUE aligner_config_hash(VALUE self) { EdlibAlignConfig *config = get_config(self); VALUE hash = rb_hash_new(); rb_hash_aset(hash, ID2SYM(rb_intern("k")), get_k(config)); rb_hash_aset(hash, ID2SYM(rb_intern("mode")), get_mode(config)); rb_hash_aset(hash, ID2SYM(rb_intern("task")), get_task(config)); rb_hash_aset(hash, ID2SYM(rb_intern("additional_equalities")), get_additional_equalities(config)); return hash; } |
#k ⇒ Object
48 49 50 51 52 53 |
# File 'ext/edlib/edlib.c', line 48 static VALUE aligner_get_k(VALUE self) { EdlibAlignConfig *config = get_config(self); return get_k(config); } |
#k=(k) ⇒ Object
62 63 64 65 66 67 |
# File 'ext/edlib/edlib.c', line 62 static VALUE aligner_set_k(VALUE self, VALUE k) { EdlibAlignConfig *config = get_config(self); return set_k(config, k); } |
#mode ⇒ Object
85 86 87 88 89 90 |
# File 'ext/edlib/edlib.c', line 85 static VALUE aligner_get_mode(VALUE self) { EdlibAlignConfig *config = get_config(self); return get_mode(config); } |
#mode=(mode) ⇒ Object
129 130 131 132 133 134 |
# File 'ext/edlib/edlib.c', line 129 static VALUE aligner_set_mode(VALUE self, VALUE mode) { EdlibAlignConfig *config = get_config(self); return set_mode(config, mode); } |
#task ⇒ Object
152 153 154 155 156 157 |
# File 'ext/edlib/edlib.c', line 152 static VALUE aligner_get_task(VALUE self) { EdlibAlignConfig *config = get_config(self); return get_task(config); } |
#task=(task) ⇒ Object
196 197 198 199 200 201 |
# File 'ext/edlib/edlib.c', line 196 static VALUE aligner_set_task(VALUE self, VALUE task) { EdlibAlignConfig *config = get_config(self); return set_task(config, task); } |