跳转到主要内容

滤波器组数据中窄带漂移信号搜索分析工具

项目描述

Build Status Documentation Status codecov

TURBO_SETI

turboSETI 是一种用于在滤波器组数据(频率 vs. 时间)中搜索窄带漂移信号的分析工具。该代码的主要目的是希望有一天能找到外星起源的信号!!它可以在数百种漂移率(Hz/sec)中搜索数据。它可以处理 .fil 或 .h5 文件格式。

注意:此代码稳定,但目前正在开发新功能。

一些专家视角的细节

  • 基于Python,使用Numba的taylor树来提高性能。
  • 预先计算的 漂移索引数组
  • 输出包含每个命中信息的纯文本文件。
  • 将输出读取器集成到pandas DataFrame中。

最初基于 dedoppler dedoppler;它是基于 rawdopplersearch.c gbt_seti/src/rawdopplersearch.c)

 


依赖项

  • Python 3.7+
  • astropy
  • numpy
  • blimpy 2.0.34+(Python的Breakthrough Listen I/O方法:https://github.com/UCBerkeleySETI/blimpy
  • pandas
  • toolz
  • fsspec
  • dask
  • dask[bag]
  • numba
  • cloudpickle
  • cupy(仅限NVIDIA GPU模式)

 


安装

如果您尚未安装blimpy,请按照以下方式安装:

python3 -m pip install --user -U blimpy

然后,安装turbo_seti

python3 -m pip install --user -U turbo_seti

NVIDIA GPU用户

已包含NUMBA即时(JIT)CPU性能增强。但是,如果您在将要执行turbo_seti的计算机上具有NVIDIA GPU硬件,则可以获得显著的额外性能提升。按照以下步骤启用GPU增强处理:

  1. 安装pypi包"cupy":python3 -m pip install cupy
  2. 以这种方式运行可执行文件:turboSETI <输入HDF5文件路径> -g y [其他选项]

使用方法

预期输入文件格式

目前,turboSETI命令行和FindDoppler对象期望Filterbank HDF5文件(.h5)或Filterbank SIGPROC文件(.fil)。如果提供SIGPROC文件,它将自动转换为与SIGPROC文件位于同一目录的HDF5文件。

作为命令行使用

使用数据运行:turboSETI <输入HDF5文件路径> [选项]

有关程序参数的解释:turboSETI -h

作为Python包使用

from turbo_seti.find_doppler.find_doppler import FindDoppler
fdop = FindDoppler(datafile=my_HDF5_file, ...)
fdop.search(...)

作为Python包的示例使用

import time
from blimpy import Waterfall
from turbo_seti.find_doppler.find_doppler import FindDoppler

H5DIR = "/path_to_seti_data/voyager/"
H5PATH = H5DIR + "Voyager1.single_coarse.fine_res.h5"
OUT_DIR = "/path_to_output_directory"

print("\nUsing HDF5 file: {}\nHeader and data shape:".format(H5PATH))
# -- Get a report of header and data shape
wf = Waterfall(H5PATH)
wf.info()
# -- Instantiate FindDoppler.
print("\nInstantiating the FindDoppler object.")
fdop = FindDoppler(datafile=H5PATH, max_drift=4, snr=25, out_dir=OUT_DIR)
# -- Search for hits and report elapsed time.
print("\nBegin doppler search.  Please wait ...")
t1 = time.time()
fdop.search()
elapsed_time = time.time() - t1
print("\nFindDoppler.search() elapsed time = {} seconds".format(elapsed_time))

示例DAT文件输出

# -------------------------- o --------------------------
# File ID: Voyager1.single_coarse.fine_res.h5 
# -------------------------- o --------------------------
# Source:Voyager1
# MJD: 57650.782094907408	RA: 17h10m03.984s	DEC: 12d10m58.8s
# DELTAT:  18.253611	DELTAF(Hz):  -2.793968
# --------------------------
# Top_Hit_# 	Drift_Rate 	SNR 	Uncorrected_Frequency 	Corrected_Frequency 	Index 	freq_start 	freq_end 	SEFD 	SEFD_freq 	Coarse_Channel_Number 	Full_number_of_hits 	
# --------------------------
001	 -0.392226	 30.612128	   8419.319368	   8419.319368	739933	   8419.321003	   8419.317740	0.0	      0.000000	0	858	
002	 -0.373093	245.707984	   8419.297028	   8419.297028	747929	   8419.298662	   8419.295399	0.0	      0.000000	0	858	
003	 -0.392226	 31.220652	   8419.274374	   8419.274374	756037	   8419.276009	   8419.272745	0.0	      0.000000	0	858	

示例控制台日志(级别=INFO)输出

注意,粗通道号作为日志名称的后缀出现。例如,“find_doppler.8”表示在粗通道号8(相对于0)的find_doppler.py中的日志。

Using HDF5 file: /seti_data/voyager/Voyager1.single_coarse.fine_res.h5
Header and data shape:

--- File Info ---
DIMENSION_LABELS :   ['frequency' 'feed_id' 'time']
        az_start :                              0.0
       data_type :                                1
            fch1 :            8421.386717353016 MHz
            foff :      -2.7939677238464355e-06 MHz
           ibeam :                                1
      machine_id :                               20
          nbeams :                                1
           nbits :                               32
          nchans :                          1048576
            nifs :                                1
     rawdatafile : guppi_57650_67573_Voyager1_0002.0000.raw
     source_name :                         Voyager1
         src_dej :                       12:10:58.8
         src_raj :                     17:10:03.984
    telescope_id :                                6
           tsamp :                     18.253611008
   tstart (ISOT) :          2016-09-19T18:46:13.000
    tstart (MJD) :                57650.78209490741
        za_start :                              0.0

Num ints in file :                               16
      File shape :                 (16, 1, 1048576)
--- Selection Info ---
Data selection shape :                 (16, 1, 1048576)
Minimum freq (MHz) :                8418.457032646984
Maximum freq (MHz) :                8421.386717353016

Instantiating the FindDoppler object.
find_doppler.0  INFO     {'DIMENSION_LABELS': array(['frequency', 'feed_id', 'time'], dtype=object), 'az_start': 0.0, 'data_type': 1, 'fch1': 8421.386717353016, 'foff': -2.7939677238464355e-06, 'ibeam': 1, 'machine_id': 20, 'nbeams': 1, 'nbits': 32, 'nchans': 1048576, 'nifs': 1, 'rawdatafile': 'guppi_57650_67573_Voyager1_0002.0000.raw', 'source_name': 'Voyager1', 'src_dej': <Angle 12.183 deg>, 'src_raj': <Angle 17.16777333 hourangle>, 'telescope_id': 6, 'tsamp': 18.253611008, 'tstart': 57650.78209490741, 'za_start': 0.0}

Begin doppler search.  Please wait ...
find_doppler.0  INFO     File: /seti_data/voyager/Voyager1.single_coarse.fine_res.h5
 drift rates (min, max): (0.000000, 4.000000)
 SNR: 25.000000

Starting ET search using /seti_data/voyager/Voyager1.single_coarse.fine_res.h5
find_doppler.0  INFO     Parameters: datafile=/seti_data/voyager/Voyager1.single_coarse.fine_res.h5, max_drift=4, min_drift=0.0, snr=25, out_dir=/seti_data/voyager/, coarse_chans=None, flagging=False, n_coarse_chan=None, kernels=None, gpu_backend=False, precision=2, append_output=False, log_level_int=20, obs_info={'pulsar': 0, 'pulsar_found': 0, 'pulsar_dm': 0.0, 'pulsar_snr': 0.0, 'pulsar_stats': array([0., 0., 0., 0., 0., 0.]), 'RFI_level': 0.0, 'Mean_SEFD': 0.0, 'psrflux_Sens': 0.0, 'SEFDs_val': [0.0], 'SEFDs_freq': [0.0], 'SEFDs_freq_up': [0.0]}
find_doppler.0  INFO     Top hit found! SNR 30.612128, Drift Rate -0.392226, index 739933
find_doppler.0  INFO     Top hit found! SNR 245.707984, Drift Rate -0.373093, index 747929
find_doppler.0  INFO     Top hit found! SNR 31.220652, Drift Rate -0.392226, index 756037

FindDoppler.search() elapsed time = 9.972093105316162 seconds

 

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

turbo_seti-2.3.2.tar.gz (182.4 kB 查看哈希值)

上传时间:

构建分布

turbo_seti-2.3.2-py2.py3-none-any.whl (175.2 kB 查看哈希值)

上传时间: Python 2 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面