1

我是加州大学旧金山分校 Loren Frank 实验室的研究员。在依赖于两个上游表的计算数据联合表上调用填充时,这些表的条目具有相同的共享主属性值但不同的共享辅助属性值(“analysis_file_name”),我收到以下错误:

~/anaconda3/envs/nwb_datajoint/lib/python3.8/site-packages/datajoint/condition.py in assert_join_compatibility(expr1, expr2)
     63     if not isinstance(expr1, U) and not isinstance(expr2, U):  # dj.U is always compatible
     64         try:
---> 65             raise DataJointError(
     66                 "Cannot join query expressions on dependent attribute `%s`" % next(
     67                     r for r in set(expr1.heading.secondary_attributes).intersection(

DataJointError: Cannot join query expressions on dependent attribute `analysis_file_name`

为了弄清楚为什么会出现这种情况,我们实验室目前有一个工作流,其中所有将数据存储在 nwb 文件中的 datajoint 表都具有辅助属性“analysis_file_name”,其中包含存储数据的分析文件的名称。因此,跨两个表的条​​目可以共享主要属性的值,但次要属性“analysis_file_name”的值不同。上述错误似乎在“连接”两个这样的表时出现,例如在依赖于这些表的第三个表的自动填充期间。来自 datajoint 的人能否澄清是否加入两个表(例如,在依赖于这些表的第三个表的自动填充期间),必须是在共享主属性处具有相同值的条目在共享的次要属性上具有相同的值?感谢您对此的任何澄清。

4

1 回答 1

2

这确实是一个错误,我在这里提交了它:问题 980

我们正在研究解决方案PR981

问题是key_source在加入之前没有突出次要属性。

同时,解决方法是覆盖key_source在其中一个表中突出次要属性的属性。例如,如果两个父母是AB那么你需要定义方法:

@property
def key_source(self):
    return A.proj() * B
于 2022-01-10T03:07:26.283 回答