这已经被困了一天多了,我找到的例子都没有用.我是SQLALCHEMY的新手,我发现文档不是很有启发性.
查询(到目前为止):
prey = alias(ensembl_genes, name='prey')
bait = alias(ensembl_genes, name='bait')
query = db.session.query(tap,prey,bait).\
join(prey, tap.c.TAP_PREY_ENSEMBL_GENE_ID==prey.c.ENSEMBL_GENE_ID).\
join(bait, tap.c.TAP_BAIT_ENSEMBL_GENE_ID==bait.c.ENSEMBL_GENE_ID).\
filter(\
or_(\
tap.c.TAP_PREY_ENSEMBL_GENE_ID=='ENSG00000100360',\
tap.c.TAP_BAIT_ENSEMBL_GENE_ID=='ENSG00000100360'\
)\
).\
order_by(desc(tap.c.TAP_UNIQUE_PEPTIDE_COUNT))
Run Code Online (Sandbox Code Playgroud)
tap是指相互作用基因的表格.一个交互者被称为"诱饵"而另一个被称为"猎物".猎物和诱饵是同一个表的别名,其中包含有关这些基因的其他信息.目的是选择与给定基因'ENSG00000100360'的所有相互作用作为诱饵或猎物.
问题:
这个查询返回大约20个左右的列,但我只需要六个特定的列,每个原始表中有两个(我也想重命名它们).从interwebz上找到的例子我想我应该补充:
options(
Load(tap).load_only('TAP_UNIQUE_PEPTIDE_COUNT','TAP_SEQUENCE_COVERAGE'),
Load(prey).load_only('ENSEMBL_GENE_SYMBOL','ENSEMBL_GENE_ID'),
Load(bait).load_only('ENSEMBL_GENE_SYMBOL','ENSEMBL_GENE_ID')
)
Run Code Online (Sandbox Code Playgroud)
但这给了我以下错误:
文件"/Users/jvandam/Github/syscilia/tools/BDT/quest/blueprints/genereport.py",第246行,在createTAPMSView中加载(点击).load_only('TAP_UNIQUE_PEPTIDE_COUNT','TAP_SEQUENCE_COVERAGE')文件"/ opt/local /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sqlalchemy/orm/strategy_options.py",第82行,在init self.path = insp._path_registry中AttributeError:'Table'对象没有属性'_path_registry'
我无法在谷歌上找到关于如何处理这件事的任何事情.sqlalchemy表对象是从数据库表元数据创建的.
我试图使用sqlalchemy orm语句模拟的是:
SELECT
prey.ENSEMBL_GENE_SYMBOL AS PREY_ENSEMBL_GENE_SYMBOL,
prey.ENSEMBL_GENE_ID AS PREY_ENSEMBL_GENE_ID,
bait.ENSEMBL_GENE_SYMBOL AS BAIT_ENSEMBL_GENE_SYMBOL,
bait.ENSEMBL_GENE_ID AS BAIT_ENSEMBL_GENE_ID,
t.TAP_UNIQUE_PEPTIDE_COUNT AS UNIQUE_PEPTIDE_COUNT,
t.TAP_SEQUENCE_COVERAGE AS SEQUENCE_COVERAGE
FROM TAP as t
INNER JOIN ENSEMBL_GENES AS prey
ON tap.TAP_PREY_ENSEMBL_GENE_ID=prey.ENSEMBL_GENE_ID
INNER JOIN ENSEMBL_GENES AS bait
ON t.TAP_BAIT_ENSEMBL_GENE_ID=bait.ENSEMBL_GENE_ID …Run Code Online (Sandbox Code Playgroud) 我有两个 SQLite 数据库,其中包含需要使用 SQLalchemy 加入的表。由于某些原因,我无法将所有表合并到一个 SQLite 数据库中。我正在使用 SQLalchemy ORM。我无法在网上找到任何符合我的具体情况的解决方案。
我的问题原则上与SQLAlchemy error query join across database 相同,但原始海报的问题是使用与我的用例不匹配的不同解决方案解决的。
我对 Stackoverflow 的聪明人的问题:
我想模拟以下 SQL 查询:
SELECT DISTINCT g.gene_symbol, o.orthofinder_id FROM eukarya.genes AS g JOIN annotations.orthofinder AS o ON g.gene_id=o.gene_id;
Run Code Online (Sandbox Code Playgroud)
此查询使用附加了两个数据库文件的 SQliteStudio 可以正常工作。
我目前用来描述元数据的代码:
eukarya_engine = create_engine('sqlite:///eukarya_db.sqlite3')
annotations_engine = create_engine('sqlite:///eukarya_annotations_db.sqlite3')
meta = MetaData() # This allows me to define cross database foreign keys
Eukarya = declarative_base(bind=eukarya_engine, metadata=meta)
Annotations = declarative_base(bind=annotations_engine, metadata=meta)
# I did the above in the hopes that by binding …Run Code Online (Sandbox Code Playgroud) 我正在开发一个相当复杂的snakemake工作流程,它产生了数十万个工作。一切正常...工作流程执行,DAG 创建(感谢新的检查点实现),但速度慢得难以忍受。我认为瓶颈在于检查已成功完成的工作,然后再继续下一个工作。更烦人的是,它对一批中启动的所有作业按顺序执行此操作,并且仅当所有检查都成功时才执行下一批。每个作业的执行时间大约需要 1 到 2 秒,并且是并行完成的(每个作业 1 个核心),但是 Snakemake 会一次循环执行一个作业完成检查,每个作业需要 5 到 10 秒。因此每批的整个过程需要几分钟。请参阅下面的部分日志,其中显示了同一批次中运行的连续作业的不同时间戳。时间戳之间大约有 11 秒的差异
Finished job 42227.
5853 of 230419 steps (3%) done
[Thu Feb 28 09:41:09 2019]
Finished job 119645.
5854 of 230419 steps (3%) done
[Thu Feb 28 09:41:21 2019]
Finished job 161354.
5855 of 230419 steps (3%) done
[Thu Feb 28 09:41:32 2019]
Finished job 160224.
5856 of 230419 steps (3%) done
[Thu Feb 28 09:41:42 2019]
Finished job 197063.
5857 of 230419 steps (3%) …