Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions src/guidescanpy/flask/blueprints/library.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ def library(
frac_control: float = 0.0,
append5: bool = False,
):
# TODO: Why is this \r\n and not just \n?
genes = genes.splitlines()

library_info = get_library_info_by_gene(organism, genes, n_guides)
Expand All @@ -64,7 +63,6 @@ def library(
results = []
for i, genes in enumerate(genes_by_pool_index):
n_essential_genes = round(frac_essential * len(genes))
# TODO: randomize
essential_genes = get_essential_genes(organism, n_essential_genes)
essential_genes_library_info = get_library_info_by_gene(
organism, essential_genes, n_guides
Expand All @@ -73,7 +71,6 @@ def library(
n_control_guides = round(
frac_control * len(genes)
) # TODO: Clojure code does this, but it doesn't seem correct
# TODO: randomize
control_guides = get_control_guides(organism, n_control_guides)

for gene in genes:
Expand Down
14 changes: 9 additions & 5 deletions src/guidescanpy/flask/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ def create_region_query(organism, region):
results = conn.execute(query, {"organism": organism, "entrez_id": region})
for row in results.mappings():
return_value = dict(row)
# TODO: sqlite backend seems to return boolean as int

return_value["sense"] = bool(return_value["sense"])
return return_value

Expand Down Expand Up @@ -132,17 +132,21 @@ def get_library_info_by_gene(organism, genes, n_guides=6):
def get_essential_genes(organism, n=1):
conn = get_connection()
query = text(
"SELECT gene_symbol FROM essential_genes WHERE organism = :organism LIMIT :n"
"SELECT gene_symbol FROM essential_genes WHERE organism = :organism ORDER BY RANDOM() LIMIT :n"
)
results = conn.execute(query, {"organism": organism, "n": n})
return [r[0] for r in results] # TODO: Ugly!

return_value = []
for row in results.mappings():
return_value.append(row["gene_symbol"])
return return_value


def get_control_guides(organism, n=1):
conn = get_connection()
# TODO: Order by?

query = text(
"SELECT * FROM libraries WHERE organism = :organism AND (grna_type='safe_targeting_control' OR grna_type='non_targeting_control') LIMIT :n"
"SELECT * FROM libraries WHERE organism = :organism AND (grna_type='safe_targeting_control' OR grna_type='non_targeting_control') ORDER BY RANDOM() LIMIT :n"
)
results = conn.execute(query, {"organism": organism, "n": n})
return [dict(row) for row in results.mappings()]
Expand Down
Loading