about summary refs log tree commit diff
path: root/wqflask/utility
diff options
context:
space:
mode:
authorZachary Sloan2013-06-20 22:20:23 +0000
committerZachary Sloan2013-06-20 22:20:23 +0000
commit4ffee373494170e708678039dca132f1bd729ab1 (patch)
treea9d6054380f5a9d612a4d1d88889f68ea4923a75 /wqflask/utility
parent939058c4a3b668037974f2876b072c4be008da26 (diff)
parent52ac4b6e1c014801080cbbcad53df868058d2657 (diff)
downloadgenenetwork2-4ffee373494170e708678039dca132f1bd729ab1.tar.gz
Merge branch 'flask'
Diffstat (limited to 'wqflask/utility')
-rw-r--r--wqflask/utility/benchmark.py45
-rw-r--r--wqflask/utility/corr_result_helpers.py30
-rw-r--r--wqflask/utility/formatting.py13
-rw-r--r--wqflask/utility/helper_functions.py18
-rw-r--r--wqflask/utility/temp_data.py25
5 files changed, 131 insertions, 0 deletions
diff --git a/wqflask/utility/benchmark.py b/wqflask/utility/benchmark.py
new file mode 100644
index 00000000..182187ae
--- /dev/null
+++ b/wqflask/utility/benchmark.py
@@ -0,0 +1,45 @@
+from __future__ import print_function, division, absolute_import
+
+import collections
+import inspect
+import time
+
+
+class Bench(object):
+    entries = collections.OrderedDict()
+    
+    def __init__(self, name=None):
+        self.name = name
+
+    def __enter__(self):
+        if self.name:
+            print("Starting benchmark: %s" % (self.name))
+        else:
+            print("Starting benchmark at: %s [%i]" % (inspect.stack()[1][3], inspect.stack()[1][2]))
+        self.start_time = time.time()
+
+    def __exit__(self, type, value, traceback):
+        if self.name:
+            name = self.name
+        else:
+            name = "That"
+
+        time_taken = time.time() - self.start_time
+        print("  %s took: %f seconds" % (name, (time_taken)))
+        
+        if self.name:
+            Bench.entries[self.name] = Bench.entries.get(self.name, 0) + time_taken
+            
+
+    @classmethod
+    def report(cls):
+        total_time = sum((time_taken for time_taken in cls.entries.itervalues()))
+        print("\nTiming report\n")
+        for name, time_taken in cls.entries.iteritems():
+            percent = int(round((time_taken/total_time) * 100))
+            print("[{}%] {}: {}".format(percent, name, time_taken))
+        print()
+        
+    def reset(cls):
+        """Reset the entries"""
+        cls.entries = collections.OrderedDict()
\ No newline at end of file
diff --git a/wqflask/utility/corr_result_helpers.py b/wqflask/utility/corr_result_helpers.py
new file mode 100644
index 00000000..edf32449
--- /dev/null
+++ b/wqflask/utility/corr_result_helpers.py
@@ -0,0 +1,30 @@
+def normalize_values(a_values, b_values):
+    """
+    Trim two lists of values to contain only the values they both share
+    
+    Given two lists of sample values, trim each list so that it contains
+    only the samples that contain a value in both lists. Also returns
+    the number of such samples.
+    
+    >>> normalize_values([2.3, None, None, 3.2, 4.1, 5], [3.4, 7.2, 1.3, None, 6.2, 4.1])
+    ([2.3, 4.1, 5], [3.4, 6.2, 4.1], 3)
+    
+    """
+    
+    min_length = min(len(a_values), len(b_values))
+    a_new = []
+    b_new = []
+    for counter in range(min_length):
+        if a_values[counter] and b_values[counter]:
+            a_new.append(a_values[counter])
+            b_new.append(b_values[counter])
+        
+    num_overlap = len(a_new)
+    assert num_overlap == len(b_new), "Lengths should be the same"
+    
+    return a_new, b_new, num_overlap
+
+
+if __name__ == '__main__':
+    import doctest
+    doctest.testmod()
\ No newline at end of file
diff --git a/wqflask/utility/formatting.py b/wqflask/utility/formatting.py
index 52173417..e53dda22 100644
--- a/wqflask/utility/formatting.py
+++ b/wqflask/utility/formatting.py
@@ -10,6 +10,14 @@ def numify(number, singular=None, plural=None):
     >>> numify(9, 'book', 'books')
     'nine books'
 
+    You can add capitalize to change the capitalization
+    >>> numify(9, 'book', 'books').capitalize()
+    'Nine books'
+
+    Or capitalize every word using title
+    >>> numify(9, 'book', 'books').title()
+    'Nine Books'
+
     >>> numify(15)
     '15'
 
@@ -107,3 +115,8 @@ def commify(n):
     if cents:
         out += '.' + cents
     return out
+
+
+if __name__ == '__main__':
+    import doctest
+    doctest.testmod()
diff --git a/wqflask/utility/helper_functions.py b/wqflask/utility/helper_functions.py
new file mode 100644
index 00000000..d76a32ce
--- /dev/null
+++ b/wqflask/utility/helper_functions.py
@@ -0,0 +1,18 @@
+from __future__ import absolute_import, print_function, division
+
+from base.trait import GeneralTrait
+from base import data_set
+from base.species import TheSpecies
+
+
+def get_species_dataset_trait(self, start_vars):
+    #assert type(read_genotype) == type(bool()), "Expecting boolean value for read_genotype"
+    self.dataset = data_set.create_dataset(start_vars['dataset'])
+    self.species = TheSpecies(dataset=self.dataset)
+    self.this_trait = GeneralTrait(dataset=self.dataset,
+                                   name=start_vars['trait_id'],
+                                   cellid=None)
+
+    #if read_genotype:
+    self.dataset.group.read_genotype_file()
+    #self.genotype = self.dataset.group.genotype
diff --git a/wqflask/utility/temp_data.py b/wqflask/utility/temp_data.py
new file mode 100644
index 00000000..004d45c6
--- /dev/null
+++ b/wqflask/utility/temp_data.py
@@ -0,0 +1,25 @@
+from __future__ import print_function, division, absolute_import
+from redis import Redis
+
+import simplejson as json
+
+class TempData(object):
+    
+    def __init__(self, temp_uuid):
+        self.temp_uuid = temp_uuid
+        self.redis = Redis()
+        self.key = "tempdata:{}".format(self.temp_uuid)
+        
+    def store(self, field, value):
+        self.redis.hset(self.key, field, value)
+        self.redis.expire(self.key, 60*15)  # Expire in 15 minutes
+        
+    def get_all(self):
+        return self.redis.hgetall(self.key)
+
+
+if __name__ == "__main__":
+    redis = Redis()
+    for key in redis.keys():
+        for field in redis.hkeys(key):
+            print("{}.{}={}".format(key, field, redis.hget(key, field)))