diff options
-rwxr-xr-x | wqflask/base/trait.py | 78 | ||||
-rw-r--r-- | wqflask/other_config/nginx_conf/gn2python.conf | 41 | ||||
-rw-r--r-- | wqflask/other_config/nginx_conf/gn2python_lei.conf | 41 | ||||
-rw-r--r-- | wqflask/requirements.txt | 1 | ||||
-rw-r--r-- | wqflask/wqflask/search_results.py | 2 | ||||
-rw-r--r-- | wqflask/wqflask/templates/correlation_page.html | 33 |
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> |