non storage funtions removed to data_processing.py, doc strings added to storage_api
diff --git a/data_processing.py b/data_processing.py
new file mode 100644
index 0000000..2905bbe
--- /dev/null
+++ b/data_processing.py
@@ -0,0 +1,65 @@
+# class displays measurement. Moved from storage_api_v_1
+# to avoid circular imports.
+import math
+
+
+class Measurement(object):
+    def __init__(self):
+        self.build = ""
+        self.build_type = 0  # GA/Master/Other
+        self.md5 = ""
+        self.name = ""
+        self.date = None
+        self.results = {
+            "": (float, float)
+        }
+
+    def __str__(self):
+        return self.build + " " + self.build_type + " " + \
+            self.md5 + " " + str(self.results)
+
+
+def mean(l):
+    n = len(l)
+
+    return sum(l) / n
+
+
+def stdev(l):
+    m = mean(l)
+    return math.sqrt(sum(map(lambda x: (x - m) ** 2, l)))
+
+
+def process_build_data(build):
+    """ Function computes mean of all the data from particular build"""
+    for item in build.items():
+        if type(item[1]) is list:
+            m = mean(item[1])
+            s = stdev(item[1])
+            build[item[0]] = [m, s]
+
+
+def create_measurement(data):
+    """ Function creates measurement from data was extracted from database."""
+
+    build_data = data[0]
+
+    m = Measurement()
+    m.build = build_data.build_id
+    m.build_type = build_data.type
+    m.name = build_data.name
+    m.results = {}
+
+    for i in range(1, len(data), 2):
+        result = data[i]
+        param_combination = data[i + 1]
+
+        if not str(param_combination) in m.results:
+            m.results[str(param_combination)] = [result.bandwith]
+        else:
+            m.results[str(param_combination)] += [result.bandwith]
+
+    for k in m.results.keys():
+        m.results[k] = [mean(m.results[k]), stdev(m.results[k])]
+
+    return m
\ No newline at end of file