File: SequenceSegmentInformationPrinter.py

package info (click to toggle)
libgoby-java 3.3.1%2Bdfsg2-11
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 58,108 kB
  • sloc: java: 78,105; cpp: 5,011; xml: 3,170; python: 2,108; sh: 1,575; ansic: 277; makefile: 114
file content (66 lines) | stat: -rw-r--r-- 3,710 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import argparse

from goby.SequenceSegmentInformation import SequenceSegmentInformationGenerator


def print_segment_info(ssi, bases_to_print, print_all_bases, samples_to_print, print_all_samples):
    print("Start position: reference index {}, reference id {}, location {}".format(ssi.start_position.reference_index,
                                                                                    ssi.start_position.reference_id,
                                                                                    ssi.start_position.location))
    print("End position: reference index {}, reference id {}, location {}".format(ssi.end_position.reference_index,
                                                                                  ssi.end_position.reference_id,
                                                                                  ssi.end_position.location))
    print("Length: {}".format(ssi.length))
    print("\n")
    samples_printed = 0
    for sample_idx, sample in enumerate(ssi.sample, 1):
        if samples_printed < samples_to_print or print_all_samples:
            print("Sample number: {}".format(sample_idx))
            bases_printed = 0
            for base_idx, base in enumerate(sample.base, 1):
                if bases_printed < bases_to_print or print_all_bases:
                    print("Base number: {}".format(base_idx))
                    print("Features: {}".format(", ".join(map(str, base.features))))
                    print("Labels: {}".format(", ".join(map(str, base.labels))))
                    print("Color: {}".format(", ".join(map(str, base.color))))
                    print("TrueLabel: {}".format(", ".join(map(str, base.trueLabel))))
                    print("HasCandidateIndel: {}".format(base.hasCandidateIndel))
                    print("HasTrueIndel: {}".format(base.hasTrueIndel))
                    print("IsVariant: {}".format(base.isVariant))
                    print("\n")
                    bases_printed += 1
                else:
                    break
            samples_printed += 1
        else:
            break
    print("\n\n")


def main(args):
    ssi_generator = SequenceSegmentInformationGenerator(args.input)
    segments_printed = 0
    for segment_idx, segment_info in enumerate(ssi_generator, 1):
        if segments_printed < args.segments_to_print or args.print_all_segments:
            print("Segment number: {}".format(segment_idx))
            print_segment_info(segment_info, args.bases_to_print, args.print_all_bases, args.samples_to_print,
                               args.print_all_samples)
            segments_printed += 1
        else:
            break


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-i", "--input", type=str, required=True, help="SSI input file.")
    parser.add_argument("-b", "--bases-to-print", type=int, default=1, help="Number of bases to print for each sample.")
    parser.add_argument("--print-all-bases", dest="print_all_bases", help="If set, prints all bases.",
                        action="store_true")
    parser.add_argument("-s", "--segments-to-print", type=int, default=1, help="Number of segments to print.")
    parser.add_argument("--print-all-segments", dest="print_all_segments", help="If set, prints all segments.",
                        action="store_true")
    parser.add_argument("-a", "--samples-to-print", type=int, default=1, help="Number of samples to print for each SSI.")
    parser.add_argument("--print-all-samples", dest="print_all_samples", help="If set, print all samples.",
                        action="store_true")
    parser_args = parser.parse_args()
    main(parser_args)