From 7e6886d7f65307519b8d26ec43a04f8d674fc4b6 Mon Sep 17 00:00:00 2001 From: BonfaceKilz Date: Tue, 4 May 2021 23:27:34 +0300 Subject: base: species: Format SQL queries --- wqflask/base/species.py | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) (limited to 'wqflask/base') diff --git a/wqflask/base/species.py b/wqflask/base/species.py index e3c29916..c3f4a9ab 100644 --- a/wqflask/base/species.py +++ b/wqflask/base/species.py @@ -32,28 +32,23 @@ class Chromosomes: def __init__(self, dataset=None, species=None): self.chromosomes = collections.OrderedDict() if species != None: - query = """ - Select - Chr_Length.Name, Chr_Length.OrderId, Length from Chr_Length, Species - where - Chr_Length.SpeciesId = Species.SpeciesId AND - Species.Name = '%s' - Order by OrderId - """ % species.capitalize() + query = ( + "SELECT Chr_Length.Name, Chr_Length.OrderId, Length " + "FROM Chr_Length, Species WHERE " + "Chr_Length.SpeciesId = Species.SpeciesId AND " + "Species.Name = " + "'%s' ORDER BY OrderId" % species.capitalize() + ) else: self.dataset = dataset - - query = """ - Select - Chr_Length.Name, Chr_Length.OrderId, Length from Chr_Length, InbredSet - where - Chr_Length.SpeciesId = InbredSet.SpeciesId AND - InbredSet.Name = '%s' - Order by OrderId - """ % self.dataset.group.name + query = ( + "SELECT Chr_Length.Name, Chr_Length.OrderId, " + "Length FROM Chr_Length, InbredSet WHERE " + "Chr_Length.SpeciesId = InbredSet.SpeciesId AND " + "InbredSet.Name = " + "'%s' ORDER BY OrderId" % self.dataset.group.name) logger.sql(query) results = g.db.execute(query).fetchall() - for item in results: self.chromosomes[item.OrderId] = IndChromosome( item.Name, item.Length) -- cgit 1.4.1 From 5e19a8a505dc7b8fa77fcc836892d1982c6ae36d Mon Sep 17 00:00:00 2001 From: BonfaceKilz Date: Tue, 4 May 2021 23:28:40 +0300 Subject: base: species: Remove unused import --- wqflask/base/species.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'wqflask/base') diff --git a/wqflask/base/species.py b/wqflask/base/species.py index c3f4a9ab..3ec7556d 100644 --- a/wqflask/base/species.py +++ b/wqflask/base/species.py @@ -1,6 +1,6 @@ import collections -from flask import Flask, g +from flask import g from utility.logger import getLogger -- cgit 1.4.1 From 453455b8bc6557c35ad279a208235f0b44aa251e Mon Sep 17 00:00:00 2001 From: BonfaceKilz Date: Tue, 4 May 2021 23:34:32 +0300 Subject: base: species: Rewrite TheSpecies class using a dataclass --- wqflask/base/species.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'wqflask/base') diff --git a/wqflask/base/species.py b/wqflask/base/species.py index 3ec7556d..3865f450 100644 --- a/wqflask/base/species.py +++ b/wqflask/base/species.py @@ -1,5 +1,7 @@ import collections +from dataclasses import dataclass +from typing import Optional, Dict from flask import g @@ -7,13 +9,18 @@ from utility.logger import getLogger logger = getLogger(__name__) +@dataclass class TheSpecies: - def __init__(self, dataset=None, species_name=None): - if species_name != None: - self.name = species_name + """Data related to species.""" + dataset: Optional[Dict] = None + species_name: Optional[str] = None + + def __post_init__(self): + if self.species_name is not None: + self.name = self.species_name self.chromosomes = Chromosomes(species=self.name) else: - self.dataset = dataset + self.dataset = self.dataset self.chromosomes = Chromosomes(dataset=self.dataset) -- cgit 1.4.1 From 151cbec41a9466f8f716f24ae85c7a5b09919e01 Mon Sep 17 00:00:00 2001 From: BonfaceKilz Date: Tue, 4 May 2021 23:35:38 +0300 Subject: base: trait: Remove logging information The log adds unnecessary noise in addition to creating unwanted side-effects. --- wqflask/base/species.py | 5 ----- 1 file changed, 5 deletions(-) (limited to 'wqflask/base') diff --git a/wqflask/base/species.py b/wqflask/base/species.py index 3865f450..ce646538 100644 --- a/wqflask/base/species.py +++ b/wqflask/base/species.py @@ -5,10 +5,6 @@ from typing import Optional, Dict from flask import g -from utility.logger import getLogger -logger = getLogger(__name__) - - @dataclass class TheSpecies: """Data related to species.""" @@ -54,7 +50,6 @@ class Chromosomes: "Chr_Length.SpeciesId = InbredSet.SpeciesId AND " "InbredSet.Name = " "'%s' ORDER BY OrderId" % self.dataset.group.name) - logger.sql(query) results = g.db.execute(query).fetchall() for item in results: self.chromosomes[item.OrderId] = IndChromosome( -- cgit 1.4.1 From 7c6a60d62389fa945f5a7264cde31cf00ddf9fc4 Mon Sep 17 00:00:00 2001 From: BonfaceKilz Date: Tue, 4 May 2021 23:46:00 +0300 Subject: base: species: Rewrite IndChromosome using a dataclass --- wqflask/base/species.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'wqflask/base') diff --git a/wqflask/base/species.py b/wqflask/base/species.py index ce646538..628bcc56 100644 --- a/wqflask/base/species.py +++ b/wqflask/base/species.py @@ -20,14 +20,15 @@ class TheSpecies: self.chromosomes = Chromosomes(dataset=self.dataset) +@dataclass class IndChromosome: - def __init__(self, name, length): - self.name = name - self.length = length + """Data related to IndChromosome""" + name: str + length: int @property def mb_length(self): - """Chromosome length in megabases""" + """Chromosome length in mega-bases""" return self.length / 1000000 -- cgit 1.4.1 From f2c3528cc81d228a62dfd9e362d0a1202412b098 Mon Sep 17 00:00:00 2001 From: BonfaceKilz Date: Tue, 4 May 2021 23:46:45 +0300 Subject: base: species: Rewrite Chromosomes using a dataclass --- wqflask/base/species.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'wqflask/base') diff --git a/wqflask/base/species.py b/wqflask/base/species.py index 628bcc56..db1975d4 100644 --- a/wqflask/base/species.py +++ b/wqflask/base/species.py @@ -1,6 +1,6 @@ -import collections - +from collections import OrderedDict from dataclasses import dataclass +from dataclasses import InitVar from typing import Optional, Dict from flask import g @@ -32,17 +32,21 @@ class IndChromosome: return self.length / 1000000 +@dataclass class Chromosomes: - def __init__(self, dataset=None, species=None): - self.chromosomes = collections.OrderedDict() - if species != None: + """Data related to a chromosome""" + dataset: InitVar[Dict] = None + species: Optional[str] = None + + def __post_init__(self, dataset): + self.chromosomes = OrderedDict() + if self.species is not None: query = ( "SELECT Chr_Length.Name, Chr_Length.OrderId, Length " "FROM Chr_Length, Species WHERE " "Chr_Length.SpeciesId = Species.SpeciesId AND " "Species.Name = " - "'%s' ORDER BY OrderId" % species.capitalize() - ) + "'%s' ORDER BY OrderId" % self.species.capitalize()) else: self.dataset = dataset query = ( -- cgit 1.4.1 From 941680d5266159fc5c9f2a65131bf283bd1cef1d Mon Sep 17 00:00:00 2001 From: BonfaceKilz Date: Tue, 4 May 2021 23:55:58 +0300 Subject: base: chromosomes: Fetch the chromosomes lazily --- wqflask/base/species.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'wqflask/base') diff --git a/wqflask/base/species.py b/wqflask/base/species.py index db1975d4..430bb675 100644 --- a/wqflask/base/species.py +++ b/wqflask/base/species.py @@ -39,7 +39,13 @@ class Chromosomes: species: Optional[str] = None def __post_init__(self, dataset): - self.chromosomes = OrderedDict() + if self.species is None: + self.dataset = dataset + + @property + def chromosomes(self): + """Lazily fetch the chromosomes""" + chromosomes = OrderedDict() if self.species is not None: query = ( "SELECT Chr_Length.Name, Chr_Length.OrderId, Length " @@ -48,7 +54,6 @@ class Chromosomes: "Species.Name = " "'%s' ORDER BY OrderId" % self.species.capitalize()) else: - self.dataset = dataset query = ( "SELECT Chr_Length.Name, Chr_Length.OrderId, " "Length FROM Chr_Length, InbredSet WHERE " @@ -57,5 +62,6 @@ class Chromosomes: "'%s' ORDER BY OrderId" % self.dataset.group.name) results = g.db.execute(query).fetchall() for item in results: - self.chromosomes[item.OrderId] = IndChromosome( + chromosomes[item.OrderId] = IndChromosome( item.Name, item.Length) + return chromosomes -- cgit 1.4.1 From dad8ae99812555fbb3d7e680f146c98de3322a57 Mon Sep 17 00:00:00 2001 From: BonfaceKilz Date: Wed, 5 May 2021 12:32:53 +0300 Subject: base: species: Remove redundant assignment --- wqflask/base/species.py | 1 - 1 file changed, 1 deletion(-) (limited to 'wqflask/base') diff --git a/wqflask/base/species.py b/wqflask/base/species.py index 430bb675..f303aabb 100644 --- a/wqflask/base/species.py +++ b/wqflask/base/species.py @@ -16,7 +16,6 @@ class TheSpecies: self.name = self.species_name self.chromosomes = Chromosomes(species=self.name) else: - self.dataset = self.dataset self.chromosomes = Chromosomes(dataset=self.dataset) -- cgit 1.4.1