1- import numpy as np
21import csv
32import xml .dom .minidom as dom
43import argparse
54import math
65import parseComposite
76
8- class Composite :
7+ # Objected to store bare-bones composite data, can be used with plot_composite function
8+ class SimpleComposite :
99 def __init__ (self , xmin = None , xmax = None , sense = [], anti = [], id = "" ):
1010 self .xmin = xmin
1111 self .xmax = xmax
1212 self .sense = sense
1313 self .anti = anti
1414 self .id = id
15-
16- def __str__ (self ):
17- return "Sense: " + str (self .sense ) + "\n Anti: " + str (self .anti ) + "\n XMin: " + str (self .xmin ) + "\n XMax: " + str (self .xmax ) + "\n ID:" + str (self .id )
1815
19- class CompositeGroup :
16+ # Object to store composite data with options for plotting, similar to a settings row
17+ class Composite :
2018 def __init__ (self , scale = 1 , color = None , secondary_color = None , i = None , opacity = None , smoothing = None , bp_shift = None , hide_sense = False , hide_anti = False , baseline = 0 , name = None ):
19+ # Sets default values
20+ self .scale = scale if scale is not None else 1
21+ self .color = color if color is not None else "#0000FF"
22+ self .secondary_color = secondary_color if secondary_color is not None else color
23+ self .baseline = baseline if baseline is not None else 0
2124 self .xmin = 0
2225 self .xmax = 0
2326 self .sense = []
2427 self .anti = []
25- self .scale = scale
26- self .color = color
27- self .secondary_color = secondary_color if secondary_color is not None else color
2828 self .opacity = opacity
2929 self .smoothing = smoothing
3030 self .bp_shift = bp_shift
3131 self .hide_anti = hide_anti
32- self .baseline = baseline
3332 self .hide_sense = hide_sense
34- self .individual_composites = {}
35- self .files_loaded = len (self .individual_composites )
33+ self .individual_files = {}
34+ self .files_loaded = len (self .individual_files )
3635 self .name = name
37-
38- def loadComposite (self ,composite : Composite ):
36+ # Adds a simple composite to the 'row'
37+ def load_simple_composite (self ,composite : SimpleComposite ):
3938 # If no files, initialize sense and anti arrays; otherwise, pad sense and anti arrays to new xdomain
4039 self .xmin = min (composite .xmin , self .xmin )
4140 self .xmax = max (composite .xmax , self .xmax )
42- if len (self .individual_composites ) == 0 :
41+ if len (self .individual_files ) == 0 :
4342 self .sense = [0 ] * (composite .xmax - composite .xmin + 1 )
4443 self .anti = [0 ] * (composite .xmax - composite .xmin + 1 )
4544 else :
46- xmin = min ([int (self .individual_composites [c ].xmin ) for c in self .individual_composites ])
47- xmax = max ([int (self .individual_composites [c ].xmax ) for c in self .individual_composites ])
45+ xmin = min ([int (self .individual_files [c ].xmin ) for c in self .individual_files ])
46+ xmax = max ([int (self .individual_files [c ].xmax ) for c in self .individual_files ])
4847 prefix = [0 ] * (xmin - self .xmin )
4948 suffix = [0 ] * (self .xmax - xmax )
5049 self .sense = prefix + self .sense + suffix
5150 self .anti = prefix + self .anti + suffix
52-
5351 # Update sense and anti arrays
5452 j = composite .xmin - self .xmin
5553 while j <= composite .xmax - composite .xmin :
5654 idx = composite .xmin - self .xmin + j
5755 self .sense [idx ] += composite .sense [j ]
5856 self .anti [idx ] += composite .anti [j ]
5957 j += 1
60-
61- self .individual_composites [composite .id ] = composite
62-
63- def loadCompositeDict (self ,compositeDict : dict ):
58+ self .individual_files [composite .id ] = composite
59+ # Loads dictionary from parse_multiple_composites
60+ def load_composite_dict (self ,compositeDict : dict ):
6461 for composite in compositeDict :
6562 # If no files, initialize sense and anti arrays; otherwise, pad sense and anti arrays to new xdomain
6663 self .xmin = min (composite .xmin , self .xmin )
6764 self .xmax = max (composite .xmax , self .xmax )
68- if len (self .individual_composites ) == 0 :
65+ if len (self .individual_files ) == 0 :
6966 self .sense = [0 ] * (composite .xmax - composite .xmin + 1 )
7067 self .anti = [0 ] * (composite .xmax - composite .xmin + 1 )
7168 else :
72- xmin = min ([c .xmin for c in self .individual_composites ])
73- xmax = max ([c .xmax for c in self .individual_composites ])
69+ xmin = min ([c .xmin for c in self .individual_files ])
70+ xmax = max ([c .xmax for c in self .individual_files ])
7471 prefix = [0 ] * (xmin - self .xmin )
7572 suffix = [0 ] * (self .xmax - xmax )
7673 self .sense = prefix + self .sense + suffix
7774 self .anti = prefix + self .anti + suffix
78-
7975 # Update sense and anti arrays
8076 j = composite .xmin - self .xmin
8177 while j <= composite .xmax - composite .xmin :
8278 idx = composite .xmin - self .xmin + j
8379 self .sense [idx ] += composite .sense [j ]
8480 self .anti [idx ] += composite .anti [j ]
8581 j += 1
86-
87- self .individual_composites [composite .id ] = composite
88-
82+ self .individual_files [composite .id ] = composite
8983 def __str__ (self ):
90- return str (self .individual_composites )
91-
92- def main ():
93- c = parseComposite .parseComposite ("sample_composites/sample_1.out" )
94- compositeGroup = CompositeGroup ()
95- compositeGroup .loadComposite (c )
96- c2 = parseComposite .parseComposite ("sample_composites/sample2.out.txt" )
97- compositeGroup .loadComposite (c2 )
98- print (compositeGroup )
99-
100-
101- if __name__ == "__main__" :
102- main ()
84+ return str (self .individual_files )
0 commit comments