about summary refs log tree commit diff
path: root/wqflask/utility
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask/utility')
-rw-r--r--wqflask/utility/Plot.py48
-rw-r--r--wqflask/utility/elasticsearch_tools.py2
-rw-r--r--wqflask/utility/logger.py26
-rw-r--r--wqflask/utility/pillow_utils.py4
-rw-r--r--wqflask/utility/startup_config.py2
-rw-r--r--wqflask/utility/svg.py130
-rw-r--r--wqflask/utility/tools.py32
-rw-r--r--wqflask/utility/webqtlUtil.py16
8 files changed, 130 insertions, 130 deletions
diff --git a/wqflask/utility/Plot.py b/wqflask/utility/Plot.py
index c9053dde..4f6e694e 100644
--- a/wqflask/utility/Plot.py
+++ b/wqflask/utility/Plot.py
@@ -58,7 +58,7 @@ def cformat(d, rank=0):
     strD = "%2.6f" % d
 
     if rank == 0:
-        while strD[-1] in ('0','.'):
+        while strD[-1] in ('0', '.'):
             if strD[-1] == '0' and strD[-2] == '.' and len(strD) <= 4:
                 break
             elif strD[-1] == '.':
@@ -162,7 +162,7 @@ def plotBar(canvas, data, barColor=BLUE, axesColor=BLACK, labelColor=BLACK, XLab
        j = int((item-xLow)/step)
        Count[j] += 1
 
-    yLow, yTop, stepY=detScale(0,max(Count))
+    yLow, yTop, stepY=detScale(0, max(Count))
 
     #draw data
     xScale = plotWidth/(xTop-xLow)
@@ -174,7 +174,7 @@ def plotBar(canvas, data, barColor=BLUE, axesColor=BLACK, labelColor=BLACK, XLab
            xc = (dataXY[i]-xLow)*xScale+xLeftOffset
            yc =-(count-yLow)*yScale+yTopOffset+plotHeight
            im_drawer.rectangle(
-               xy=((xc+2,yc),(xc+barWidth-2,yTopOffset+plotHeight)),
+               xy=((xc+2, yc), (xc+barWidth-2, yTopOffset+plotHeight)),
                outline=barColor, fill=barColor)
 
     #draw drawing region
@@ -183,81 +183,81 @@ def plotBar(canvas, data, barColor=BLUE, axesColor=BLACK, labelColor=BLACK, XLab
     )
 
     #draw scale
-    scaleFont=ImageFont.truetype(font=COUR_FILE,size=11)
+    scaleFont=ImageFont.truetype(font=COUR_FILE, size=11)
     x=xLow
     for i in range(int(stepX)+1):
        xc=xLeftOffset+(x-xLow)*xScale
        im_drawer.line(
-           xy=((xc,yTopOffset+plotHeight),(xc,yTopOffset+plotHeight+5)),
+           xy=((xc, yTopOffset+plotHeight), (xc, yTopOffset+plotHeight+5)),
            fill=axesColor)
        strX = cformat(d=x, rank=0)
        im_drawer.text(
            text=strX,
-           xy=(xc-im_drawer.textsize(strX,font=scaleFont)[0]/2,
-               yTopOffset+plotHeight+14),font=scaleFont)
+           xy=(xc-im_drawer.textsize(strX, font=scaleFont)[0]/2,
+               yTopOffset+plotHeight+14), font=scaleFont)
        x+= (xTop - xLow)/stepX
 
     y=yLow
     for i in range(int(stepY)+1):
        yc=yTopOffset+plotHeight-(y-yLow)*yScale
-       im_drawer.line(xy=((xLeftOffset,yc),(xLeftOffset-5,yc)), fill=axesColor)
+       im_drawer.line(xy=((xLeftOffset, yc), (xLeftOffset-5, yc)), fill=axesColor)
        strY = "%d" %y
        im_drawer.text(
            text=strY,
-           xy=(xLeftOffset-im_drawer.textsize(strY,font=scaleFont)[0]-6,yc+5),
+           xy=(xLeftOffset-im_drawer.textsize(strY, font=scaleFont)[0]-6, yc+5),
            font=scaleFont)
        y+= (yTop - yLow)/stepY
 
     #draw label
-    labelFont=ImageFont.truetype(font=TAHOMA_FILE,size=17)
+    labelFont=ImageFont.truetype(font=TAHOMA_FILE, size=17)
     if XLabel:
        im_drawer.text(
            text=XLabel,
            xy=(xLeftOffset+(
-               plotWidth-im_drawer.textsize(XLabel,font=labelFont)[0])/2.0,
+               plotWidth-im_drawer.textsize(XLabel, font=labelFont)[0])/2.0,
                yTopOffset+plotHeight+yBottomOffset-10),
-           font=labelFont,fill=labelColor)
+           font=labelFont, fill=labelColor)
 
     if YLabel:
         draw_rotated_text(canvas, text=YLabel,
                           xy=(19,
                               yTopOffset+plotHeight-(
                                   plotHeight-im_drawer.textsize(
-                                      YLabel,font=labelFont)[0])/2.0),
+                                      YLabel, font=labelFont)[0])/2.0),
                           font=labelFont, fill=labelColor, angle=90)
 
-    labelFont=ImageFont.truetype(font=VERDANA_FILE,size=16)
+    labelFont=ImageFont.truetype(font=VERDANA_FILE, size=16)
     if title:
        im_drawer.text(
            text=title,
            xy=(xLeftOffset+(plotWidth-im_drawer.textsize(
-               title,font=labelFont)[0])/2.0,
+               title, font=labelFont)[0])/2.0,
                20),
-           font=labelFont,fill=labelColor)
+           font=labelFont, fill=labelColor)
 
 # This function determines the scale of the plot
-def detScaleOld(min,max):
+def detScaleOld(min, max):
     if min>=max:
         return None
     elif min == -1.0 and max == 1.0:
-        return [-1.2,1.2,12]
+        return [-1.2, 1.2, 12]
     else:
         a=max-min
         b=floor(log10(a))
-        c=pow(10.0,b)
+        c=pow(10.0, b)
         if a < c*5.0:
             c/=2.0
         #print a,b,c
         low=c*floor(min/c)
         high=c*ceil(max/c)
-        return [low,high,round((high-low)/c)]
+        return [low, high, round((high-low)/c)]
 
 def detScale(min=0,max=0):
 
     if min>=max:
         return None
     elif min == -1.0 and max == 1.0:
-        return [-1.2,1.2,12]
+        return [-1.2, 1.2, 12]
     else:
         a=max-min
         if max != 0:
@@ -269,7 +269,7 @@ def detScale(min=0,max=0):
                 min -= 0.1*a
         a=max-min
         b=floor(log10(a))
-        c=pow(10.0,b)
+        c=pow(10.0, b)
         low=c*floor(min/c)
         high=c*ceil(max/c)
         n = round((high-low)/c)
@@ -287,7 +287,7 @@ def detScale(min=0,max=0):
             high=c*ceil(max/c)
             n = round((high-low)/c)
 
-        return [low,high,n]
+        return [low, high, n]
 
 def bluefunc(x):
     return 1.0 / (1.0 + exp(-10*(x-0.6)))
@@ -296,7 +296,7 @@ def redfunc(x):
     return 1.0 / (1.0 + exp(10*(x-0.5)))
 
 def greenfunc(x):
-    return 1 - pow(redfunc(x+0.2),2) - bluefunc(x-0.3)
+    return 1 - pow(redfunc(x+0.2), 2) - bluefunc(x-0.3)
 
 def colorSpectrum(n=100):
     multiple = 10
diff --git a/wqflask/utility/elasticsearch_tools.py b/wqflask/utility/elasticsearch_tools.py
index 15cdd0bc..a5580811 100644
--- a/wqflask/utility/elasticsearch_tools.py
+++ b/wqflask/utility/elasticsearch_tools.py
@@ -59,7 +59,7 @@ def get_elasticsearch_connection(for_user=True):
     try:
         assert(ELASTICSEARCH_HOST)
         assert(ELASTICSEARCH_PORT)
-        logger.info("ES HOST",ELASTICSEARCH_HOST)
+        logger.info("ES HOST", ELASTICSEARCH_HOST)
 
         es = Elasticsearch([{
             "host": ELASTICSEARCH_HOST, "port": ELASTICSEARCH_PORT
diff --git a/wqflask/utility/logger.py b/wqflask/utility/logger.py
index 510b1041..e904eb94 100644
--- a/wqflask/utility/logger.py
+++ b/wqflask/utility/logger.py
@@ -42,10 +42,10 @@ class GNLogger:
 
     """
 
-    def __init__(self,name):
+    def __init__(self, name):
         self.logger = logging.getLogger(name)
 
-    def setLevel(self,value):
+    def setLevel(self, value):
         """Set the undelying log level"""
         self.logger.setLevel(value)
 
@@ -54,7 +54,7 @@ class GNLogger:
 level=num to filter on LOG_LEVEL_DEBUG.
 
         """
-        self.collect(self.logger.debug,*args)
+        self.collect(self.logger.debug, *args)
 
     def debug20(self,*args):
         """Call logging.debug for multiple args. Use level=num to filter on
@@ -63,15 +63,15 @@ LOG_LEVEL_DEBUG (NYI).
         """
         if level <= LOG_LEVEL_DEBUG:
             if self.logger.getEffectiveLevel() < 20:
-                self.collect(self.logger.debug,*args)
+                self.collect(self.logger.debug, *args)
 
     def info(self,*args):
         """Call logging.info for multiple args"""
-        self.collect(self.logger.info,*args)
+        self.collect(self.logger.info, *args)
 
     def warning(self,*args):
         """Call logging.warning for multiple args"""
-        self.collect(self.logger.warning,*args)
+        self.collect(self.logger.warning, *args)
         # self.logger.warning(self.collect(*args))
 
     def error(self,*args):
@@ -79,13 +79,13 @@ LOG_LEVEL_DEBUG (NYI).
         now = datetime.datetime.utcnow()
         time_str = now.strftime('%H:%M:%S UTC %Y%m%d')
         l = [time_str]+list(args)
-        self.collect(self.logger.error,*l)
+        self.collect(self.logger.error, *l)
 
     def infof(self,*args):
         """Call logging.info for multiple args lazily"""
         # only evaluate function when logging
         if self.logger.getEffectiveLevel() < 30:
-            self.collectf(self.logger.debug,*args)
+            self.collectf(self.logger.debug, *args)
 
     def debugf(self,level=0,*args):
         """Call logging.debug for multiple args lazily and handle
@@ -95,15 +95,15 @@ LOG_LEVEL_DEBUG (NYI).
         # only evaluate function when logging
         if level <= LOG_LEVEL_DEBUG:
             if self.logger.getEffectiveLevel() < 20:
-                self.collectf(self.logger.debug,*args)
+                self.collectf(self.logger.debug, *args)
 
     def sql(self, sqlcommand, fun = None):
         """Log SQL command, optionally invoking a timed fun"""
         if LOG_SQL:
             caller = stack()[1][3]
-            if caller in ['fetchone','fetch1','fetchall']:
+            if caller in ['fetchone', 'fetch1', 'fetchall']:
                 caller = stack()[2][3]
-            self.info(caller,sqlcommand)
+            self.info(caller, sqlcommand)
         if fun:
             result = fun(sqlcommand)
             if LOG_SQL:
@@ -119,7 +119,7 @@ LOG_LEVEL_DEBUG (NYI).
             if isinstance(a, str):
                 out = out + a
             else:
-                out = out + pf(a,width=160)
+                out = out + pf(a, width=160)
         fun(out)
 
     def collectf(self,fun,*args):
@@ -134,7 +134,7 @@ LOG_LEVEL_DEBUG (NYI).
                     if isinstance(a, str):
                         out = out + a
                     else:
-                        out = out + pf(a,width=160)
+                        out = out + pf(a, width=160)
         fun(out)
 
 # Get the module logger. You can override log levels at the
diff --git a/wqflask/utility/pillow_utils.py b/wqflask/utility/pillow_utils.py
index dfbf3e19..1e2ed075 100644
--- a/wqflask/utility/pillow_utils.py
+++ b/wqflask/utility/pillow_utils.py
@@ -10,9 +10,9 @@ WHITE = ImageColor.getrgb("white")
 def draw_rotated_text(canvas, text, font, xy, fill=BLACK, angle=-90):
     # type: (Image, str, ImageFont, tuple, ImageColor, int)
     """Utility function draw rotated text"""
-    tmp_img = Image.new("RGBA", font.getsize(text), color=(0,0,0,0))
+    tmp_img = Image.new("RGBA", font.getsize(text), color=(0, 0, 0, 0))
     draw_text = ImageDraw.Draw(tmp_img)
-    draw_text.text(text=text, xy=(0,0), font=font, fill=fill)
+    draw_text.text(text=text, xy=(0, 0), font=font, fill=fill)
     tmp_img2 = tmp_img.rotate(angle, expand=1)
     tmp_img2.save("/tmp/{}.png".format(text), format="png")
     canvas.paste(im=tmp_img2, box=tuple([int(i) for i in xy]))
diff --git a/wqflask/utility/startup_config.py b/wqflask/utility/startup_config.py
index 42ead709..f1aaebb6 100644
--- a/wqflask/utility/startup_config.py
+++ b/wqflask/utility/startup_config.py
@@ -36,4 +36,4 @@ def app_config():
     # import utility.elasticsearch_tools as es
     # es.test_elasticsearch_connection()
 
-    print(("GN2 is running. Visit %s[http://localhost:%s/%s](%s)" % (BLUE,str(port),ENDC,get_setting("WEBSERVER_URL"))))
+    print(("GN2 is running. Visit %s[http://localhost:%s/%s](%s)" % (BLUE, str(port), ENDC, get_setting("WEBSERVER_URL"))))
diff --git a/wqflask/utility/svg.py b/wqflask/utility/svg.py
index 874ada9d..19eda0ce 100644
--- a/wqflask/utility/svg.py
+++ b/wqflask/utility/svg.py
@@ -447,7 +447,7 @@ class rect(SVGelement):
         if width == None or height == None:
             raise ValueError('both height and width are required')
 
-        SVGelement.__init__(self,'rect',{'width':width,'height':height},**args)
+        SVGelement.__init__(self, 'rect', {'width':width,'height':height}, **args)
         if x!=None:
             self.attributes['x']=x
         if y!=None:
@@ -468,7 +468,7 @@ class ellipse(SVGelement):
         if rx==None or ry== None:
             raise ValueError('both rx and ry are required')
 
-        SVGelement.__init__(self,'ellipse',{'rx':rx,'ry':ry},**args)
+        SVGelement.__init__(self, 'ellipse', {'rx':rx,'ry':ry}, **args)
         if cx!=None:
             self.attributes['cx']=cx
         if cy!=None:
@@ -489,7 +489,7 @@ class circle(SVGelement):
     def __init__(self,cx=None,cy=None,r=None,fill=None,stroke=None,stroke_width=None,**args):
         if r==None:
             raise ValueError('r is required')
-        SVGelement.__init__(self,'circle',{'r':r},**args)
+        SVGelement.__init__(self, 'circle', {'r':r}, **args)
         if cx!=None:
             self.attributes['cx']=cx
         if cy!=None:
@@ -508,7 +508,7 @@ class point(circle):
     very small rectangle if you use many points because a circle is difficult to render.
     """
     def __init__(self,x,y,fill='black',**args):
-        circle.__init__(self,x,y,1,fill,**args)
+        circle.__init__(self, x, y, 1, fill, **args)
 
 class line(SVGelement):
     """l=line(x1,y1,x2,y2,stroke,stroke_width,**args)
@@ -516,7 +516,7 @@ class line(SVGelement):
     A line is defined by a begin x,y pair and an end x,y pair
     """
     def __init__(self,x1=None,y1=None,x2=None,y2=None,stroke=None,stroke_width=None,**args):
-        SVGelement.__init__(self,'line',**args)
+        SVGelement.__init__(self, 'line', **args)
         if x1!=None:
             self.attributes['x1']=x1
         if y1!=None:
@@ -536,7 +536,7 @@ class polyline(SVGelement):
     a polyline is defined by a list of xy pairs
     """
     def __init__(self,points,fill=None,stroke=None,stroke_width=None,**args):
-        SVGelement.__init__(self,'polyline',{'points':_xypointlist(points)},**args)
+        SVGelement.__init__(self, 'polyline', {'points':_xypointlist(points)}, **args)
         if fill!=None:
             self.attributes['fill']=fill
         if stroke_width!=None:
@@ -550,7 +550,7 @@ class polygon(SVGelement):
     a polygon is defined by a list of xy pairs
     """
     def __init__(self,points,fill=None,stroke=None,stroke_width=None,**args):
-        SVGelement.__init__(self,'polygon',{'points':_xypointlist(points)},**args)
+        SVGelement.__init__(self, 'polygon', {'points':_xypointlist(points)}, **args)
         if fill!=None:
             self.attributes['fill']=fill
         if stroke_width!=None:
@@ -564,7 +564,7 @@ class path(SVGelement):
     a path is defined by a path object and optional width, stroke and fillcolor
     """
     def __init__(self,pathdata,fill=None,stroke=None,stroke_width=None,id=None,**args):
-        SVGelement.__init__(self,'path',{'d':str(pathdata)},**args)
+        SVGelement.__init__(self, 'path', {'d':str(pathdata)}, **args)
         if stroke!=None:
             self.attributes['stroke']=stroke
         if fill!=None:
@@ -581,7 +581,7 @@ class text(SVGelement):
     a text element can bge used for displaying text on the screen
     """
     def __init__(self,x=None,y=None,text=None,font_size=None,font_family=None,text_anchor=None,**args):
-        SVGelement.__init__(self,'text',**args)
+        SVGelement.__init__(self, 'text', **args)
         if x!=None:
             self.attributes['x']=x
         if y!=None:
@@ -602,7 +602,7 @@ class textpath(SVGelement):
     a textpath places a text on a path which is referenced by a link.
     """
     def __init__(self,link,text=None,**args):
-        SVGelement.__init__(self,'textPath',{'xlink:href':link},**args)
+        SVGelement.__init__(self, 'textPath', {'xlink:href':link}, **args)
         if text!=None:
             self.text=text
 
@@ -614,7 +614,7 @@ class pattern(SVGelement):
     in x and y to cover the areas to be painted.
     """
     def __init__(self,x=None,y=None,width=None,height=None,patternUnits=None,**args):
-        SVGelement.__init__(self,'pattern',**args)
+        SVGelement.__init__(self, 'pattern', **args)
         if x!=None:
             self.attributes['x']=x
         if y!=None:
@@ -633,7 +633,7 @@ class title(SVGelement):
     add at least one to the root svg element
     """
     def __init__(self,text=None,**args):
-        SVGelement.__init__(self,'title',**args)
+        SVGelement.__init__(self, 'title', **args)
         if text!=None:
             self.text=text
 
@@ -644,7 +644,7 @@ class description(SVGelement):
     Add this element before adding other elements.
     """
     def __init__(self,text=None,**args):
-        SVGelement.__init__(self,'desc',**args)
+        SVGelement.__init__(self, 'desc', **args)
         if text!=None:
             self.text=text
 
@@ -655,7 +655,7 @@ class lineargradient(SVGelement):
     stop elements van be added to define the gradient colors.
     """
     def __init__(self,x1=None,y1=None,x2=None,y2=None,id=None,**args):
-        SVGelement.__init__(self,'linearGradient',**args)
+        SVGelement.__init__(self, 'linearGradient', **args)
         if x1!=None:
             self.attributes['x1']=x1
         if y1!=None:
@@ -674,7 +674,7 @@ class radialgradient(SVGelement):
     stop elements van be added to define the gradient colors.
     """
     def __init__(self,cx=None,cy=None,r=None,fx=None,fy=None,id=None,**args):
-        SVGelement.__init__(self,'radialGradient',**args)
+        SVGelement.__init__(self, 'radialGradient', **args)
         if cx!=None:
             self.attributes['cx']=cx
         if cy!=None:
@@ -694,7 +694,7 @@ class stop(SVGelement):
     Puts a stop color at the specified radius
     """
     def __init__(self,offset,stop_color=None,**args):
-        SVGelement.__init__(self,'stop',{'offset':offset},**args)
+        SVGelement.__init__(self, 'stop', {'offset':offset}, **args)
         if stop_color!=None:
             self.attributes['stop-color']=stop_color
 
@@ -704,7 +704,7 @@ class style(SVGelement):
     Add a CDATA element to this element for defing in line stylesheets etc..
     """
     def __init__(self,type,cdata=None,**args):
-        SVGelement.__init__(self,'style',{'type':type},cdata=cdata, **args)
+        SVGelement.__init__(self, 'style', {'type':type}, cdata=cdata, **args)
 
 
 class image(SVGelement):
@@ -715,7 +715,7 @@ class image(SVGelement):
     def __init__(self,url,x=None,y=None,width=None,height=None,**args):
         if width==None or height==None:
             raise ValueError('both height and width are required')
-        SVGelement.__init__(self,'image',{'xlink:href':url,'width':width,'height':height},**args)
+        SVGelement.__init__(self, 'image', {'xlink:href':url,'width':width,'height':height}, **args)
         if x!=None:
             self.attributes['x']=x
         if y!=None:
@@ -727,7 +727,7 @@ class cursor(SVGelement):
     defines a custom cursor for a element or a drawing
     """
     def __init__(self,url,**args):
-        SVGelement.__init__(self,'cursor',{'xlink:href':url},**args)
+        SVGelement.__init__(self, 'cursor', {'xlink:href':url}, **args)
 
 
 class marker(SVGelement):
@@ -737,7 +737,7 @@ class marker(SVGelement):
     add an element to it which should be used as a marker.
     """
     def __init__(self,id=None,viewBox=None,refx=None,refy=None,markerWidth=None,markerHeight=None,**args):
-        SVGelement.__init__(self,'marker',**args)
+        SVGelement.__init__(self, 'marker', **args)
         if id!=None:
             self.attributes['id']=id
         if viewBox!=None:
@@ -758,7 +758,7 @@ class group(SVGelement):
     g.addElement(SVGelement)
     """
     def __init__(self,id=None,**args):
-        SVGelement.__init__(self,'g',**args)
+        SVGelement.__init__(self, 'g', **args)
         if id!=None:
             self.attributes['id']=id
 
@@ -772,7 +772,7 @@ class symbol(SVGelement):
     """
 
     def __init__(self,id=None,viewBox=None,**args):
-        SVGelement.__init__(self,'symbol',**args)
+        SVGelement.__init__(self, 'symbol', **args)
         if id!=None:
             self.attributes['id']=id
         if viewBox!=None:
@@ -784,7 +784,7 @@ class defs(SVGelement):
     container for defining elements
     """
     def __init__(self,**args):
-        SVGelement.__init__(self,'defs',**args)
+        SVGelement.__init__(self, 'defs', **args)
 
 class switch(SVGelement):
     """sw=switch(**args)
@@ -794,7 +794,7 @@ class switch(SVGelement):
     Refer to the SVG specification for details.
     """
     def __init__(self,**args):
-        SVGelement.__init__(self,'switch',**args)
+        SVGelement.__init__(self, 'switch', **args)
 
 
 class use(SVGelement):
@@ -803,7 +803,7 @@ class use(SVGelement):
     references a symbol by linking to its id and its position, height and width
     """
     def __init__(self,link,x=None,y=None,width=None,height=None,**args):
-        SVGelement.__init__(self,'use',{'xlink:href':link},**args)
+        SVGelement.__init__(self, 'use', {'xlink:href':link}, **args)
         if x!=None:
             self.attributes['x']=x
         if y!=None:
@@ -822,14 +822,14 @@ class link(SVGelement):
     a.addElement(SVGelement)
     """
     def __init__(self,link='',**args):
-        SVGelement.__init__(self,'a',{'xlink:href':link},**args)
+        SVGelement.__init__(self, 'a', {'xlink:href':link}, **args)
 
 class view(SVGelement):
     """v=view(id,**args)
 
     a view can be used to create a view with different attributes"""
     def __init__(self,id=None,**args):
-        SVGelement.__init__(self,'view',**args)
+        SVGelement.__init__(self, 'view', **args)
         if id!=None:
             self.attributes['id']=id
 
@@ -840,7 +840,7 @@ class script(SVGelement):
 
     """
     def __init__(self,type,cdata=None,**args):
-        SVGelement.__init__(self,'script',{'type':type},cdata=cdata,**args)
+        SVGelement.__init__(self, 'script', {'type':type}, cdata=cdata, **args)
 
 class animate(SVGelement):
     """an=animate(attribute,from,to,during,**args)
@@ -848,7 +848,7 @@ class animate(SVGelement):
     animates an attribute.
     """
     def __init__(self,attribute,fr=None,to=None,dur=None,**args):
-        SVGelement.__init__(self,'animate',{'attributeName':attribute},**args)
+        SVGelement.__init__(self, 'animate', {'attributeName':attribute}, **args)
         if fr!=None:
             self.attributes['from']=fr
         if to!=None:
@@ -862,7 +862,7 @@ class animateMotion(SVGelement):
     animates a SVGelement over the given path in dur seconds
     """
     def __init__(self,pathdata,dur,**args):
-        SVGelement.__init__(self,'animateMotion',**args)
+        SVGelement.__init__(self, 'animateMotion', **args)
         if pathdata!=None:
             self.attributes['path']=str(pathdata)
         if dur!=None:
@@ -874,7 +874,7 @@ class animateTransform(SVGelement):
     transform an element from and to a value.
     """
     def __init__(self,type=None,fr=None,to=None,dur=None,**args):
-        SVGelement.__init__(self,'animateTransform',{'attributeName':'transform'},**args)
+        SVGelement.__init__(self, 'animateTransform', {'attributeName':'transform'}, **args)
         # As far as I know the attributeName is always transform
         if type!=None:
             self.attributes['type']=type
@@ -890,7 +890,7 @@ class animateColor(SVGelement):
     Animates the color of a element
     """
     def __init__(self,attribute,type=None,fr=None,to=None,dur=None,**args):
-        SVGelement.__init__(self,'animateColor',{'attributeName':attribute},**args)
+        SVGelement.__init__(self, 'animateColor', {'attributeName':attribute}, **args)
         if type!=None:
             self.attributes['type']=type
         if fr!=None:
@@ -905,7 +905,7 @@ class set(SVGelement):
     sets an attribute to a value for a
     """
     def __init__(self,attribute,to=None,dur=None,**args):
-        SVGelement.__init__(self,'set',{'attributeName':attribute},**args)
+        SVGelement.__init__(self, 'set', {'attributeName':attribute}, **args)
         if to!=None:
             self.attributes['to']=to
         if dur!=None:
@@ -929,7 +929,7 @@ class svg(SVGelement):
     d.toXml()
     """
     def __init__(self,viewBox=None, width=None, height=None,**args):
-        SVGelement.__init__(self,'svg',**args)
+        SVGelement.__init__(self, 'svg', **args)
         if viewBox!=None:
             self.attributes['viewBox']=_viewboxlist(viewBox)
         if width!=None:
@@ -952,7 +952,7 @@ class drawing:
     def __init__(self, entity={}):
         self.svg=None
         self.entity = entity
-    def setSVG(self,svg):
+    def setSVG(self, svg):
         self.svg=svg
         # Voeg een element toe aan de grafiek toe.
     if use_dom_implementation==0:
@@ -967,12 +967,12 @@ class drawing:
                     xml.write("<!ENTITY %s \"%s\">\n" % (item, self.entity[item]))
                 xml.write("]")
             xml.write(">\n")
-            self.svg.toXml(0,xml)
+            self.svg.toXml(0, xml)
             if not filename:
                 if compress:
                     import gzip
                     f=cStringIO.StringIO()
-                    zf=gzip.GzipFile(fileobj=f,mode='wb')
+                    zf=gzip.GzipFile(fileobj=f, mode='wb')
                     zf.write(xml.getvalue())
                     zf.close()
                     f.seek(0)
@@ -982,11 +982,11 @@ class drawing:
             else:
                 if filename[-4:]=='svgz':
                     import gzip
-                    f=gzip.GzipFile(filename=filename,mode="wb", compresslevel=9)
+                    f=gzip.GzipFile(filename=filename, mode="wb", compresslevel=9)
                     f.write(xml.getvalue())
                     f.close()
                 else:
-                    f=file(filename,'w')
+                    f=file(filename, 'w')
                     f.write(xml.getvalue())
                     f.close()
 
@@ -997,40 +997,40 @@ class drawing:
             writes a svg drawing to the screen or to a file
             compresses if filename ends with svgz or if compress is true
             """
-            doctype = implementation.createDocumentType('svg',"-//W3C//DTD SVG 1.0//EN""",'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd ')
+            doctype = implementation.createDocumentType('svg', "-//W3C//DTD SVG 1.0//EN""", 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd ')
 
             global root
             # root is defined global so it can be used by the appender. Its also possible to use it as an arugument but
             # that is a bit messy.
-            root=implementation.createDocument(None,None,doctype)
+            root=implementation.createDocument(None, None, doctype)
             # Create the xml document.
             global appender
-            def appender(element,elementroot):
+            def appender(element, elementroot):
                 """This recursive function appends elements to an element and sets the attributes
                 and type. It stops when alle elements have been appended"""
                 if element.namespace:
-                    e=root.createElementNS(element.namespace,element.type)
+                    e=root.createElementNS(element.namespace, element.type)
                 else:
                     e=root.createElement(element.type)
                 if element.text:
                     textnode=root.createTextNode(element.text)
                     e.appendChild(textnode)
                 for attribute in list(element.attributes.keys()):   #in element.attributes is supported from python 2.2
-                    e.setAttribute(attribute,str(element.attributes[attribute]))
+                    e.setAttribute(attribute, str(element.attributes[attribute]))
                 if element.elements:
                     for el in element.elements:
-                        e=appender(el,e)
+                        e=appender(el, e)
                 elementroot.appendChild(e)
                 return elementroot
-            root=appender(self.svg,root)
+            root=appender(self.svg, root)
             if not filename:
                 import cStringIO
                 xml=cStringIO.StringIO()
-                PrettyPrint(root,xml)
+                PrettyPrint(root, xml)
                 if compress:
                     import gzip
                     f=cStringIO.StringIO()
-                    zf=gzip.GzipFile(fileobj=f,mode='wb')
+                    zf=gzip.GzipFile(fileobj=f, mode='wb')
                     zf.write(xml.getvalue())
                     zf.close()
                     f.seek(0)
@@ -1043,13 +1043,13 @@ class drawing:
                         import gzip
                         import cStringIO
                         xml=cStringIO.StringIO()
-                        PrettyPrint(root,xml)
-                        f=gzip.GzipFile(filename=filename,mode='wb',compresslevel=9)
+                        PrettyPrint(root, xml)
+                        f=gzip.GzipFile(filename=filename, mode='wb', compresslevel=9)
                         f.write(xml.getvalue())
                         f.close()
                     else:
-                        f=open(filename,'w')
-                        PrettyPrint(root,f)
+                        f=open(filename, 'w')
+                        PrettyPrint(root, f)
                         f.close()
                 except:
                     print(("Cannot write SVG file: " + filename))
@@ -1070,32 +1070,32 @@ if __name__=='__main__':
 
 
     d=drawing()
-    s=svg((0,0,100,100))
-    r=rect(-100,-100,300,300,'cyan')
+    s=svg((0, 0, 100, 100))
+    r=rect(-100, -100, 300, 300, 'cyan')
     s.addElement(r)
 
     t=title('SVGdraw Demo')
     s.addElement(t)
     g=group('animations')
-    e=ellipse(0,0,5,2)
+    e=ellipse(0, 0, 5, 2)
     g.addElement(e)
-    c=circle(0,0,1,'red')
+    c=circle(0, 0, 1, 'red')
     g.addElement(c)
-    pd=pathdata(0,-10)
+    pd=pathdata(0, -10)
     for i in range(6):
-        pd.relsmbezier(10,5,0,10)
-        pd.relsmbezier(-10,5,0,10)
-    an=animateMotion(pd,10)
+        pd.relsmbezier(10, 5, 0, 10)
+        pd.relsmbezier(-10, 5, 0, 10)
+    an=animateMotion(pd, 10)
     an.attributes['rotate']='auto-reverse'
     an.attributes['repeatCount']="indefinite"
     g.addElement(an)
     s.addElement(g)
-    for i in range(20,120,20):
-        u=use('#animations',i,0)
+    for i in range(20, 120, 20):
+        u=use('#animations', i, 0)
         s.addElement(u)
-    for i in range(0,120,20):
-        for j in range(5,105,10):
-            c=circle(i,j,1,'red','black',.5)
+    for i in range(0, 120, 20):
+        for j in range(5, 105, 10):
+            c=circle(i, j, 1, 'red', 'black', .5)
             s.addElement(c)
     d.setSVG(s)
 
diff --git a/wqflask/utility/tools.py b/wqflask/utility/tools.py
index 51a87fe1..68ef0f04 100644
--- a/wqflask/utility/tools.py
+++ b/wqflask/utility/tools.py
@@ -15,7 +15,7 @@ OVERRIDES = {}
 
 def app_set(command_id, value):
     """Set application wide value"""
-    app.config.setdefault(command_id,value)
+    app.config.setdefault(command_id, value)
     return value
 
 def get_setting(command_id,guess=None):
@@ -45,7 +45,7 @@ def get_setting(command_id,guess=None):
     def value(command):
         if command:
             # sys.stderr.write("Found "+command+"\n")
-            app_set(command_id,command)
+            app_set(command_id, command)
             return command
         else:
             return None
@@ -68,7 +68,7 @@ def get_setting(command_id,guess=None):
 
 def get_setting_bool(id):
     v = get_setting(id)
-    if v not in [0,False,'False','FALSE',None]:
+    if v not in [0, False, 'False', 'FALSE', None]:
       return True
     return False
 
@@ -108,16 +108,16 @@ def js_path(module=None):
     raise "No JS path found for "+module+" (if not in Guix check JS_GN_PATH)"
 
 def reaper_command(guess=None):
-    return get_setting("REAPER_COMMAND",guess)
+    return get_setting("REAPER_COMMAND", guess)
 
 def gemma_command(guess=None):
-    return assert_bin(get_setting("GEMMA_COMMAND",guess))
+    return assert_bin(get_setting("GEMMA_COMMAND", guess))
 
 def gemma_wrapper_command(guess=None):
-    return assert_bin(get_setting("GEMMA_WRAPPER_COMMAND",guess))
+    return assert_bin(get_setting("GEMMA_WRAPPER_COMMAND", guess))
 
 def plink_command(guess=None):
-    return assert_bin(get_setting("PLINK_COMMAND",guess))
+    return assert_bin(get_setting("PLINK_COMMAND", guess))
 
 def flat_file_exists(subdir):
     base = get_setting("GENENETWORK_FILES")
@@ -180,7 +180,7 @@ def locate(name, subdir=None):
     raise Exception("Can not locate "+name+" in "+base)
 
 def locate_phewas(name, subdir=None):
-    return locate(name,'/phewas/'+subdir)
+    return locate(name, '/phewas/'+subdir)
 
 def locate_ignore_error(name, subdir=None):
     """
@@ -204,7 +204,7 @@ def tempdir():
     """
     Get UNIX TMPDIR by default
     """
-    return valid_path(get_setting("TMPDIR","/tmp"))
+    return valid_path(get_setting("TMPDIR", "/tmp"))
 
 BLUE  = '\033[94m'
 GREEN = '\033[92m'
@@ -225,9 +225,9 @@ def show_settings():
     keylist.sort()
     for k in keylist:
         try:
-            print(("%s: %s%s%s%s" % (k,BLUE,BOLD,get_setting(k),ENDC)))
+            print(("%s: %s%s%s%s" % (k, BLUE, BOLD, get_setting(k), ENDC)))
         except:
-            print(("%s: %s%s%s%s" % (k,GREEN,BOLD,app.config[k],ENDC)))
+            print(("%s: %s%s%s%s" % (k, GREEN, BOLD, app.config[k], ENDC)))
 
 
 # Cached values
@@ -279,10 +279,10 @@ SMTP_CONNECT = get_setting('SMTP_CONNECT')
 SMTP_USERNAME = get_setting('SMTP_USERNAME')
 SMTP_PASSWORD = get_setting('SMTP_PASSWORD')
 
-REAPER_COMMAND     = app_set("REAPER_COMMAND",reaper_command())
-GEMMA_COMMAND      = app_set("GEMMA_COMMAND",gemma_command())
+REAPER_COMMAND     = app_set("REAPER_COMMAND", reaper_command())
+GEMMA_COMMAND      = app_set("GEMMA_COMMAND", gemma_command())
 assert(GEMMA_COMMAND is not None)
-PLINK_COMMAND      = app_set("PLINK_COMMAND",plink_command())
+PLINK_COMMAND      = app_set("PLINK_COMMAND", plink_command())
 GEMMA_WRAPPER_COMMAND = gemma_wrapper_command()
 TEMPDIR            = tempdir() # defaults to UNIX TMPDIR
 assert_dir(TEMPDIR)
@@ -295,11 +295,11 @@ assert_dir(JS_GUIX_PATH+'/cytoscape-panzoom')
 CSS_PATH = JS_GUIX_PATH  # The CSS is bundled together with the JS
 # assert_dir(JS_PATH)
 
-JS_TWITTER_POST_FETCHER_PATH = get_setting("JS_TWITTER_POST_FETCHER_PATH",js_path("javascript-twitter-post-fetcher"))
+JS_TWITTER_POST_FETCHER_PATH = get_setting("JS_TWITTER_POST_FETCHER_PATH", js_path("javascript-twitter-post-fetcher"))
 assert_dir(JS_TWITTER_POST_FETCHER_PATH)
 assert_file(JS_TWITTER_POST_FETCHER_PATH+"/js/twitterFetcher_min.js")
 
-JS_CYTOSCAPE_PATH = get_setting("JS_CYTOSCAPE_PATH",js_path("cytoscape"))
+JS_CYTOSCAPE_PATH = get_setting("JS_CYTOSCAPE_PATH", js_path("cytoscape"))
 assert_dir(JS_CYTOSCAPE_PATH)
 assert_file(JS_CYTOSCAPE_PATH+'/cytoscape.min.js')
 
diff --git a/wqflask/utility/webqtlUtil.py b/wqflask/utility/webqtlUtil.py
index 79991149..77cc3416 100644
--- a/wqflask/utility/webqtlUtil.py
+++ b/wqflask/utility/webqtlUtil.py
@@ -41,22 +41,22 @@ ParInfo ={
 'C57BL-6JxC57BL-6NJF2':['', '', 'C57BL/6J', 'C57BL/6NJ'],
 'BXD300':['B6D2F1', 'D2B6F1', 'C57BL/6J', 'DBA/2J'],
 'B6BTBRF2':['B6BTBRF1', 'BTBRB6F1', 'C57BL/6J', 'BTBRT<+>tf/J'],
-'BHHBF2':['B6HF2','HB6F2','C57BL/6J','C3H/HeJ'],
-'BHF2':['B6HF2','HB6F2','C57BL/6J','C3H/HeJ'],
+'BHHBF2':['B6HF2', 'HB6F2', 'C57BL/6J', 'C3H/HeJ'],
+'BHF2':['B6HF2', 'HB6F2', 'C57BL/6J', 'C3H/HeJ'],
 'B6D2F2':['B6D2F1', 'D2B6F1', 'C57BL/6J', 'DBA/2J'],
 'BDF2-1999':['B6D2F2', 'D2B6F2', 'C57BL/6J', 'DBA/2J'],
 'BDF2-2005':['B6D2F1', 'D2B6F1', 'C57BL/6J', 'DBA/2J'],
-'CTB6F2':['CTB6F2','B6CTF2','C57BL/6J','Castaneous'],
+'CTB6F2':['CTB6F2', 'B6CTF2', 'C57BL/6J', 'Castaneous'],
 'CXB':['CBF1', 'BCF1', 'C57BL/6ByJ', 'BALB/cByJ'],
 'AXBXA':['ABF1', 'BAF1', 'C57BL/6J', 'A/J'],
 'AXB':['ABF1', 'BAF1', 'C57BL/6J', 'A/J'],
 'BXA':['BAF1', 'ABF1', 'C57BL/6J', 'A/J'],
 'LXS':['LSF1', 'SLF1', 'ISS', 'ILS'],
 'HXBBXH':['SHR_BNF1', 'BN_SHRF1', 'BN-Lx/Cub', 'SHR/OlaIpcv'],
-'BayXSha':['BayXShaF1', 'ShaXBayF1', 'Bay-0','Shahdara'],
-'ColXBur':['ColXBurF1', 'BurXColF1', 'Col-0','Bur-0'],
-'ColXCvi':['ColXCviF1', 'CviXColF1', 'Col-0','Cvi'],
-'SXM':['SMF1', 'MSF1', 'Steptoe','Morex'],
+'BayXSha':['BayXShaF1', 'ShaXBayF1', 'Bay-0', 'Shahdara'],
+'ColXBur':['ColXBurF1', 'BurXColF1', 'Col-0', 'Bur-0'],
+'ColXCvi':['ColXCviF1', 'CviXColF1', 'Col-0', 'Cvi'],
+'SXM':['SMF1', 'MSF1', 'Steptoe', 'Morex'],
 'HRDP':['SHR_BNF1', 'BN_SHRF1', 'BN-Lx/Cub', 'SHR/OlaIpcv']
 }
 
@@ -91,7 +91,7 @@ def readLineCSV(line): ### dcrowell July 2008
     returnList[0]=returnList[0][1:]
     return returnList
 
-def cmpEigenValue(A,B):
+def cmpEigenValue(A, B):
     try:
         if A[0] > B[0]:
             return -1