about summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xwqflask/base/trait.py78
-rw-r--r--wqflask/other_config/nginx_conf/gn2python.conf41
-rw-r--r--wqflask/other_config/nginx_conf/gn2python_lei.conf41
-rw-r--r--wqflask/requirements.txt1
-rw-r--r--wqflask/wqflask/search_results.py2
-rw-r--r--wqflask/wqflask/templates/correlation_page.html33
6 files changed, 153 insertions, 43 deletions
diff --git a/wqflask/base/trait.py b/wqflask/base/trait.py
index 7847c0a6..db76ddea 100755
--- a/wqflask/base/trait.py
+++ b/wqflask/base/trait.py
@@ -28,7 +28,7 @@ class GeneralTrait(object):
 
     """
 
-    def __init__(self, **kw):
+    def __init__(self, get_qtl_info=False, **kw):
         # xor assertion
         assert bool(kw.get('dataset')) != bool(kw.get('dataset_name')), "Needs dataset ob. or name";
         if kw.get('dataset_name'):
@@ -41,6 +41,14 @@ class GeneralTrait(object):
         self.haveinfo = kw.get('haveinfo', False)
         self.sequence = kw.get('sequence')         # Blat sequence, available for ProbeSet
         self.data = kw.get('data', {})
+        
+        # Sets defaultst
+        self.locus = None
+        self.lrs = None
+        self.pvalue = None
+        self.mean = None
+        self.num_overlap = None
+        
 
         if kw.get('fullname'):
             name2 = value.split("::")
@@ -52,8 +60,9 @@ class GeneralTrait(object):
         
         # Todo: These two lines are necessary most of the time, but perhaps not all of the time
         # So we could add a simple if statement to short-circuit this if necessary
-        self.retrieve_info()
+        self.retrieve_info(get_qtl_info=get_qtl_info)
         self.retrieve_sample_data()
+        
 
 
     def get_name(self):
@@ -237,7 +246,7 @@ class GeneralTrait(object):
     #def items(self):
     #    return self.__dict__.items()
 
-    def retrieve_info(self, QTL=False):
+    def retrieve_info(self, get_qtl_info=False):
         assert self.dataset, "Dataset doesn't exist"
         if self.dataset.type == 'Publish':
             query = """
@@ -259,7 +268,7 @@ class GeneralTrait(object):
                             PublishXRef.InbredSetId = PublishFreeze.InbredSetId AND
                             PublishFreeze.Id = %s
                     """ % (self.name, self.dataset.id)
-            traitInfo = g.db.execute(query).fetchone()
+            trait_info = g.db.execute(query).fetchone()
         #XZ, 05/08/2009: Xiaodong add this block to use ProbeSet.Id to find the probeset instead of just using ProbeSet.Name
         #XZ, 05/08/2009: to avoid the problem of same probeset name from different platforms.
         elif self.dataset.type == 'ProbeSet':
@@ -276,8 +285,8 @@ class GeneralTrait(object):
                     """ % (escape(display_fields_string),
                            escape(self.dataset.name),
                            escape(self.name))
-            traitInfo = g.db.execute(query).fetchone()
-            #print("traitInfo is: ", pf(traitInfo))
+            trait_info = g.db.execute(query).fetchone()
+            #print("trait_info is: ", pf(trait_info))
         #XZ, 05/08/2009: We also should use Geno.Id to find marker instead of just using Geno.Name
         # to avoid the problem of same marker name from different species.
         elif self.dataset.type == 'Geno':
@@ -294,23 +303,24 @@ class GeneralTrait(object):
                     """ % (escape(display_fields_string),
                            escape(self.dataset.name),
                            escape(self.name))
-            traitInfo = g.db.execute(query).fetchone()
-            #print("traitInfo is: ", pf(traitInfo))
+            trait_info = g.db.execute(query).fetchone()
+            #print("trait_info is: ", pf(trait_info))
         else: #Temp type
             query = """SELECT %s FROM %s WHERE Name = %s
                                      """ % (string.join(self.dataset.display_fields,','),
                                             self.dataset.type, self.name)
-            traitInfo = g.db.execute(query).fetchone()
+            trait_info = g.db.execute(query).fetchone()
 
 
         #self.cursor.execute(query)
-        #traitInfo = self.cursor.fetchone()
-        if traitInfo:
+        #trait_info = self.cursor.fetchone()
+        if trait_info:
             self.haveinfo = True
 
             #XZ: assign SQL query result to trait attributes.
             for i, field in enumerate(self.dataset.display_fields):
-                setattr(self, field, str(traitInfo[i]))
+                print("  mike: {} -> {} - {}".format(field, type(trait_info[i]), trait_info[i]))
+                setattr(self, field, trait_info[i])
 
             if self.dataset.type == 'Publish':
                 self.confidential = 0
@@ -318,6 +328,10 @@ class GeneralTrait(object):
                     self.confidential = 1
 
             self.homologeneid = None
+            
+            print("self.geneid is:", self.geneid)
+            print("  type:", type(self.geneid))
+            print("self.dataset.group.name is:", self.dataset.group.name)
             if self.dataset.type == 'ProbeSet' and self.dataset.group and self.geneid:
                 #XZ, 05/26/2010: From time to time, this query get error message because some geneid values in database are not number.
                 #XZ: So I have to test if geneid is number before execute the query.
@@ -329,6 +343,8 @@ class GeneralTrait(object):
                 #    geneidIsNumber = False
 
                 #if geneidIsNumber:
+
+
                 query = """
                         SELECT
                                 HomologeneId
@@ -340,6 +356,7 @@ class GeneralTrait(object):
                                 InbredSet.SpeciesId = Species.Id AND
                                 Species.TaxonomyId = Homologene.TaxonomyId
                         """ % (escape(str(self.geneid)), escape(self.dataset.group.name))
+                print("-> query is:", query)
                 result = g.db.execute(query).fetchone()
                 #else:
                 #    result = None
@@ -347,35 +364,40 @@ class GeneralTrait(object):
                 if result:
                     self.homologeneid = result[0]
 
-            if QTL:
+            if get_qtl_info:
                 if self.dataset.type == 'ProbeSet' and not self.cellid:
-                    traitQTL = g.db.execute("""
+                    query = """
                             SELECT
                                     ProbeSetXRef.Locus, ProbeSetXRef.LRS, ProbeSetXRef.pValue, ProbeSetXRef.mean
                             FROM
                                     ProbeSetXRef, ProbeSet
                             WHERE
                                     ProbeSetXRef.ProbeSetId = ProbeSet.Id AND
-                                    ProbeSet.Name = "%s" AND
-                                    ProbeSetXRef.ProbeSetFreezeId =%s
-                            """, (self.name, self.dataset.id)).fetchone()
+                                    ProbeSet.Name = "{}" AND
+                                    ProbeSetXRef.ProbeSetFreezeId ={}
+                            """.format(self.name, self.dataset.id)
+                    trait_qtl = g.db.execute(query).fetchone()
                     #self.cursor.execute(query)
-                    #traitQTL = self.cursor.fetchone()
-                    if traitQTL:
-                        self.locus, self.lrs, self.pvalue, self.mean = traitQTL
+                    #trait_qtl = self.cursor.fetchone()
+                    if trait_qtl:
+                        self.locus, self.lrs, self.pvalue, self.mean = trait_qtl
                         if self.locus:
-                            result = g.db.execute("""
+                            query = """
                                 select Geno.Chr, Geno.Mb from Geno, Species
-                                where Species.Name = '%s' and
-                                Geno.Name = '%s' and
+                                where Species.Name = '{}' and
+                                Geno.Name = '{}' and
                                 Geno.SpeciesId = Species.Id
-                                """, (species, self.locus)).fetchone()
+                                """.format(self.dataset.group.species, self.locus)
+                            print("query is:", query)
+                            result = g.db.execute(query).fetchone()
                             self.locus_chr = result[0]
                             self.locus_mb = result[1]
                     else:
                         self.locus = self.locus_chr = self.locus_mb = self.lrs = self.pvalue = self.mean = ""
+                
+                
                 if self.dataset.type == 'Publish':
-                    traitQTL = g.db.execute("""
+                    trait_qtl = g.db.execute("""
                             SELECT
                                     PublishXRef.Locus, PublishXRef.LRS
                             FROM
@@ -386,9 +408,9 @@ class GeneralTrait(object):
                                     PublishFreeze.Id =%s
                             """, (self.name, self.dataset.id)).fetchone()
                     #self.cursor.execute(query)
-                    #traitQTL = self.cursor.fetchone()
-                    if traitQTL:
-                        self.locus, self.lrs = traitQTL
+                    #trait_qtl = self.cursor.fetchone()
+                    if trait_qtl:
+                        self.locus, self.lrs = trait_qtl
                     else:
                         self.locus = self.lrs = ""
         else:
diff --git a/wqflask/other_config/nginx_conf/gn2python.conf b/wqflask/other_config/nginx_conf/gn2python.conf
new file mode 100644
index 00000000..f23e325f
--- /dev/null
+++ b/wqflask/other_config/nginx_conf/gn2python.conf
@@ -0,0 +1,41 @@
+server {
+    # Modeled after http://flask.pocoo.org/docs/deploying/wsgi-standalone/
+    listen 80;
+
+    server_name gn2python.genenetwork.org;
+
+    access_log  /var/log/nginx/access.log;
+    error_log  /var/log/nginx/error.log;
+
+    location ^~ /css/ {
+            root /gene/wqflask/wqflask/static/;
+    }
+
+    location ^~ /javascript/ {
+            root /gene/wqflask/wqflask/static/;
+    }
+
+#    location ^~ /image/ {
+#           root /gene/wqflask/wqflask/static/;
+#       }
+
+    location ^~ /images/ {
+            root /gene/wqflask/wqflask/static/;
+    }
+    
+    ### New - added by Sam
+    #location ^~ /static/ {
+    #       root /gene/wqflask/wqflask/static/;
+    #}
+
+    location / {
+            proxy_pass         http://127.0.0.1:5000/;
+            proxy_redirect     off;
+
+            proxy_set_header   Host             $host;
+            proxy_set_header   X-Real-IP        $remote_addr;
+            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
+            
+            proxy_read_timeout 40m;
+    }
+}
diff --git a/wqflask/other_config/nginx_conf/gn2python_lei.conf b/wqflask/other_config/nginx_conf/gn2python_lei.conf
new file mode 100644
index 00000000..981bda28
--- /dev/null
+++ b/wqflask/other_config/nginx_conf/gn2python_lei.conf
@@ -0,0 +1,41 @@
+server {
+    # Modeled after http://flask.pocoo.org/docs/deploying/wsgi-standalone/
+    listen 80;
+
+    server_name gn2python_lei.genenetwork.org;
+
+    access_log  /var/log/nginx/lei_access.log;
+    error_log  /var/log/nginx/lei_error.log;
+
+    location ^~ /css/ {
+            root /gene/wqflask/wqflask/static/;
+    }
+
+    location ^~ /javascript/ {
+            root /gene/wqflask/wqflask/static/;
+    }
+
+#    location ^~ /image/ {
+#           root /gene/wqflask/wqflask/static/;
+#       }
+
+    location ^~ /images/ {
+            root /gene/wqflask/wqflask/static/;
+    }
+    
+    ### New - added by Sam
+    #location ^~ /static/ {
+    #       root /gene/wqflask/wqflask/static/;
+    #}
+
+    location / {
+            proxy_pass         http://127.0.0.1:5001/;
+            proxy_redirect     off;
+
+            proxy_set_header   Host             $host;
+            proxy_set_header   X-Real-IP        $remote_addr;
+            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
+            
+            proxy_read_timeout 40m;
+    }
+}
\ No newline at end of file
diff --git a/wqflask/requirements.txt b/wqflask/requirements.txt
index 6b07b380..4449c0e7 100644
--- a/wqflask/requirements.txt
+++ b/wqflask/requirements.txt
@@ -3,7 +3,6 @@ Jinja2==2.6
 #MySQL-python==1.2.3
 Piddle==0.1-dev
 PyYAML==3.10
-#Reaper==1.0
 SQLAlchemy==0.7.9
 Werkzeug==0.8.3
 logging-tree==1.1
diff --git a/wqflask/wqflask/search_results.py b/wqflask/wqflask/search_results.py
index 8ec6b897..f76af374 100644
--- a/wqflask/wqflask/search_results.py
+++ b/wqflask/wqflask/search_results.py
@@ -107,7 +107,7 @@ class SearchResultPage(object):
             print("foo locals are:", locals())
             trait_id = result[0]
             this_trait = GeneralTrait(dataset=self.dataset, name=trait_id)
-            this_trait.retrieve_info(QTL=True)
+            this_trait.retrieve_info(get_qtl_info=True)
             self.trait_list.append(this_trait)
 
         self.dataset.get_trait_info(self.trait_list, species)
diff --git a/wqflask/wqflask/templates/correlation_page.html b/wqflask/wqflask/templates/correlation_page.html
index b06f7096..efbf689c 100644
--- a/wqflask/wqflask/templates/correlation_page.html
+++ b/wqflask/wqflask/templates/correlation_page.html
@@ -17,30 +17,37 @@
         <thead>
             <tr>
                 <th>Trait</th>
+                <th>Symbol</th>
+                <th>Alias</th>
+                <th>Description</th>
+                <th>Location</th>
+                <th>Mean Expr</th>
+                <th>Max LRS</th>
+                <th>Max LRS Location</th>
                 {% if corr_method == 'pearson' %}
                 <th>Sample r</th>
+                <th>N Cases</th>
                 <th>Sample p(r)</th>
                 {% else %}
                 <th>Sample rho</th>
                 <th>Sample p(rho)</th>
                 {% endif %}
-                <th>Symbol</th>
-                <th>Alias</th>
-                <th>Description</th>
-                <th>Location</th>
             </tr>
         </thead>
         <tbody>
-        {% for trait in correlation_data_slice %}
+        {% for trait in correlation_results %}
             <tr>
-                <td>{{ trait }}</td>
-                <td>{{ correlation_data_slice[trait].correlation }}</td>
-                <td>{{ correlation_data_slice[trait].p_value }}</td>
-                <td>{{ correlation_data_slice[trait].symbol }}</td>
-                <td>{{ correlation_data_slice[trait].alias }}</td>
-                <td>{{ correlation_data_slice[trait].description }}</td>
-                <td>Chr{{ correlation_data_slice[trait].chromosome }}: {{ correlation_data_slice[trait].mb }}</td>
-                {# <td>{{ correlation_data_slice[trait][2].__dict__ }}</td> #}
+                <td>{{ trait.name }}</td>
+                <td>{{ trait.symbol }}</td>
+                <td>{{ trait.alias }}</td>
+                <td>{{ trait.description }}</td>
+                <td>Chr{{ trait.chr }}: {{ trait.mb }}</td>
+                <td>{{ trait.mean }}</td>
+                <td>{{ trait.lrs }}</td>
+                <td>Chr{{ trait.locus_chr }}: {{ trait.locus_mb }}</td>
+                <td>{{ trait.sample_r }}</td>
+                <td>{{ trait.num_overlap }}</td>
+                <td>{{ trait.sample_p }}</td>
             </tr>
         {% endfor %}
         </tbody>