首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂音乐分析数据库的设计

复杂音乐分析数据库的设计
EN

Stack Overflow用户
提问于 2017-01-31 20:49:12
回答 2查看 65关注 0票数 0

我是一名研究动物行为的研究员,我试图找出最好的方法来构造我的数据。我向动物们呈现简短的音乐曲调,并记录他们的反应。

数据

每个曲调包括1-10个音符,从大调+小音阶中随机选取,跨越几个八度音阶.每个音符在一个固定的时间内播放,但在一些短时间窗口内随机播放。

然后,我记录动物对曲调的二进制反应(喜欢/不喜欢)。

我每天给这只动物演奏超过500首曲子,持续了300天。我还组合了来自>10只动物的数据。

我还需要存储变量,比如每天的试用编号(这是第一首曲子吗?)最后的?以及日期,以便我知道由于外部问题(例如,动物在100次试验后或一整天后停止反应)需要排除哪些数据点。

分析

我试图揭示在这些随机产生的曲调中,什么样的音乐结构会导致动物的好恶。我在之前的研究基础上,以一种假设驱动的方式来做这件事。我需要在我的数据集上执行的查询是这样的:“有更多的来自同一个八度音阶的音符会增加歌曲的讨人喜欢吗?”

随着数据的积累,我也在全年对数据集进行分析。

我试过什么

我把来自所有动物的数据合并成一个巨大的列表,其中包含了数据集。每个dict代表一个单一的审判及其相关的:

  • 动物ID#
  • 会话ID#
  • 试用ID#
  • 二进制响应(喜欢/不喜欢)
  • 调谐器,它是由dict定义的。这些键只是播放的音符,值表示播放音符的时间。例如,{'1A#':[30,100]}指的是一个只有一个音符的曲调,从第一个八度的A#,从30 to到100 to。

我把这个保存到一个泡菜文件里。每天做完所有的动物之后,我会更新泡菜文件。通过加载更新的泡菜文件,我大约每周运行一次数据分析。

我一直在寻找将我的数据重新构造成数据库或Pandas DataFrame格式,因为1)序列化数据和2)查询的速度,以及3)可能更干净的代码,而不是处理嵌套的dicts。我最初认为,由于我的实验的试用结构,我的数据自然可以很好地用于某种表格结构。不幸的是,表中曲目的定义似乎很棘手,因为这些曲目实际上没有固定的结构。

在构造我的数据时,有什么可能的替代方案?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-31 22:52:30

我认为问题的难点在于,您可能希望对不同查询的刺激(调优)数据进行不同的格式化。我想做的是为你的刺激(调音)制作一个相对简单的数据结构,并在每个唯一的曲调中添加一个唯一的标识符。如果您的结构适合内存,您可能可以在这里使用字典结构。

然后,我会将您的试验放入具有相应刺激ID的关系数据库中。数据库中的每个试用条目都将包含完整的主题和会话信息。

对于每个分析排列,您将执行两个步骤来获得相关数据:

  1. 使用刺激数据结构过滤刺激,并获取相应ID的列表。
  2. 在您的审判数据库上预先形成一个查询,以获得具有此列表ID的试验。您可以将其他参数添加到查询中,显然,可以根据主题、会话等进行筛选。

我希望这能帮上忙

票数 0
EN

Stack Overflow用户

发布于 2017-01-31 22:28:14

我将使用一个具有JSON支持的关系数据库,例如postgresql。这样,您就可以将调子存储为JSON对象,而不必担心调的结构。数据模型的其余部分似乎是关系型的。我会为动物制作一张桌子,然后为试验/会议准备一张桌子。所以您的会话表可能看起来像

代码语言:javascript
复制
SessionId (integer, primary key) | TrialId (integer) | AnimalId (integer, foreign key) | tune (json) | response (bool)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41967226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档