小编Tho*_*mas的帖子

Birdsong音频分析 - 找出两个片段的匹配程度

我有~100个wav音频文件,采样率为48000只相同物种的鸟我想测量它们之间的相似性.我从波形文件开始,但我知道(非常轻微)更多关于处理图像的事情,所以我假设我的分析将在光谱图像上.我有几个不同日子的鸟类样本.

以下是数据的一些示例,以及(未标记轴的道歉; x是样本,y是线性频率乘以10,000 Hz): 替代文字 这些鸟鸣显然出现在"单词"中,不同的歌曲部分可能是我应该比较的水平; 相似词之间的差异以及各种词的频率和顺序. 替代文字

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

似乎某些阈值可能有用.

我被告知大多数现有文献都使用基于歌曲特征的手动分类,如潘多拉音乐基因组计划.我想成为Echo Nest ; 使用自动分类.更新:很多人都研究过这个.

我的问题是我应该使用哪些工具进行分析?我需要:

  • 过滤/降低一般噪音并保持音乐
  • 过滤出类似蝉的特定噪音
  • 对鸟类中的短语,音节和/或音符进行拆分和分类
  • 创建部件之间差异/相似性的度量; 一些可以捕捉鸟类之间差异的东西,最大限度地减少同一只鸟的不同召唤之间的差异

我选择的武器是numpy/scipy,但openCV可能在这里有用吗?

编辑:经过一些研究和史蒂夫的有用答案后,更新了我的术语和重写方法.

python audio pattern-recognition image-processing

19
推荐指数
2
解决办法
4388
查看次数

防止在vim中重复使用hjkl移动键

因为我经常不使用优秀的运动和文本对象是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)

vim

19
推荐指数
3
解决办法
5511
查看次数

统计数据收集:从网络到数据库

我是一名贸易统计员,我想了解如何建立一个可以将数据收集到数据库中的网站.对于个人用途,我使用Google表单来收集数据,并将所有内容填充到电子表格中.但是,这可能不适合更专业的环境,特别是当我们有多个页面/表格时.我想象两个用途:

  1. 一个网站,我可以将链接发送给其他人,以便他们可以填写,类似于Google表格.
  2. 一个只有授权用户才能登录才能填写数据的网站.想一想在研究中定期跟踪患者的环境.让临床医生将数据直接输入数据库是很酷的,因为他/她填写表格而不是让另一位数据分析师将他的书面表格转录到数据库中.

显而易见的解决方案是聘请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的数据输入实时进入数据库,准备进行数据分析.

database statistics webforms r

16
推荐指数
1
解决办法
1618
查看次数

适用于Python程序员的MATLAB

我之前使用过MATLAB,但我现在需要对它有一个很好的理解,而我最熟悉的语言是Python.与Python相比,是否需要描述MATLAB语言特性,习语,最佳实践或哲学?

有相当多的嗡嗡声和相关方向的资源,MATLAB到(Python +工具)转换,但这不是我需要去的方式.我应该交换哪些数据结构,我应该使用类,NumPy直觉可能出错的地方等等?

python matlab

13
推荐指数
2
解决办法
4963
查看次数

对文件夹中的所有python模块运行我的所有doctests,而不会因为导入错误而看到失败

我已经开始将doctests集成到我的模块中.(Hooray!)这些文件往往是以脚本开头的文件,现在是一些带有CLI应用程序的函数__name__=='__main__',所以我不想在那里运行测试.我尝试了nosetests --with-doctest,但是我不想看到很多失败,因为在测试发现过程中,这个导入模块不包含doctests但需要导入我在这个系统上没有安装的东西,或者应该在特殊的情况下运行python安装.有没有办法可以运行我的所有doctests?

我已经考虑在vim中运行"import doctest; doctest.testfile(currentFilename)"以在当前模块中运行我的doctests,以及另一个运行所有测试的脚本 - 其他doctest用户做了什么?或者我应该使用doctest以外的东西?

python testing doctest

7
推荐指数
2
解决办法
2451
查看次数

用于作业调度的Python库,ssh

我想找一个用户空间工具(最好是在Python中 - 禁止在任何我可以轻易修改的内容,如果它还没有我需要的那样)来替换我一直在使用的那个短脚本以下两件事:

  • 调查少于100台计算机(Fedora 13,它会发生这种情况)的负载,可用内存,如果看起来有人正在使用它们
  • 为作业选择好的主机,通过ssh运行这些作业.这些作业是执行任意命令行程序,读取和写入共享文件系统 - 通常是图像处理脚本或类似程序 - cpu,有时是内存密集型任务.

例如,使用我当前的脚本,我可以在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库,比如classhPuSSH,它们没有我想要的(非常简单的)负载均衡功能.在我想要的另一边是Condor或Slurm,正如我在澄清之前所说的那样,我想要更轻松的东西.那些会以正确的方式做事,但是通过阅读它们,它们听起来就像在用户空间中将它们旋转起来只有在我需要它们时才会让人烦恼.这不是专用群集,我在这些主机上没有root访问权限.

我目前正计划使用一个包装器周围的包装器,当我需要知道如果我找不到其他东西时他们有多忙时,会对计算机进行一些基本的轮询.

python ssh batch-processing job-scheduling condor

7
推荐指数
1
解决办法
5717
查看次数

什么...在numpy代码中意味着什么?

它叫什么?我不知道如何搜索它; 我试着用谷歌把它称为省略号.我不是指在交互式输出中使用点来表示没有显示完整数组,但是正如我正在查看的代码中那样,

xTensor0[...] = xVTensor[..., 0]

从我的实验来看,它似乎与:索引中的功能相似,但代表多个:,x[:,:,1]相当于x[...,1].

python numpy

6
推荐指数
1
解决办法
480
查看次数

用Python分组系列

标题编辑:固定大写并添加'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)

python matplotlib

6
推荐指数
1
解决办法
355
查看次数

在zsh中使用bash complete -C

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)

bash zsh zsh-completion

5
推荐指数
1
解决办法
855
查看次数

行与终端中的行

在终端仿真器中似乎有一些行与行的概念,我想知道更多.

演示我的意思是行与行

下面的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 …

python terminal ansi-escape terminal-emulator

5
推荐指数
1
解决办法
1428
查看次数

有没有可能立即重新加载Python模块?

在导入这些模块后立即重新加载这些模块是否有任何可想到的意义?这是我正在审查的代码让我惊讶:

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文件的创建更有可能,但是有几个人指出这种情况每次都是第一次发生.

python import reload

4
推荐指数
2
解决办法
266
查看次数

将并行Python代码移动到云端

听说科学计算项目(恰好是这里描述的随机纤维束成像方法)我目前正在为一名研究人员运行,我们的50个节点集群需要4个月,研究人员要求我检查其他选项.该项目目前正在使用并行python将4d数组的块分配到不同的集群节点,并将处理后的块重新组合在一起.

我目前正在处理的工作可能过于粗糙,(5秒到10分钟,我不得不在并行python中增加超时默认值)并且我估计通过重写它可以将进程加速2-4倍为了更好地利用资源(将数据拆分和重新组合在一起花费的时间太长,也应该并行化).大部分工作都是由numpy数组完成的.

我们假设2-4次是不够的,我决定从我们的本地硬件中获取代码.对于像这样的高吞吐量计算,我的商业选择是什么以及如何修改代码?

python parallel-processing mapreduce amazon-ec2 parallel-python

4
推荐指数
1
解决办法
1454
查看次数

使用Parallel Python记录工作进程

我继承了在集群上使用Parallel Python维护一些科学计算.使用Parallel Python,作业将被提交给ppserver,在这种情况下,它会与其他计算机上已经运行的ppserver进程进行通信,将任务输出到ppworkers进程.

我想使用标准库日志记录模块来记录提交给ppserver的函数中的错误和调试信息.由于这些ppworkers作为单独的进程运行(在不同的计算机上),我不确定如何正确构建日志记录.我必须为每个进程登录一个单独的文件吗?也许有一个日志处理程序可以让它变得更好?

另外,我想要报告什么计算机遇到错误的过程,但我正在编写登录的代码可能不知道这些事情; 也许这应该发生在ppserver级别?

(在并行Python论坛上交叉发布的问题的版本,如果我从非SO用户那里得到关于此的内容,我会在这里发布答案)

python logging parallel-python

2
推荐指数
1
解决办法
1818
查看次数