问题标签 [datajoint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
25 浏览

datajoint - 调用 .alter() 时出现 NotImplementedError (0.13.1)

我在 datajoint python 上0.13.1。在我的架构中的表上执行.alter()时,我收到以下错误消息:

我究竟做错了什么?

0 投票
1 回答
32 浏览

datajoint - 重命名/替换主键以跨模式查询

我目前有两个用于处理钙成像数据的独立模式,其中我使用了两种不同的预处理方法。我要做的最大目标是使用来自 1 个模式的源作为参考,并在第二个模式中提取相应的源。我已经完成了源匹配,以便我知道 schema1 中的每个神经元在 schema2 中对应的神经元是什么。

在 schema1 中的表中,每个神经元都有一个称为整数主键neurID和一个外键 ( schema2ID),该外键与 schema2 中该神经元的相应主键。我遇到的问题是在schema2 中,每个神经元的主键称为= 15, = 1)。neurIDneurIDschema2IDneurIDschema1ID

理想情况下,我想要做的是,一旦我拥有来自 1 个模式的所有神经元,我在 schema2 中有它们的相应 ID,我将用neurID外键替换它们的主键,schema2ID以便我现在可以使用它来获取相应的神经元在 schema2 中(因为schema2ID在 schema1 中与neurIDschema2 主键相同)。有没有办法以这种方式重命名主键?或者我可以通过创建新表来使用其他一些 hacky 方法吗?

(请注意,由于我在每个模式中还有另一个主键“targID”,因此这一切都变得更加复杂,索引在不同模式之间也并不意味着同样的事情。)

我真的很感激任何提示,因为我很困惑。也很高兴通过 DM 等更直接地显示代码。谢谢!

0 投票
1 回答
122 浏览

python - 是否有一种首选方法可以让下游表从数据联合中的两个上游表之一获取数据?

我们正在尝试构建灵活的模式,例如,我们可能有来自两个地方之一的单个单元,或者从原始数据开始的 SpikeSorting 管道,或者从已经完成了峰值排序的文件中导入。

我们希望能够将这些表中任何一个相关的数据输入到下游的相同分析函数​​/表中。

我们考虑过让 SpikeSorting 表成为计算和导入条目的混合体,但这似乎有点难看。有没有更好的办法?

0 投票
1 回答
73 浏览

datajoint - Datajoint autopopulate make function error: DataJointError: A relationship must have primary dependencies for auto-populate to work

我收到以下错误:

“DataJointError:关系必须具有自动填充工作的主要依赖项”,我认为这是一个非常基本的开始,首先定义一个手动表,然后是一个导入的表。

在这种情况下,我们有一个文件夹中的 matlab 文件名手动表。然后,我们希望使用这些文件中的数据自动填充导入的表。所以这些表之间的依赖关系应该是一对一的匹配。但是,在尝试填充时,我们会收到以下错误,如下所示: DataJointError:关系必须具有主要依赖项,自动填充才能在尝试实现 make 函数时起作用。

上游会话表具有主键“文件名”,我们希望导入的表定义为:

我已经尝试关闭 jupyter notebook 并重新打开、重新启动内核等。在此先感谢您的帮助!

0 投票
1 回答
34 浏览

pipeline - Datajoint科学管道:当属性可以改变并且数据来自数组时如何有效地存储数据和设计管道

我们需要将神经科学动物行为训练课程的输出加载到我们的数据联合数据库管道中。我们使用一个名为Bpod的平台进行实验,该平台在 Arduino 上实现了一个有限状态机来控制硬件和记录事件。例如,我们希望能够分析每次试验的响应时间,即有限状态机中两个状态之间的时间间隔。

关于状态和事件时间的数据保存在每个试验的 matlab 结构中,每个状态都有一个字段,其中包含一个数组,其中包含该状态的开始和结束时间(状态可以在试验期间多次出现,因此数组例如,试验中的状态可以具有大小(3,2))。

我的问题是将这些数据存储在 datajoint 数据库中的最有效方法是什么?现在,我们有一个导入表 Trials,其中每个 Trial 都有一个条目。将每个状态的开始时间存储在某种部件表中具有浮点值的列中似乎是最有效的,但我不确定如何以编程方式执行此操作,因为(1)状态可以多次发生并且(2)无需为每个状态硬编码一个部分表(可能的状态列表也会随着我们随着时间的推移调整行为范式而变化,并且不必重建整个数据库来添加新状态会很好)。或者,我们最初设想 Trials 表中的每个状态都有一个列,但是数据必须是 blob,我猜这可能效率低得多?任何建议表示赞赏!

0 投票
1 回答
31 浏览

pipeline - Datajoint:关于如何处理神经科学数据管道中需要人工审查的阶段的建议?

想知道在基于数据库的科学数据管道 (datajoint) 中如何处理需要手动审查的步骤是否有很好的示例或建议。例如,我们想通过自动化管道处理我们的神经元钙成像数据的预处理和去噪/去混合,但是每个视频和每个单元都需要在输入数据库进行进一步分析之前进行人工审查。处理此类步骤的最佳做法是什么?添加手动表以仅将通过审核的数据添加到下游管道阶段?将手动审查之前的步骤与管道的其余部分分开(在他们自己的架构中?)?谢谢!

0 投票
1 回答
38 浏览

datajoint - 从表中备份/删除的最快方法

我正在尝试从具有 > 50M 行的表中备份一些数据。桌子看起来像这样

我的计划是

  1. 获取有限数量的 KEYS(即fetch('KEY', limit=some_large_number)
  2. 检索这些 KEYS 的表条目
  3. 将数据块保存在磁盘上
  4. 删除属于 KEYS 的表条目
  5. 重来 ...

只是获取,比如说 1_000_000 个条目,相当快(几秒钟),但是如果我想通过检索主键 - > 获取数据 - > 删除这些条目 - 我基本上被困在获取数据(> 20 分钟) ~ 100_000 个条目或超时(?))。

使用数据联合逻辑执行此任务的最优雅/最省时的方法是什么?

(数据联合python版'0.13.2'

0 投票
2 回答
34 浏览

datajoint - DataJoint:删除表时出现 IntegrityError

我正在设计我们的数据库,并Sessioncommon_exp架构中调用了一个表,其定义如下:

我想更改某些属性的名称,因此想删除表。但是,我受到了这个错误的欢迎:

如您所见,该表是空的,并且没有进一步的依赖关系。错误消息也没有告诉我哪个键产生了问题,或者哪个其他表,所以我有点困惑问题可能出在哪里。

我正在使用 root 帐户访问数据库,因此权限应该不是问题。从其他模式中删除表是可行的,只是这个模式会产生这个错误。

0 投票
1 回答
56 浏览

python - 是否可以实施这样它利用代替?

是否有可能实现populate它使用insert而不是insert1?对于大型数据集,我收到服务器超时错误,因为使用insert1需要数小时来填充表。这是我的目的:

我想要的是这样的

有点插入字典列表并能够调用填充方法。有什么建议么?

过去,我实现了下面的 make 函数,但是使用这个函数我无法调用 populate 。

0 投票
1 回答
43 浏览

datajoint - 无法重新填充 ElectrodeGroup 数据联合表

我是加州大学旧金山分校 Loren Frank 实验室的一名研究员,使用数据联合和 nwb 格式的文件。我对定义 ElectrodeGroup 表中条目的代码进行了一些更改,并希望通过删除表中的条目并使用新代码重新生成它来测试这些。我能够删除该条目,但无法重新填充它。特别是,当我运行 ElectrodeGroup.populate() 或 ElectrodeGroup.populate({"nwb_file_name": my_file_name}) 时,不会对表进行任何更改。我确认我删除并尝试重新生成的电极组是在原始 nwb 文件中定义的。我正在寻求有关为什么 populate 命令似乎在这里不起作用的输入。提前感谢您的帮助!