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

2024-10-17 10:23:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个研究动物行为的研究人员,我正试图找出构建数据的最佳方法。我向动物们呈现简短的音乐曲调,并记录它们的反应。你知道吗

数据

每个曲调由1-10个音符组成,这些音符是从几个八度音阶的大音阶和小音阶中随机选择的。每个音符都有一个固定的持续时间,但在短时间内随机播放。你知道吗

然后我记录动物对音调的二元反应(喜欢/不喜欢)。你知道吗

我每天为动物演奏500首曲子,持续300天。我还结合了来自>;10只动物的数据。你知道吗

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

分析

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

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

我尝试过的

我把所有动物的数据合并成一个巨大的列表,其中包含dicts。每个dict代表一个单独的试验及其相关的:

  • 动物身份证
  • 会话ID
  • 试用ID
  • 二进制响应(喜欢/不喜欢)
  • 音调,由一个dict定义。键就是演奏的音符,值表示演奏音符的时间。例如{'1A#':[30,100]}是指只有一个音符的曲调,从第一个八度开始,从30毫秒到100毫秒

我把它保存到一个pickle文件中。每天做完所有的动物后,我都会更新pickle文件。通过加载更新的pickle文件,我大约每周运行一次数据分析。你知道吗

我一直在寻找将我的数据重新构造成数据库或数据帧格式,因为1)序列化数据和2)查询的速度,以及3)可能更干净的代码,而不是处理嵌套的dict。我最初认为我的数据自然会适合某种表结构,因为我的实验采用了逐次试验的结构。不幸的是,表中曲调的定义似乎很棘手,因为曲调实际上没有固定的结构。你知道吗

在构建我的数据时,可能的替代方案是什么?你知道吗


Tags: 文件数据id音乐记录结构pickledict
1条回答
网友
1楼 · 发布于 2024-10-17 10:23:42

我认为问题的难点在于,对于不同的查询,您可能需要不同格式的刺激(tune)数据。我想做的是为你的刺激(曲调)建立一个相对简单的数据结构,并为每个独特的曲调添加一个独特的标识符。如果你的字典结构能放入内存中,你可能不用在这里使用字典结构。你知道吗

然后我将把你的试验放入一个带有相应刺激ID的关系数据库中。数据库中的每个试用条目都有完整的主题和会话信息。你知道吗

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

  1. 利用刺激数据结构对刺激进行过滤,得到相应的id列表。你知道吗
  2. 在您的试验数据库上执行查询,以获取具有此列表ID的试验。显然,您可以向查询中添加其他参数,以便根据主题、会话等进行筛选

我希望这有帮助

相关问题 更多 >