Mercurial > repos > rv43 > tomo
comparison general.py @ 56:ca61007a60fa draft
"planemo upload for repository https://github.com/rolfverberg/galaxytools commit fc9b26da497e467c28b0adf3f94422b4cb61f59c"
author | rv43 |
---|---|
date | Tue, 02 Aug 2022 19:52:47 +0000 |
parents | 26f99fdd8d61 |
children | 98a83f03d91b |
comparison
equal
deleted
inserted
replaced
55:bead50a4eadc | 56:ca61007a60fa |
---|---|
332 print(f'{s}{v_range}{default_string}: ') | 332 print(f'{s}{v_range}{default_string}: ') |
333 try: | 333 try: |
334 i = input() | 334 i = input() |
335 if isinstance(i, str) and not len(i): | 335 if isinstance(i, str) and not len(i): |
336 v = default | 336 v = default |
337 print(f'{v}') | |
337 else: | 338 else: |
338 v = literal_eval(i) | 339 v = literal_eval(i) |
339 if inset and v not in inset: | 340 if inset and v not in inset: |
340 raise ValueError(f'{v} not part of the set {inset}') | 341 raise ValueError(f'{v} not part of the set {inset}') |
341 except (ValueError, TypeError, SyntaxError, MemoryError, RecursionError): | 342 except (ValueError, TypeError, SyntaxError, MemoryError, RecursionError): |
387 print(f'{s}{v_range}{default_string}: ') | 388 print(f'{s}{v_range}{default_string}: ') |
388 try: | 389 try: |
389 i = input() | 390 i = input() |
390 if isinstance(i, str) and not len(i): | 391 if isinstance(i, str) and not len(i): |
391 v = default | 392 v = default |
393 print(f'{v}') | |
392 else: | 394 else: |
393 v = literal_eval(i) | 395 v = literal_eval(i) |
394 except (ValueError, TypeError, SyntaxError, MemoryError, RecursionError): | 396 except (ValueError, TypeError, SyntaxError, MemoryError, RecursionError): |
395 v = None | 397 v = None |
396 except: | 398 except: |
458 else: | 460 else: |
459 print(f'{s}{default_string}: ') | 461 print(f'{s}{default_string}: ') |
460 i = input() | 462 i = input() |
461 if isinstance(i, str) and not len(i): | 463 if isinstance(i, str) and not len(i): |
462 i = default | 464 i = default |
465 print(f'{i}') | |
463 if i is not None and i.lower() in 'yes': | 466 if i is not None and i.lower() in 'yes': |
464 v = True | 467 v = True |
465 elif i is not None and i.lower() in 'no': | 468 elif i is not None and i.lower() in 'no': |
466 v = False | 469 v = False |
467 else: | 470 else: |
485 print(f'Choose one of the following items (1, {len(items)}){default_string}:') | 488 print(f'Choose one of the following items (1, {len(items)}){default_string}:') |
486 else: | 489 else: |
487 print(f'{header} (1, {len(items)}){default_string}:') | 490 print(f'{header} (1, {len(items)}){default_string}:') |
488 for i, choice in enumerate(items): | 491 for i, choice in enumerate(items): |
489 print(f' {i+1}: {choice}') | 492 print(f' {i+1}: {choice}') |
490 choice = input() | 493 try: |
491 if isinstance(choice, str) and not len(choice): | 494 choice = input() |
492 choice = items.index(default) | 495 if isinstance(choice, str) and not len(choice): |
493 else: | 496 choice = items.index(default) |
494 choice = literal_eval(choice) | 497 print(f'{choice+1}') |
495 if isinstance(choice, int) and 1 <= choice <= len(items): | 498 else: |
496 choice -= 1 | 499 choice = literal_eval(choice) |
497 else: | 500 if isinstance(choice, int) and 1 <= choice <= len(items): |
498 print(f'Illegal choice, enter a number between 1 and {len(items)}') | 501 choice -= 1 |
499 choice = input_menu(items, default) | 502 else: |
503 raise ValueError | |
504 except (ValueError, TypeError, SyntaxError, MemoryError, RecursionError): | |
505 choice = None | |
506 except: | |
507 print('Unexpected error') | |
508 raise | |
509 if choice is None: | |
510 print(f'Illegal choice, enter a number between 1 and {len(items)}') | |
511 choice = input_menu(items, default) | |
500 return choice | 512 return choice |
501 | 513 |
502 def create_mask(x, bounds=None, reverse_mask=False, current_mask=None): | 514 def create_mask(x, bounds=None, reverse_mask=False, current_mask=None): |
503 # bounds is a pair of number in the same units a x | 515 # bounds is a pair of number in the same units a x |
504 if not isinstance(x, (tuple, list, np.ndarray)) or not len(x): | 516 if not isinstance(x, (tuple, list, np.ndarray)) or not len(x): |
523 if not True in mask: | 535 if not True in mask: |
524 logging.warning('Entire data array is masked') | 536 logging.warning('Entire data array is masked') |
525 return mask | 537 return mask |
526 | 538 |
527 def draw_mask_1d(ydata, xdata=None, current_index_ranges=None, current_mask=None, | 539 def draw_mask_1d(ydata, xdata=None, current_index_ranges=None, current_mask=None, |
528 select_mask=True, num_index_ranges_max=None, title=None, legend=None): | 540 select_mask=True, num_index_ranges_max=None, title=None, legend=None, test_mode=False): |
529 def draw_selections(ax): | 541 def draw_selections(ax): |
530 ax.clear() | 542 ax.clear() |
531 ax.set_title(title) | 543 ax.set_title(title) |
532 ax.legend([legend]) | 544 ax.legend([legend]) |
533 ax.plot(xdata, ydata, 'k') | 545 ax.plot(xdata, ydata, 'k') |
677 for i in range(1, len(current_include)): | 689 for i in range(1, len(current_include)): |
678 current_exclude.append((current_include[i-1][1]+1, current_include[i][0]-1)) | 690 current_exclude.append((current_include[i-1][1]+1, current_include[i][0]-1)) |
679 if current_include[-1][1] < num_data-1: | 691 if current_include[-1][1] < num_data-1: |
680 current_exclude.append((current_include[-1][1]+1, num_data-1)) | 692 current_exclude.append((current_include[-1][1]+1, num_data-1)) |
681 | 693 |
682 # Set up matplotlib figure | 694 if not test_mode: |
683 plt.close('all') | 695 |
684 fig, ax = plt.subplots() | 696 # Set up matplotlib figure |
685 plt.subplots_adjust(bottom=0.2) | 697 plt.close('all') |
686 draw_selections(ax) | 698 fig, ax = plt.subplots() |
687 | 699 plt.subplots_adjust(bottom=0.2) |
688 # Set up event handling for click-and-drag range selection | 700 draw_selections(ax) |
689 cid_click = fig.canvas.mpl_connect('button_press_event', onclick) | 701 |
690 cid_release = fig.canvas.mpl_connect('button_release_event', onrelease) | 702 # Set up event handling for click-and-drag range selection |
691 | 703 cid_click = fig.canvas.mpl_connect('button_press_event', onclick) |
692 # Set up confirm / clear range selection buttons | 704 cid_release = fig.canvas.mpl_connect('button_release_event', onrelease) |
693 confirm_b = Button(plt.axes([0.75, 0.05, 0.15, 0.075]), 'Confirm') | 705 |
694 clear_b = Button(plt.axes([0.59, 0.05, 0.15, 0.075]), 'Clear') | 706 # Set up confirm / clear range selection buttons |
695 cid_confirm = confirm_b.on_clicked(confirm_selection) | 707 confirm_b = Button(plt.axes([0.75, 0.05, 0.15, 0.075]), 'Confirm') |
696 cid_clear = clear_b.on_clicked(clear_last_selection) | 708 clear_b = Button(plt.axes([0.59, 0.05, 0.15, 0.075]), 'Clear') |
697 | 709 cid_confirm = confirm_b.on_clicked(confirm_selection) |
698 # Show figure | 710 cid_clear = clear_b.on_clicked(clear_last_selection) |
699 plt.show(block=True) | 711 |
700 | 712 # Show figure |
701 # Disconnect callbacks when figure is closed | 713 plt.show(block=True) |
702 fig.canvas.mpl_disconnect(cid_click) | 714 |
703 fig.canvas.mpl_disconnect(cid_release) | 715 # Disconnect callbacks when figure is closed |
704 confirm_b.disconnect(cid_confirm) | 716 fig.canvas.mpl_disconnect(cid_click) |
705 clear_b.disconnect(cid_clear) | 717 fig.canvas.mpl_disconnect(cid_release) |
718 confirm_b.disconnect(cid_confirm) | |
719 clear_b.disconnect(cid_clear) | |
706 | 720 |
707 # Swap selection depending on select_mask | 721 # Swap selection depending on select_mask |
708 if not select_mask: | 722 if not select_mask: |
709 selected_index_ranges, unselected_index_ranges = unselected_index_ranges, \ | 723 selected_index_ranges, unselected_index_ranges = unselected_index_ranges, \ |
710 selected_index_ranges | 724 selected_index_ranges |