[tor-commits] [depictor/master] Add a logical maximum for the graphs to avoid spikes in subtraction graphs, repoint the graphs at the local vote-stats.csv data

tom at torproject.org tom at torproject.org
Thu Sep 1 15:13:03 UTC 2016


commit 8feb5ade803a1b1c980b11e9372f02310a5a766a
Author: Tom Ritter <tom at ritter.vg>
Date:   Wed Jul 6 13:35:00 2016 -0400

    Add a logical maximum for the graphs to avoid spikes in subtraction graphs, repoint the graphs at the local vote-stats.csv data
---
 data/historical.db | Bin 2191360 -> 2191360 bytes
 graphs.py          |  63 +++++++++++++++++++++++++++++------------------------
 2 files changed, 35 insertions(+), 28 deletions(-)

diff --git a/data/historical.db b/data/historical.db
index 9146c8b..fd4b938 100644
Binary files a/data/historical.db and b/data/historical.db differ
diff --git a/graphs.py b/graphs.py
index 4ceb6d3..e36ca45 100755
--- a/graphs.py
+++ b/graphs.py
@@ -232,13 +232,17 @@ class GraphWriter(WebsiteWriter):
 
 	def _write_graph_javascript(self):
 		s = """<script>
-		var AUTH_LOGICAL_MIN = 125
+		var AUTH_LOGICAL_MIN = 125,
+		    AUTH_LOGICAL_MAX = 25000;
 		var WIDTH = 800,
 		    HEIGHT = 500,
-			MARGIN = {top: 40, right: 40, bottom: 40, left: 40};
+		    MARGIN = {top: 40, right: 40, bottom: 40, left: 40};
 
 		var bwauths = ["faravahar","gabelmoo","moria1","maatuska","longclaw"];
 		var dirauths = """ + str(get_dirauths_in_tables()) + """;
+		dirauths.splice(dirauths.indexOf('urras'), 1);
+		dirauths.splice(dirauths.indexOf('turtles'), 1);
+
 		var _getBandwidthDataValue = function(d, dirauth) { return d[dirauth + "_bwauth"]; }
 		var _getRunningDataValue = function(d, dirauth) { return d[dirauth + "_running"]; }
 		var _getTotalDataValue =  function(d, dirauth) { return d[dirauth + "_known"]; }
@@ -247,53 +251,53 @@ class GraphWriter(WebsiteWriter):
 
 		var GRAPHS_TO_GENERATE = [
 			{ title: "Voted About Relays (Running), Past 7 Days", data_slice: 168, div: "voted_running_1", 
-				data_func: _getRunningDataValue, authorities: dirauths, ignore_limit:AUTH_LOGICAL_MIN },
+				data_func: _getRunningDataValue, authorities: dirauths, min_ignore_limit:AUTH_LOGICAL_MIN, max_ignore_limit:AUTH_LOGICAL_MAX },
 			{ title: "Voted About Relays (Running), Past 14 Days", data_slice: 336, div: "voted_running_2", 
-				data_func: _getRunningDataValue, authorities: dirauths, ignore_limit:AUTH_LOGICAL_MIN },
+				data_func: _getRunningDataValue, authorities: dirauths, min_ignore_limit:AUTH_LOGICAL_MIN, max_ignore_limit:AUTH_LOGICAL_MAX },
 			{ title: "Voted About Relays (Running), Past 30 Days", data_slice: 720, div: "voted_running_3", 
-				data_func: _getRunningDataValue, authorities: dirauths, ignore_limit:AUTH_LOGICAL_MIN },
+				data_func: _getRunningDataValue, authorities: dirauths, min_ignore_limit:AUTH_LOGICAL_MIN, max_ignore_limit:AUTH_LOGICAL_MAX },
 			{ title: "Voted About Relays (Running), Past 90 Days", data_slice: 2160, div: "voted_running_4", 
-				data_func: _getRunningDataValue, authorities: dirauths, ignore_limit:AUTH_LOGICAL_MIN },
+				data_func: _getRunningDataValue, authorities: dirauths, min_ignore_limit:AUTH_LOGICAL_MIN, max_ignore_limit:AUTH_LOGICAL_MAX },
 
 			{ title: "Voted About Relays (Total), Past 7 Days", data_slice: 168, div: "voted_total_1", 
-				data_func: _getTotalDataValue, authorities: dirauths, ignore_limit:AUTH_LOGICAL_MIN },
+				data_func: _getTotalDataValue, authorities: dirauths, min_ignore_limit:AUTH_LOGICAL_MIN, max_ignore_limit:AUTH_LOGICAL_MAX },
 			{ title: "Voted About Relays (Total), Past 14 Days", data_slice: 336, div: "voted_total_2", 
-				data_func: _getTotalDataValue, authorities: dirauths, ignore_limit:AUTH_LOGICAL_MIN },
+				data_func: _getTotalDataValue, authorities: dirauths, min_ignore_limit:AUTH_LOGICAL_MIN, max_ignore_limit:AUTH_LOGICAL_MAX },
 			{ title: "Voted About Relays (Total), Past 30 Days", data_slice: 720, div: "voted_total_3", 
-				data_func: _getTotalDataValue, authorities: dirauths, ignore_limit:AUTH_LOGICAL_MIN },
+				data_func: _getTotalDataValue, authorities: dirauths, min_ignore_limit:AUTH_LOGICAL_MIN, max_ignore_limit:AUTH_LOGICAL_MAX },
 			{ title: "Voted About Relays (Total), Past 90 Days", data_slice: 2160, div: "voted_total_4", 
-				data_func: _getTotalDataValue, authorities: dirauths, ignore_limit:AUTH_LOGICAL_MIN },
+				data_func: _getTotalDataValue, authorities: dirauths, min_ignore_limit:AUTH_LOGICAL_MIN, max_ignore_limit:AUTH_LOGICAL_MAX },
 
 			{ title: "Voted About Relays (Not Running), Past 7 Days", data_slice: 168, div: "voted_notrunning_1", 
-				data_func: _getNonRunningDataValue, authorities: dirauths, ignore_limit:0 },
+				data_func: _getNonRunningDataValue, authorities: dirauths, min_ignore_limit:0, max_ignore_limit:4000 },
 			{ title: "Voted About Relays (Not Running), Past 14 Days", data_slice: 336, div: "voted_notrunning_2", 
-				data_func: _getNonRunningDataValue, authorities: dirauths, ignore_limit:0 },
+				data_func: _getNonRunningDataValue, authorities: dirauths, min_ignore_limit:0, max_ignore_limit:4000 },
 			{ title: "Voted About Relays (Not Running), Past 30 Days", data_slice: 720, div: "voted_notrunning_3", 
-				data_func: _getNonRunningDataValue, authorities: dirauths, ignore_limit:0 },
+				data_func: _getNonRunningDataValue, authorities: dirauths, min_ignore_limit:0, max_ignore_limit:4000 },
 			{ title: "Voted About Relays (Not Running), Past 90 Days", data_slice: 2160, div: "voted_notrunning_4", 
-				data_func: _getNonRunningDataValue, authorities: dirauths, ignore_limit:0 },
+				data_func: _getNonRunningDataValue, authorities: dirauths, min_ignore_limit:0, max_ignore_limit:4000 },
 
 			{ title: "BWAuth Measured Relays, Past 7 Days", data_slice: 168, div: "bwauth_measured_1", 
-				data_func: _getBandwidthDataValue, authorities: bwauths, ignore_limit:AUTH_LOGICAL_MIN },
+				data_func: _getBandwidthDataValue, authorities: bwauths, min_ignore_limit:AUTH_LOGICAL_MIN, max_ignore_limit:AUTH_LOGICAL_MAX },
 			{ title: "BWAuth Measured Relays, Past 14 Days", data_slice: 336, div: "bwauth_measured_2", 
-				data_func: _getBandwidthDataValue, authorities: bwauths, ignore_limit:AUTH_LOGICAL_MIN },
+				data_func: _getBandwidthDataValue, authorities: bwauths, min_ignore_limit:AUTH_LOGICAL_MIN, max_ignore_limit:AUTH_LOGICAL_MAX },
 			{ title: "BWAuth Measured Relays, Past 30 Days", data_slice: 720, div: "bwauth_measured_3", 
-				data_func: _getBandwidthDataValue, authorities: bwauths, ignore_limit:AUTH_LOGICAL_MIN },
+				data_func: _getBandwidthDataValue, authorities: bwauths, min_ignore_limit:AUTH_LOGICAL_MIN, max_ignore_limit:AUTH_LOGICAL_MAX },
 			{ title: "BWAuth Measured Relays, Past 90 Days", data_slice: 2160, div: "bwauth_measured_4", 
-				data_func: _getBandwidthDataValue, authorities: bwauths, ignore_limit:AUTH_LOGICAL_MIN },
+				data_func: _getBandwidthDataValue, authorities: bwauths, min_ignore_limit:AUTH_LOGICAL_MIN, max_ignore_limit:AUTH_LOGICAL_MAX },
 /* These graphs are very misleading and not helpful
 			{ title: "BWAuth Running Unmeasured Relays, Past 30 Days", data_slice: 720, div: "bwauth_running_unmeasured_1", 
-				data_func: _getRunningUnmeasuredDataValue, authorities: bwauths, ignore_limit:-1000 },
+				data_func: _getRunningUnmeasuredDataValue, authorities: bwauths, min_ignore_limit:-1000, max_ignore_limit:AUTH_LOGICAL_MAX },
 			{ title: "BWAuth Running Unmeasured Relays, Past 90 Days", data_slice: 2160, div: "bwauth_running_unmeasured_2", 
-				data_func: _getRunningUnmeasuredDataValue, authorities: bwauths, ignore_limit:-1000 },
+				data_func: _getRunningUnmeasuredDataValue, authorities: bwauths, min_ignore_limit:-1000, max_ignore_limit:AUTH_LOGICAL_MAX },
 			{ title: "BWAuth Running Unmeasured Relays, Past Year", data_slice: 8760, div: "bwauth_running_unmeasured_3", 
-				data_func: _getRunningUnmeasuredDataValue, authorities: bwauths, ignore_limit:-1000 },
+				data_func: _getRunningUnmeasuredDataValue, authorities: bwauths, min_ignore_limit:-1000, max_ignore_limit:AUTH_LOGICAL_MAX },
 			{ title: "BWAuth Running Unmeasured Relays, Past 2 Years", data_slice: 17520, div: "bwauth_running_unmeasured_4", 
-				data_func: _getRunningUnmeasuredDataValue, authorities: bwauths, ignore_limit:-1000 },
+				data_func: _getRunningUnmeasuredDataValue, authorities: bwauths, min_ignore_limit:-1000, max_ignore_limit:AUTH_LOGICAL_MAX },
 */
 		];
 
-		fetch("https://ritter.vg/misc/stuff/vote-stats.csv").then(function(response) {
+		fetch("vote-stats.csv").then(function(response) {
 			return response.text();
 		}).then(function(text) {
 			return d3.csvParse(text, function(d) {
@@ -332,11 +336,11 @@ class GraphWriter(WebsiteWriter):
 					var x = graph.data_func(data_subset[d], graph.authorities[a]);
 					if(isNaN(x))
 						console.log("Error, NAN:", data_subset[d], graph.authorities[a], x);
-					if(x < min && x > graph.ignore_limit)
+					if(x < min && x > graph.min_ignore_limit)
 						min = x;
-					if(x > max)
+					if(x > max && x < graph.max_ignore_limit)
 						max = x;	
-					if(x > graph.ignore_limit) {
+					if(x > graph.min_ignore_limit && x < graph.max_ignore_limit) {
 						total += x;
 						count++;
 					}
@@ -349,7 +353,7 @@ class GraphWriter(WebsiteWriter):
 				for(a in graph.authorities)
 				{
 					var x = graph.data_func(data_subset[d], graph.authorities[a]);
-					if(x > graph.ignore_limit) {
+					if(x > graph.min_ignore_limit && x < graph.max_ignore_limit) {
 						sumvariance += (x - avg) * (x - avg);
 					}
 				}
@@ -374,7 +378,10 @@ class GraphWriter(WebsiteWriter):
 				this_auth = graph.authorities[auth];
 				lines.push({auth: this_auth, line: (function(dirAuthClosure) {
 					return d3.line()
-					    .defined(function(d) { return d && graph.data_func(d, dirAuthClosure) && graph.data_func(d, dirAuthClosure) > graph.ignore_limit; })
+					    .defined(function(d) { 
+						return d && graph.data_func(d, dirAuthClosure) && 
+						graph.data_func(d, dirAuthClosure) > graph.min_ignore_limit &&
+						graph.data_func(d, dirAuthClosure) < graph.max_ignore_limit; })
 			    		.x(function(d) { return x(d.date); })
 				    	.y(function(d) { return y(graph.data_func(d, dirAuthClosure)); });
 				    })(this_auth)});





More information about the tor-commits mailing list