Example #1
0
    def plot_gossip_rate(self):
        sequences = analysis.gossip_events(self.events)
        for i in xrange(len(sequences)):
            # don't want to bucket by address
            sequences[i] = [t for t,src,dst in sequences[i]]

        legend = self.leaf_projections
        
        scalar = 1./len(self.unique_addresses)
        xyvals = [analysis.frequency_count(self, 
                                           sequence, 
                                           subdivisions=5, 
                                           bucket_scalar = scalar)  
                  for sequence in sequences]

        ylabel = "Fraction of nodes initiating gossip"
        xlabel = "Time (rounds)"
        ipython.analysis_plot_2d_multiple(xyvals, xlabel, ylabel, legend)
Example #2
0
    def plot_state_change_graph_leaves(self):
        import matplotlib.pyplot as plt
        import numpy as np
        import analysis

        saved_projection = self.get_projection()

        n = len(self.unique_addresses)
        xyvals = []
        for leaf_projection in self.leaf_projections:
            self.set_projection(leaf_projection)
            xyvals += [analysis.compute_changes_per_round(self, subdivisions=1, bucket_scalar = 1./n)]

        # restore previous projection
        self.set_projection(saved_projection)
        xlabel =  "MiCA Rounds (%s ms)" % self.runtime_info.round_ms
        ylabel = "Fraction of nodes changed state"
        legend_labels = self.leaf_projections
        ipython.analysis_plot_2d_multiple(xyvals, xlabel, ylabel, legend_labels)
Example #3
0
    def plot_notable_events(self, ne_suffix):
        import matplotlib.pyplot as plt
        import numpy as np

        ne_categories = {}  # key -> sequence

        for key, timestamp, address in self.notable_events(ne_suffix):
            if key not in ne_categories:
                ne_categories[key] = []
            ne_categories[key].append(timestamp)
        
        notable_sequences = sorted(ne_categories.items())

        xlabel =  "Round"
        ylabel = "Rate (%s events per round)" % ne_suffix
        legend_labels = []
        xyvals = []

        for key, sequence in notable_sequences:
            legend_labels += [key]
            xy = analysis.frequency_count(self, sequence, subdivisions=5)
            xyvals += [xy]

        ipython.analysis_plot_2d_multiple(xyvals, xlabel, ylabel, legend_labels)
Example #4
0
 def plot_2d(self, x, y, xlabel="x", ylabel = "y"):
     ipython.analysis_plot_2d_multiple([(x,y)], xlabel, ylabel, )