我有~100个wav音频文件,采样率为48000只相同物种的鸟我想测量它们之间的相似性.我从波形文件开始,但我知道(非常轻微)更多关于处理图像的事情,所以我假设我的分析将在光谱图像上.我有几个不同日子的鸟类样本.
以下是数据的一些示例,以及(未标记轴的道歉; x是样本,y是线性频率乘以10,000 Hz):
这些鸟鸣显然出现在"单词"中,不同的歌曲部分可能是我应该比较的水平; 相似词之间的差异以及各种词的频率和顺序.

我想尝试取出蝉噪声 - 蝉鸣频率非常一致,并且倾向于相位匹配,所以这不应该太难.

似乎某些阈值可能有用.
我被告知大多数现有文献都使用基于歌曲特征的手动分类,如潘多拉音乐基因组计划.我想成为Echo Nest ; 使用自动分类.更新:很多人都研究过这个.
我的问题是我应该使用哪些工具进行分析?我需要:
我选择的武器是numpy/scipy,但openCV可能在这里有用吗?
编辑:经过一些研究和史蒂夫的有用答案后,更新了我的术语和重写方法.
因为我经常不使用优秀的运动和文本对象是Vim中,(既然"按住'J’是一个Vim反模式"),我想vim的帮助我在训练中使用这些替代hjkl连续使用几次.
当我开始使用vim时,我很生气,我没有使用hjkl移动,而是使用箭头键.在此提醒不能做到这一点,我重新映射箭头键来让自己从使用它们-我知道使用家用行导航将是一个更好的长期计划,所以我切出的积极强化我想先有工作箭得到键.
map <left> <nop>
map <right> <nop>
# I quickly removed nop's for up and down because using
# the mouse wheel to scroll is sometimes useful
Run Code Online (Sandbox Code Playgroud)
我不再需要在我的.vimrc中使用这些映射,因为这非常有效,而且我很快就切换了,而不必有意识地这样做.以类似的方式,我现在也想切断我对基本运动键的重复使用hjkl.我想象的是这样的:
let g:last_mov_key = 'none'
let g:times_mov_key_repeated = 0
function! MovementKey(key)
if (g:last_mov_key == a:key)
let g:times_mov_key_repeated = g:times_mov_key_repeated + 1
else
let g:last_mov_key = a:key
let g:times_mov_key_repeated = 0
endif
if g:times_mov_key_repeated > 3
echo "Negative Reinforcement!"
endif
endfunction
noremap j :call MovementKey('j')<CR>gj …Run Code Online (Sandbox Code Playgroud) 我是一名贸易统计员,我想了解如何建立一个可以将数据收集到数据库中的网站.对于个人用途,我使用Google表单来收集数据,并将所有内容填充到电子表格中.但是,这可能不适合更专业的环境,特别是当我们有多个页面/表格时.我想象两个用途:
显而易见的解决方案是聘请Web开发人员.但是,我喜欢在可管理的情况下自己做事.我想一个Web开发人员必须知道html,php和数据库知识(例如,MySQL或PostgreSQL).我在这些方面的经验仅限于在我的linux服务器上设置wordpress博客.我使用html的经验也很有限,因为我使用emacs org-mode从纯文本生成它们.我希望能够以最小的学习曲线听到解决方案.我的偏好当然是免费的开源软件和基于Linux的,但我想听听所有可用的解决方案(我们的数据管理器是Windows用户).
我最近阅读了一篇关于Linux Journal 的文章,其中提到了REDCap,但似乎你必须得到机构的许可才能使用.
我还在这篇文章上标记了"R",因为我想听听R用户在数据收集方面做了些什么.我最终将用R分析数据,但所有数据分析都从科学问题和数据收集开始.
谢谢!
更新2010年10月4日:感谢大家到目前为止的回复.看来,到目前为止提出的大多数第三方解决方案都将数据存放在供应商托管的数据库中.我想在SQL Server中存放所有数据.也就是说,来自Web的数据输入实时进入数据库,准备进行数据分析.
我已经开始将doctests集成到我的模块中.(Hooray!)这些文件往往是以脚本开头的文件,现在是一些带有CLI应用程序的函数__name__=='__main__',所以我不想在那里运行测试.我尝试了nosetests --with-doctest,但是我不想看到很多失败,因为在测试发现过程中,这个导入模块不包含doctests但需要导入我在这个系统上没有安装的东西,或者应该在特殊的情况下运行python安装.有没有办法可以运行我的所有doctests?
我已经考虑在vim中运行"import doctest; doctest.testfile(currentFilename)"以在当前模块中运行我的doctests,以及另一个运行所有测试的脚本 - 其他doctest用户做了什么?或者我应该使用doctest以外的东西?
我想找一个用户空间工具(最好是在Python中 - 禁止在任何我可以轻易修改的内容,如果它还没有我需要的那样)来替换我一直在使用的那个短脚本以下两件事:
例如,使用我当前的脚本,我可以在python提示符下
>>> import hosts
>>> hosts.run_commands(['users']*5)
Run Code Online (Sandbox Code Playgroud)
或者从命令行
% hosts.py "users" "users" "users" "users" "users"
Run Code Online (Sandbox Code Playgroud)
运行该命令users5次(通过从配置文件中检查至少5台计算机上的cpu负载和可用内存,找到可以运行该命令的5台计算机).除了我刚刚运行的脚本之外,应该没有作业服务器,并且在运行这些命令的计算机上没有工作人员守护程序或进程.
我还希望能够跟踪作业,在失败时再次运行作业等,但这些是我实际上并不需要的额外功能(在实际作业调度程序中非常标准).
我找到了很好的Python ssh库,比如classh和PuSSH,它们没有我想要的(非常简单的)负载均衡功能.在我想要的另一边是Condor或Slurm,正如我在澄清之前所说的那样,我想要更轻松的东西.那些会以正确的方式做事,但是通过阅读它们,它们听起来就像在用户空间中将它们旋转起来只有在我需要它们时才会让人烦恼.这不是专用群集,我在这些主机上没有root访问权限.
我目前正计划使用一个包装器周围的包装器,当我需要知道如果我找不到其他东西时他们有多忙时,会对计算机进行一些基本的轮询.
它叫什么?我不知道如何搜索它; 我试着用谷歌把它称为省略号.我不是指在交互式输出中使用点来表示没有显示完整数组,但是正如我正在查看的代码中那样,
xTensor0[...] = xVTensor[..., 0]
从我的实验来看,它似乎与:索引中的功能相似,但代表多个:,x[:,:,1]相当于x[...,1].
标题编辑:固定大写并添加'for python'.
有没有更好或更标准的方式来做我正在描述的事情?我想要这样的输入:
[1, 1, 1, 0, 2, 2, 0, 2, 2, 0, 0, 3, 3, 0, 1, 1, 1, 1, 1, 2, 2, 2]
转化为这个:
[0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 2, 0]
或者更好的是,这样的东西(描述类似的输出不同,但现在不限于整数):
标签: [1, 2, 3, 1, 2]
位置(其中1表示第一个占用位置,根据我的matplotlib图): [2, 7, 12.5, 17, 21]
输入数据是分类图的分类数据 - 在下图中,分组图共享一个分类特征,我只想为该组标记一次.我将使用2个轴作为两个不同的变量,但我认为这是现在的重点.
注意:此图像不反映任何一组样本数据 - 它只是为了实现将类别分组在一起的想法.组a应标记为x = 5,因为在前两个和第二个垂直数据组之间有一个空格,0是右侧的一行.

这是我得到的:
data = [1, 1, 1, 2, 2, 2, 2, 2, …Run Code Online (Sandbox Code Playgroud) zsh bash完成支持complete -C 'custom command for completion' command吗?
我以前在脚本中编写了一个bash完成函数,我启用了它
complete -C 'tu --get-bash-completion' tu
Run Code Online (Sandbox Code Playgroud)
我希望使用zsh的同事能够使用完成,所以我尝试使用这样的.zshrc文件测试bash完成兼容性:
autoload compinit
compinit
autoload bashcompinit
bashcompinit
complete -C 'tu --get-bash-completion' tu
Run Code Online (Sandbox Code Playgroud)
当我尝试使用此完成时,看起来zsh正在调用完成脚本而没有bash调用它的参数(firstword,current_word,previous_word).
tom-mba:~ tomb$ zsh
tom-mba% tu Traceback (most recent call last):
File "/usr/local/bin/tu", line 7, in <module>
execfile(__file__)
File "/Users/tomb/Dropbox/code/TrelloCardUpdate/bin/tu", line 3, in <module>
cli.CLI()
File "/Users/tomb/Dropbox/code/TrelloCardUpdate/trellocardupdate/cli.py", line 156, in CLI
getcompletion(sys.argv[i+1:i+4])
File "/Users/tomb/Dropbox/code/TrelloCardUpdate/trellocardupdate/cli.py", line 86, in getcompletion
assert len(args) == 3, [args, sys.argv]
AssertionError: [[], ['/usr/local/bin/tu', '--get-bash-completion']]
Run Code Online (Sandbox Code Playgroud)
我在mac上使用自制软件安装的zsh:
tom-mba:~ tomb$ zsh …Run Code Online (Sandbox Code Playgroud) 在终端仿真器中似乎有一些行与行的概念,我想知道更多.
下面的Python脚本显示三行'a'并等待,然后有三行'b'.
import sys, struct, fcntl, termios
write = sys.stdout.write
def clear_screen(): write('\x1b[2J')
def move_cursor(row, col): write('\x1b['+str(row)+';'+str(col)+'H')
def current_width(): #taken from blessings so this example doesn't have dependencies
return struct.unpack('hhhh', fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, '\000' * 8))[1]
clear_screen()
for c in 'ab':
#clear_screen between loops changes this behavior
width = current_width()
move_cursor(5, 1)
write(c*width+'\n')
move_cursor(6, 1)
write(c*width+'\n')
move_cursor(7, 1)
write(c*width+'\n')
sys.stdout.flush()
try: input() # pause and wait for ENTER in python 2 and 3
except: pass
Run Code Online (Sandbox Code Playgroud)

如果在此休息期间将终端窗口宽度缩小一个字符,您会看到

这似乎很合理 - 每条线都是单独包裹的.当我们再次点击进入打印b …
在导入这些模块后立即重新加载这些模块是否有任何可想到的意义?这是我正在审查的代码让我惊讶:
import time
import sys
import os
import string
import pp
import numpy
import nrrd
reload(nrrd)
import smooth as sm
reload(sm)
import TensorEval2C as tensPP
reload(tensPP)
import TrackFiber4C as trackPP
reload(trackPP)
import cmpV
reload(cmpV)
import vectors as vects
reload(vects)
Run Code Online (Sandbox Code Playgroud)
编辑:我建议这可能会使.pyc文件的创建更有可能,但是有几个人指出这种情况每次都是第一次发生.
听说科学计算项目(恰好是这里描述的随机纤维束成像方法)我目前正在为一名研究人员运行,我们的50个节点集群需要4个月,研究人员要求我检查其他选项.该项目目前正在使用并行python将4d数组的块分配到不同的集群节点,并将处理后的块重新组合在一起.
我目前正在处理的工作可能过于粗糙,(5秒到10分钟,我不得不在并行python中增加超时默认值)并且我估计通过重写它可以将进程加速2-4倍为了更好地利用资源(将数据拆分和重新组合在一起花费的时间太长,也应该并行化).大部分工作都是由numpy数组完成的.
我们假设2-4次是不够的,我决定从我们的本地硬件中获取代码.对于像这样的高吞吐量计算,我的商业选择是什么以及如何修改代码?
python parallel-processing mapreduce amazon-ec2 parallel-python
我继承了在集群上使用Parallel Python维护一些科学计算.使用Parallel Python,作业将被提交给ppserver,在这种情况下,它会与其他计算机上已经运行的ppserver进程进行通信,将任务输出到ppworkers进程.
我想使用标准库日志记录模块来记录提交给ppserver的函数中的错误和调试信息.由于这些ppworkers作为单独的进程运行(在不同的计算机上),我不确定如何正确构建日志记录.我必须为每个进程登录一个单独的文件吗?也许有一个日志处理程序可以让它变得更好?
另外,我想要报告什么计算机遇到错误的过程,但我正在编写登录的代码可能不知道这些事情; 也许这应该发生在ppserver级别?
(在并行Python论坛上交叉发布的问题的版本,如果我从非SO用户那里得到关于此的内容,我会在这里发布答案)