减少数据集以包含仅具有特定质量的文件

时间:2013-10-04 02:58:58

标签: python dataset gaussian reduction

我只是有一个关于数据减少的快速问题。我有大约1500个文件,我想删除那些不符合某个标准的文件。

基本上我将高斯拟合到数据集,这给了我一个平均值和一半的全宽度。我想只选择给出曲线的文件,其平均值约为+/- 1500,最大半宽度小于5000.

我打算使用if条件,但事实证明它比我最初想象的要困难。

到目前为止我所拥有的:

if FWHM <= 5000 and (-1600 <= mean <= -1500):
   return (send data to plotting function)
elif FWHM <= 5000 and (1500 <= mean <= 1600):
   return (send data to plotting function)
else:
   os.remove(os.path.join(path, f))

这似乎不起作用,我认为这可能不是最佳方式。

任何提示?非常感谢。

编辑:对不起,我应该澄清一下。我希望包含平均值的文件在-1600到-1500或1500到1600的范围内。稍后的想法是将它们相互叠加并确定它们是否是镜像对立面。对不起,感到困惑。

2 个答案:

答案 0 :(得分:0)

你想要

FWHM <= 5000 and (-1500 <= mean <= 1500)

如果平均值介于-1600和-1500之间或介于1500和1600之间但不是-1500到1500之间的任何位置,那么你的if结构将是真的,这正是你想要的,即它永远不会工作=)。

答案 1 :(得分:0)

您可以使用abs()进行简化,使用较少的语句可能有助于诊断。也许打印出所有被删除的好文件 - 确保发生的事情就是您认为正在发生的事情。

if FWHM <= 5000 and (1500 <= abs(mean) <= 1600):
   true_file = os.path.join(path, f)
   return (send data to plotting function)
else:
   if true_file == os.path.join(path, f):
       print 'I am deleting a GOOD file:', true_file
   os.remove(os.path.join(path, f))
   true_file = ''

编辑以添加诊断打印语句