{ "info": { "author": "Christopher H. Jordan", "author_email": "christopherjordan87@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "sslf - A Simple Spectral Line Finder\n====================================\n\n``sslf`` is designed to be a dead-simple, effective and useful spectral line finder for 1D data. It utilises the continuous wavelet transform from scipy, which is a productive way to find even weak spectral lines.\n\nBecause there are many definitions for a spectral line, this package can not conceivably work in all cases. Here, I have designed ``sslf`` for Gaussian-profiled spectral lines. A big part of my work focuses on recovering weak signals in the noise, so ``sslf`` aims to identify lines, flag them, and subtract the non-zero bandpass around them.\n\nUsage\n-----\nWith a 1D spectrum (``spectral_data``) and a range of scales to test (e.g. 1 through 20), statistically significant spectral peaks can be found with::\n\n import numpy as np\n from sslf.sslf import Spectrum\n\n s = Spectrum(spectral_data)\n s.find_cwt_peaks(scales=np.arange(1, 20), snr=6.5)\n s.subtract_bandpass()\n\nThe flattened spectrum is then contained in ``s.modified``, and peak locations at ``s.channel_peaks``. Other parameters related to the peaks are ``s.peak_snrs``, ``s.vel_peaks`` and ``s.channel_edges``.\n\nNote that the ``snr`` parameter specified to ``find_cwt_peaks`` actually refers to the signal-to-noise ratio in the wavelet domain, not the input-signal domain; for this reason, if you wanted all signals above 5-sigma, you would have to put in a little more work to determine what your spectrum's noise RMS is and how it maps to the wavelet RMS.\n\nAlso note that ``channel_edges`` can be quite inaccurate; by default, this variable is populated by the wavelet scale that found the spectral line. The wavelet need not match very well; it only needs to be significant enough to be picked up by ``sslf``. The ``Spectrum`` object has an optional ``refine_line_widths`` method which (hopefully) does a better job of finding the channel extent of all detected spectral lines. Read the documentation of ``sslf`` functions for more information.\n\n``find_cwt_peaks`` can optionally take the wavelet to be used in the wavelet transformation (Ricker wavelet by default). ``subtract_bandpass`` is a little harder to explain; more complicated examples of usage can be found in the ``notebooks`` directory. A reasonably complex example of ``sslf`` usage is `here `_.\n\nContributions and Suggestions\n-----------------------------\nI created this software because I could not find anything in the community that functioned similarly. So, I would welcome contributions to make this software more generally flexible, to be suitable for a wide audience. It's really simple, just look at the code!\n\nIssues? Bugs? Inconsistencies?\n------------------------------\nAbsolutely! Please raise a GitLab issue if you find something odd, with your inputs and expected outputs, and I'll attempt to fix it ASAP.\n\nInstallation\n------------\n::\n\n pip install sslf\n\nor\n\n- clone this repo (``git clone https://gitlab.com/cjordan/sslf.git``)\n- within the directory, run: ``python setup.py install --optimize=1``\n\nDependencies\n------------\n- python 2.7.x or 3.x\n- numpy 1.8+\n- scipy\n- future\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/chjordan/sslf", "keywords": "signal processing", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "sslf", "package_url": "https://pypi.org/project/sslf/", "platform": "", "project_url": "https://pypi.org/project/sslf/", "project_urls": { "Homepage": "https://gitlab.com/chjordan/sslf" }, "release_url": "https://pypi.org/project/sslf/0.2.0/", "requires_dist": [ "numpy (>=1.8.0)", "scipy", "future" ], "requires_python": "", "summary": "A simple spectral line finder", "version": "0.2.0" }, "last_serial": 5469727, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "d4ef591893526a285e12c0b13c855123", "sha256": "b6bad95d75b3c1012e368aa75746c1efb48d7b9b45a199ac7b65d113666bb0a6" }, "downloads": -1, "filename": "sslf-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d4ef591893526a285e12c0b13c855123", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7080, "upload_time": "2017-05-23T05:24:13", "url": "https://files.pythonhosted.org/packages/52/0b/44441792964fcffaef913c554e46fda5893abf1c08a4c5e54c8825b4d58c/sslf-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50eff480f2463553d25c38e5ab390f09", "sha256": "e6d54467ea182d4a4e29552c003a1d5685e05c1611389b2b4d1d2d1f89e8b08c" }, "downloads": -1, "filename": "sslf-0.1.0-py3.6.egg", "has_sig": false, "md5_digest": "50eff480f2463553d25c38e5ab390f09", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 12764, "upload_time": "2017-05-23T05:24:15", "url": "https://files.pythonhosted.org/packages/38/cb/3bca247236d058f9de364284d3c9d7290ee5d15d5fa4ec88ac04eceba847/sslf-0.1.0-py3.6.egg" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "ad449fb9b52c103515a43fcccf83f0cf", "sha256": "28ace0ed31e9c7cbc4a6388e86c2cd8f0063c6fb7410a9740dc59d361ca13c90" }, "downloads": -1, "filename": "sslf-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ad449fb9b52c103515a43fcccf83f0cf", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7097, "upload_time": "2017-05-24T08:22:48", "url": "https://files.pythonhosted.org/packages/be/bb/d03c7e27791edfefb60caf3fd2b73de02d262f3402ce78ac8b45d9847d2f/sslf-0.1.1-py2.py3-none-any.whl" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "f00db03bf58b311b6cf9b6486d13e6b6", "sha256": "35e0113bdf4fc4b191f75e5b8cb78ec7e18c82a1546774d00278f7b2bb945021" }, "downloads": -1, "filename": "sslf-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f00db03bf58b311b6cf9b6486d13e6b6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7414, "upload_time": "2017-06-09T01:37:12", "url": "https://files.pythonhosted.org/packages/bb/af/6c1276ae7d1f19eecbacf9419de12f39c3592f9b08a0c6900148c2011a22/sslf-0.1.2-py2.py3-none-any.whl" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "5b4d4d57c0ac237d9f58e47274e85885", "sha256": "fd2ad0cd73ea3c7cceb6b544d61af33d15553b58734158c5eabad8eb4b562910" }, "downloads": -1, "filename": "sslf-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5b4d4d57c0ac237d9f58e47274e85885", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7479, "upload_time": "2017-06-16T14:10:21", "url": "https://files.pythonhosted.org/packages/db/3a/c514110c31a98a8baa752be85430f343f6a281c485d82ba18e224f588cd3/sslf-0.1.3-py2.py3-none-any.whl" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "4c4870edca9fc0731772a95882f72a24", "sha256": "cdbc1d3fcfec2ab19afb7571c9aba13ead36fc421dc9c0d365889a1dd3ae36d4" }, "downloads": -1, "filename": "sslf-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4c4870edca9fc0731772a95882f72a24", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7720, "upload_time": "2017-12-02T06:12:19", "url": "https://files.pythonhosted.org/packages/40/2b/a467c08a9111309b29558d0955de9361158172765a9104120701ca01439f/sslf-0.1.4-py2.py3-none-any.whl" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "bd3e831c1c74cb467606fb3b8d3227f5", "sha256": "0ddd395247fc0c794b1078f849f287e51a2e22cafeea68d303a0bf1fdfa3a757" }, "downloads": -1, "filename": "sslf-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bd3e831c1c74cb467606fb3b8d3227f5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8554, "upload_time": "2018-01-09T02:34:25", "url": "https://files.pythonhosted.org/packages/d0/b3/5a7bd36acfbfc41e67eb620923854921cc8787de52944442d8ce7c4a44e3/sslf-0.1.5-py2.py3-none-any.whl" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "d2e8ae737367dcf8d80e26602e63c632", "sha256": "13dab1045e2aa4c88d9ae945359a82df1bdd2a53e02473a85a2dad2f5d98db96" }, "downloads": -1, "filename": "sslf-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d2e8ae737367dcf8d80e26602e63c632", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8920, "upload_time": "2018-01-18T01:43:41", "url": "https://files.pythonhosted.org/packages/fc/25/31a0b18382f3c5f2e88909a6032ef32e23d52269c500973ff7116aa18581/sslf-0.1.6-py2.py3-none-any.whl" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "6f599b33775e2de76d3af908d766b093", "sha256": "de33f2d59c1731f11fc449dcfcd4276cd301ee8bff8067d0e16070873667427d" }, "downloads": -1, "filename": "sslf-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6f599b33775e2de76d3af908d766b093", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8954, "upload_time": "2018-02-15T02:05:35", "url": "https://files.pythonhosted.org/packages/ea/81/4a911c015881b2d1550130b1f57510891e9f57dad8d21d55133c38e9196f/sslf-0.1.7-py2.py3-none-any.whl" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "7a97677cfabc2e81929d29bcbe35eecd", "sha256": "99cb02e40ae31bbb66a01bfeea8e939273e44706a8783e26f27805aed8bfcfc9" }, "downloads": -1, "filename": "sslf-0.1.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a97677cfabc2e81929d29bcbe35eecd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7805, "upload_time": "2019-04-15T06:11:20", "url": "https://files.pythonhosted.org/packages/17/54/88e12c36c294e36cf88246022d7c2d40c40690e1745618739224a7bd6e66/sslf-0.1.8-py2.py3-none-any.whl" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "16adb9d1da9c933e8617cc65808f091a", "sha256": "2c4d01fc2ca54fd1dcc4969fcf11f4689d20f3a1e85350644c64a85b45e0a131" }, "downloads": -1, "filename": "sslf-0.1.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "16adb9d1da9c933e8617cc65808f091a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7701, "upload_time": "2019-04-15T06:11:26", "url": "https://files.pythonhosted.org/packages/db/1a/d7551fb0db84cf306a01d5f90ea352ef57bdbaeff96c4cde14820b040101/sslf-0.1.9-py2.py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "b1444b021a0190d61d3f72eb454c66ef", "sha256": "b1cdd79085b95cd5ea675cc311b7aeabcf90b20c97ebea036305f7c21155225a" }, "downloads": -1, "filename": "sslf-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b1444b021a0190d61d3f72eb454c66ef", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8612, "upload_time": "2019-07-01T06:00:36", "url": "https://files.pythonhosted.org/packages/69/89/c8ff0c17c0e1af6b0b0f728adedcfd424d9c483c7ac3b92daae69d260ac6/sslf-0.2.0-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b1444b021a0190d61d3f72eb454c66ef", "sha256": "b1cdd79085b95cd5ea675cc311b7aeabcf90b20c97ebea036305f7c21155225a" }, "downloads": -1, "filename": "sslf-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b1444b021a0190d61d3f72eb454c66ef", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8612, "upload_time": "2019-07-01T06:00:36", "url": "https://files.pythonhosted.org/packages/69/89/c8ff0c17c0e1af6b0b0f728adedcfd424d9c483c7ac3b92daae69d260ac6/sslf-0.2.0-py2.py3-none-any.whl" } ] }