Python 复杂音乐分析的数据库设计
我是一名研究动物行为的研究员,我正试图找出构建数据的最佳方法。我向动物们呈现简短的音乐曲调,并记录它们的反应 数据 每个曲调由1-10个音符组成,从跨越几个八度的大调+小调音阶中随机选择。每个音符的播放时间固定,但在短时间内随机播放 然后我记录动物对曲调的二元反应(喜欢/不喜欢) 我每天为动物播放超过500首曲子,持续超过300天。我还结合了超过10只动物的数据 我还需要存储变量,如每天的试验编号(是否为第一首曲子?最后一首曲子?等)和日期,以便我知道由于外部问题(例如,100次试验后或一整天动物停止反应)需要排除哪些数据点 分析 我试图揭示在这些随机产生的曲调中,什么样的音乐结构会导致动物的好恶。基于之前的研究,我主要是以假设驱动的方式来做这件事的。我需要在我的数据集上执行的查询是这样的:“同一个八度音阶中有更多的音符会增加曲调的可听性吗?” 随着数据的积累,我还在全年对数据集进行分析 我尝试过的 我将所有动物的数据合并成一个巨大的清单,其中包含dicts。每个dict代表一次试验及其相关的:Python 复杂音乐分析的数据库设计,python,data-modeling,Python,Data Modeling,我是一名研究动物行为的研究员,我正试图找出构建数据的最佳方法。我向动物们呈现简短的音乐曲调,并记录它们的反应 数据 每个曲调由1-10个音符组成,从跨越几个八度的大调+小调音阶中随机选择。每个音符的播放时间固定,但在短时间内随机播放 然后我记录动物对曲调的二元反应(喜欢/不喜欢) 我每天为动物播放超过500首曲子,持续超过300天。我还结合了超过10只动物的数据 我还需要存储变量,如每天的试验编号(是否为第一首曲子?最后一首曲子?等)和日期,以便我知道由于外部问题(例如,100次试验后或一整天动
- 动物ID#
- 会话ID#
- 试用ID#
- 二进制响应(喜欢/不喜欢)
- 由dict定义的tune。键只是播放的音符,值表示何时播放音符。例如,
指的是只有一个音符的曲调,从第一个八度开始,从30毫秒到100毫秒播放{'1A#':[30100]}
在构建我的数据时,有哪些可能的替代方案 我会使用支持JSON的关系数据库,例如postgresql。这样,您就可以将tune存储为JSON对象,而不必担心tune的结构。数据模型的其余部分似乎是相关的。我会为动物创建一个表格,然后为试验/会议创建一个表格。因此,您的会话表可能如下所示
SessionId (integer, primary key) | TrialId (integer) | AnimalId (integer, foreign key) | tune (json) | response (bool)
我将使用支持JSON的关系数据库,例如postgresql。这样,您就可以将tune存储为JSON对象,而不必担心tune的结构。数据模型的其余部分似乎是相关的。我会为动物创建一个表格,然后为试验/会议创建一个表格。因此,您的会话表可能如下所示
SessionId (integer, primary key) | TrialId (integer) | AnimalId (integer, foreign key) | tune (json) | response (bool)
我认为问题的难点在于,对于不同的查询,您可能需要不同格式的刺激(调优)数据。我想做的是为你的刺激(曲调)创建一个相对简单的数据结构,并为每个独特的曲调添加一个独特的标识符。如果您的字典结构可以放入内存,那么您可以在这里使用字典结构 然后,我会将您的试验放入一个具有相应刺激ID的关系数据库中。数据库中的每个试用条目都有完整的主题和会话信息 对于每个分析排列,您将执行两个步骤来获取相关数据:
我希望这会有所帮助我认为问题的难点在于,您可能需要针对不同的查询使用不同格式的刺激(调整)数据。我想做的是为你的刺激(曲调)创建一个相对简单的数据结构,并为每个独特的曲调添加一个独特的标识符。如果您的字典结构可以放入内存,那么您可以在这里使用字典结构 然后,我会将您的试验放入一个具有相应刺激ID的关系数据库中。数据库中的每个试用条目都有完整的主题和会话信息 对于每个分析排列,您将执行两个步骤来获取相关数据:
我希望这会有帮助我会使用关系数据库,将一首曲子的每个元素记录在一个单独的列中,即note1、note2、note3、八度、持续时间、播放时间、播放动物等,这样代码更清晰,更不容易出错。我会使用关系数据库,将一首曲子的每个元素记录在一个单独的列中,即note1,注2、注3、八度、持续时间、播放时间、播放动物等都应该使代码更清晰,更不容易出错。