From c88c9fed0d0ba96c10714efd6cf6ac44822d829d Mon Sep 17 00:00:00 2001 From: Remi Planel <rplanel@pasteur.fr> Date: Thu, 30 Jan 2020 16:55:29 +0100 Subject: [PATCH] One entry per feature --- crisprbact/cli.py | 2 +- crisprbact/predict.py | 31 ++++++++++++++++++++++--------- pyproject.toml | 2 +- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/crisprbact/cli.py b/crisprbact/cli.py index ffa0946..4eeaebd 100644 --- a/crisprbact/cli.py +++ b/crisprbact/cli.py @@ -1,6 +1,6 @@ -from crisprbact.predict import on_target_predict from Bio import SeqIO import click +from crisprbact.predict import on_target_predict class Config(object): diff --git a/crisprbact/predict.py b/crisprbact/predict.py index 5b88c37..265a7f0 100644 --- a/crisprbact/predict.py +++ b/crisprbact/predict.py @@ -71,16 +71,29 @@ def on_target_predict(seq, genome=None, seed_size=7): off_target_df = compute_off_target_df( target["guide"], seed_size, records, genome_features ) - off_target_list = [] - features = off_target_df.loc[0:, "features"] - for feat in features: - for x in feat: - features_dict = {} - for k, feat in x.qualifiers.items(): + off_targets_list = [] + off_targets = off_target_df.loc[ + 0:, ["start", "end", "pampos", "features"] + ] + for index, off_t in enumerate(off_targets.values.tolist()): + + off_target_dict = { + "off_target_start": off_t[0], + "off_target_end": off_t[1], + "pampos": off_t[2], + } + for feat in off_t[3]: + feature_dict = { + "feat_strand": feat.location.strand, + "feat_start": feat.location.start, + "feat_end": feat.location.end, + "feat_type": feat.type, + } + for k, feat in feat.qualifiers.items(): if k != "translation": - features_dict[k] = " :: ".join(feat) - off_target_list.append(features_dict) - target.update({"off_targets": off_target_list}) + feature_dict[k] = " :: ".join(feat) + off_targets_list.append({**feature_dict, **off_target_dict}) + target.update({"off_targets": off_targets_list}) else: target.update({"off_targets": []}) return alltargets diff --git a/pyproject.toml b/pyproject.toml index 12da22e..7e03c6a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "crisprbact" -version = "0.2.1" +version = "0.3.0" license = "GPL-3.0" description = "Tools to design and analyse CRISPRi experiments" authors = ["David Bikard <david.bikard@pasteur.fr>", "Remi Planel <rplanel@pasteur.fr>"] -- GitLab