From d157019159ae3eb2e3efb02d874a1b4edfc559cb Mon Sep 17 00:00:00 2001
From: zsloan
Date: Wed, 12 Aug 2020 15:46:13 -0500
Subject: Fix positioning for many instances of text in the mapping figure

* wqflask/wqflask/marker_regression/display_mapping_results.py: Many text
instances had their positions changed by the switch from piddle to PIL. Change
various Y offsets and in some cases changing the logic of the way text is
positioned related to its length and font size.
* wqflask/wqflask/static/fonts/verdanab.ttf: Add bold Verdana, since there needs
to be a separate font file for bold text.
---
 .../marker_regression/display_mapping_results.py   |  40 ++++++++++++---------
 wqflask/wqflask/static/fonts/verdanab.ttf          | Bin 0 -> 156340 bytes
 2 files changed, 23 insertions(+), 17 deletions(-)
 create mode 100644 wqflask/wqflask/static/fonts/verdanab.ttf

(limited to 'wqflask')

diff --git a/wqflask/wqflask/marker_regression/display_mapping_results.py b/wqflask/wqflask/marker_regression/display_mapping_results.py
index 6f50601d..bda899fb 100644
--- a/wqflask/wqflask/marker_regression/display_mapping_results.py
+++ b/wqflask/wqflask/marker_regression/display_mapping_results.py
@@ -73,6 +73,7 @@ MEDIUMPURPLE = ImageColor.getrgb("mediumpurple")
 
 # ---- FONT FILES ---- #
 VERDANA_FILE = "./wqflask/static/fonts/verdana.ttf"
+VERDANA_BOLD_FILE = "./wqflask/static/fonts/verdanab.ttf"
 TREBUC_FILE = "./wqflask/static/fonts/trebucbd.ttf"
 FNT_BS_FILE = "./wqflask/static/fonts/fnt_bs.ttf"
 ARIAL_FILE = "./wqflask/static/fonts/arial.ttf"
@@ -1719,18 +1720,16 @@ class DisplayMappingResults(object):
                 font=clickableRegionLabelFont, fill=self.CLICKABLE_ENSEMBL_TEXT_COLOR)
 
             #draw the gray text
-            chrFont = ImageFont.truetype(font=VERDANA_FILE, size=26*zoom)
-            traitFont = ImageFont.truetype(font=VERDANA_FILE, size=14)
+            chrFont = ImageFont.truetype(font=VERDANA_BOLD_FILE, size=26*zoom)
             chrX = xLeftOffset + plotWidth - 2 - im_drawer.textsize(
                 "Chr %s" % self.ChrList[self.selectedChr][0], font=chrFont)[0]
             im_drawer.text(
                 text="Chr %s" % self.ChrList[self.selectedChr][0],
-                xy=(chrX, ensemblPaddingTop-5), font=chrFont, fill=GRAY)
+                xy=(chrX, phenogenPaddingTop), font=chrFont, fill=GRAY)
             # end of drawBrowserClickableRegions
         else:
             #draw the gray text
             chrFont = ImageFont.truetype(font=VERDANA_FILE, size=26*zoom)
-            traitFont = ImageFont.truetype(font=VERDANA_FILE, size=14)
             chrX = xLeftOffset + (plotWidth - im_drawer.textsize(
                 "Chr %s" % currentChromosome, font=chrFont)[0])/2
             im_drawer.text(
@@ -1751,7 +1750,7 @@ class DisplayMappingResults(object):
 
         #Parameters
         NUM_MINOR_TICKS = 5 # Number of minor ticks between major ticks
-        X_MAJOR_TICK_THICKNESS = 2
+        X_MAJOR_TICK_THICKNESS = 3
         X_MINOR_TICK_THICKNESS = 1
         X_AXIS_THICKNESS = 1*zoom
 
@@ -1762,10 +1761,10 @@ class DisplayMappingResults(object):
         xAxisTickMarkColor = BLACK
         xAxisLabelColor = BLACK
         fontHeight = 12*fontZoom # How tall the font that we're using is
-        spacingFromLabelToAxis = 5
+        spacingFromLabelToAxis = 10
 
         if self.plotScale == 'physic':
-            strYLoc = yZero + spacingFromLabelToAxis + MBLabelFont.font.height
+            strYLoc = yZero + MBLabelFont.font.height/2
             ###Physical single chromosome view
             if self.selectedChr > -1:
                 XScale = Plot.detScale(startMb, endMb)
@@ -1826,18 +1825,17 @@ class DisplayMappingResults(object):
                                     yZero+10*zoom), fill=BLACK, angle=270)
                     startPosX +=  (self.ChrLengthDistList[i]+self.GraphInterval)*plotXScale
 
-            TEXT_Y_DISPLACEMENT = -15
             megabaseLabelFont = ImageFont.truetype(font=VERDANA_FILE, size=int(18*zoom*1.5))
             im_drawer.text(
                 text="Megabases",
                 xy=(
                     xLeftOffset+(plotWidth-im_drawer.textsize(
                         "Megabases",font=megabaseLabelFont)[0])/2,
-                    strYLoc+MBLabelFont.font.height+10*(zoom%2)+TEXT_Y_DISPLACEMENT),
+                    strYLoc+MBLabelFont.font.height+10*(zoom%2)),
                 font=megabaseLabelFont, fill=BLACK)
             pass
         else:
-            strYLoc = yZero + spacingFromLabelToAxis + MBLabelFont.font.height + 8
+            strYLoc = yZero + spacingFromLabelToAxis + MBLabelFont.font.height/2
             ChrAInfo = []
             preLpos = -1
             distinctCount = 0.0
@@ -1933,12 +1931,12 @@ class DisplayMappingResults(object):
                         fill=lineColor)
                 startPosX += (self.ChrLengthDistList[j]+self.GraphInterval)*plotXScale
 
-            centimorganLabelFont = ImageFont.truetype(font=VERDANA_FILE, size=18*zoom*1.5)
+            centimorganLabelFont = ImageFont.truetype(font=VERDANA_FILE, size=int(18*zoom*1.5))
             im_drawer.text(
                 text="Centimorgans",
                 xy=(xLeftOffset+(plotWidth-im_drawer.textsize(
-                    "Megabases", font=centimorganLabelFont)[0])/2,
-                    strYLoc + MBLabelFont.font.height+ 10*(zoom%2) + 10),
+                    "Centimorgans", font=centimorganLabelFont)[0])/2,
+                    strYLoc + MBLabelFont.font.height+ 10*(zoom%2)),
                 font=centimorganLabelFont, fill=BLACK)
 
         im_drawer.line(xy=((xLeftOffset,yZero), (xLeftOffset+plotWidth,yZero)),
@@ -2055,8 +2053,16 @@ class DisplayMappingResults(object):
         LRSLODFont=ImageFont.truetype(font=VERDANA_FILE, size=int(18*zoom*1.5))
         yZero = yTopOffset + plotHeight
 
-        TEXT_X_DISPLACEMENT = -20
-        TEXT_Y_DISPLACEMENT = -215
+        # TEXT_X_DISPLACEMENT = -20
+        #TEXT_Y_DISPLACEMENT = -215
+        if all_int:
+            TEXT_X_DISPLACEMENT = -12
+        else:
+            TEXT_X_DISPLACEMENT = -30
+        if self.LRS_LOD == "-log(p)":
+            TEXT_Y_DISPLACEMENT = -242
+        else:
+            TEXT_Y_DISPLACEMENT = -210
         draw_rotated_text(
             canvas, text=self.LRS_LOD, font=LRSLODFont,
             xy=(xLeftOffset - im_drawer.textsize(
@@ -2140,7 +2146,7 @@ class DisplayMappingResults(object):
         else:
             if self.additiveChecked:
                 additiveMax = max(map(lambda X : abs(X['additive']), self.qtlresults))
-            lrsEdgeWidth = 2
+            lrsEdgeWidth = 3
 
         if zoom == 2:
             lrsEdgeWidth = 2 * lrsEdgeWidth
@@ -2307,7 +2313,7 @@ class DisplayMappingResults(object):
                         text="5",
                         xy=(
                             Xc-im_drawer.textsize("5",font=symbolFont)[0]/2+1,
-                            Yc+2),
+                            Yc-4),
                         fill=point_color, font=symbolFont)
                 else:
                     LRSCoordXY.append((Xc, Yc))
diff --git a/wqflask/wqflask/static/fonts/verdanab.ttf b/wqflask/wqflask/static/fonts/verdanab.ttf
new file mode 100644
index 00000000..1a99258f
Binary files /dev/null and b/wqflask/wqflask/static/fonts/verdanab.ttf differ
-- 
cgit v1.2.3