{"id":18843918,"url":"https://github.com/riggsd/zcant","last_synced_at":"2025-08-13T23:07:40.454Z","repository":{"id":76127014,"uuid":"78065369","full_name":"riggsd/zcant","owner":"riggsd","description":"Myotisoft ZCANT, a zero-crossing analysis tool for bat echolocation data","archived":false,"fork":false,"pushed_at":"2017-11-29T23:17:12.000Z","size":678,"stargazers_count":4,"open_issues_count":8,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-22T23:33:44.235Z","etag":null,"topics":["anabat","bat-acoustics","bat-detector","bats","echolocation","zero-cross"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/riggsd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-01-05T00:49:02.000Z","updated_at":"2025-04-29T14:24:00.000Z","dependencies_parsed_at":"2023-02-25T05:30:40.574Z","dependency_job_id":null,"html_url":"https://github.com/riggsd/zcant","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/riggsd/zcant","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riggsd%2Fzcant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riggsd%2Fzcant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riggsd%2Fzcant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riggsd%2Fzcant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/riggsd","download_url":"https://codeload.github.com/riggsd/zcant/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riggsd%2Fzcant/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270330595,"owners_count":24565816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anabat","bat-acoustics","bat-detector","bats","echolocation","zero-cross"],"created_at":"2024-11-08T02:59:15.006Z","updated_at":"2025-08-13T23:07:40.448Z","avatar_url":"https://github.com/riggsd.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Myotisoft ZCANT\n\nZCANT is a tool for analyzing bat echolocation calls. Specifically, it extracts the echolocation\nsignal using the zero-crossing technique pioneered by Chris Corben, with a few modern twists:\n\n- Digital signal processing techniques are used to enhance the audio during the zero-cross\n  extraction.\n\n- Amplitude from the original full-spectrum signal is integrated into the zero-cross display\n  visually, essentially providing the \"best of both worlds\".\n\n- Slope, the most important derived parameter of a time/frequency zero-cross signal, is integrated\n  into the display visually as color. You'll soon develop a synesthesia that lets you see the shape\n  of a call by its colors.\n\n![ZCANT Screenshot](/docs/images/zcant_screenshot.png?raw=true \"ZCANT Screenshot\")\n\n\n## License\n\nZCANT is Free / Open Source Software, cross-platform, and written in the Python programming\nlanguage. It can serve as the base for your own bat acoustics software projects! See the file\n`LICENSE.txt` for details of the MIT License.\n\nCopyright (C) 2012-2017 by Myotisoft LLC \u003chttp://myotisoft.com\u003e\n\n\n## Requirements\n\n- Python 2.7\n- NumPy\n- SciPy\n- MatPlotLib 1.5.3 or 2.0.0+\n- WxPython 3.0\n\n\n## Installation\n\n1. Download and install [Python 2.7](https://www.python.org/downloads/), or verify that your\n   existing version is 2.7 with with `python --version`.\n\n2. Install wxPython \"classic\" 3.0.2.0. See https://wiki.wxpython.org/How%20to%20install%20wxPython\n   for details, or use the following direct links:\n   [Window 32-bit](https://sourceforge.net/projects/wxpython/files/wxPython/3.0.2.0/wxPython3.0-win32-3.0.2.0-py27.exe/download)\n   [Windows 64-bit](https://sourceforge.net/projects/wxpython/files/wxPython/3.0.2.0/wxPython3.0-win64-3.0.2.0-py27.exe/download)\n   [Mac OSX](https://sourceforge.net/projects/wxpython/files/wxPython/3.0.2.0/wxPython3.0-osx-3.0.2.0-cocoa-py2.7.dmg/download)\n\n3. Download the ZCANT source code, either by downloading the [latest ZCANT release .zip](https://github.com/riggsd/zcant/releases),\n   or by cloning your own copy of the source repository with the commands:\n\n    $\u003e git clone https://github.com/riggsd/zcant.git  \n    $\u003e cd zcant\n\n4. The remainder of the dependency libraries can be installed using `pip`:\n\n    $\u003e pip -r requirements.txt\n\n5. Start ZCANT:\n\n    $\u003e python zcant.py\n\n\n## Usage\n\nRuntime settings which tweak the display of data are found under the `View` menu.\n\nSettings which control how full-spectrum data is converted into zero-cross data are found under\nthe `Conversion` menu.\n\nAt this time, most functionality is controlled with your *keyboard*. Refer to the file \n`docs/keybindings.txt` for a full list of keybindings, but the following quick-start guide should\nget you up and running:\n\n* Use the `]` and `[` keys to navigate forward and backward (respectively) within a folder full of recordings.\n\n* Use the `}` and `{` keys to navigate forward and backward (respectively) to different folders.\n  This is most useful if your data is organized in folders by night, by sight, by species, etc.\n\n* Use the `SPACE` key to toggle back and forth between realtime view and compressed (dot-per-pixel)\n  view. The former is best for examining the relationship between echolocation pulses within a\n  sequence or for viewing individual pulses in detail; the latter is best for examining the shape of\n  many calls simultaneously.\n\n* Use the `+` and `-` keys to zoom in or out (respectively) in time. Press `0` (zero) to jump back\n  to \"whole file\" view. The first zoom jumps to a 2-second view; each zoom in or out is 1/2 or 2x\n  the previous zoom.\n\n* Use the `\u003e` and `\u003c` keys to scroll forward or backward (respectively) in time within a file.\n\n* Use the `l` key to toggle back and forth between linear and logarithmic frequency scales.\n\n* Use the `UP` and `DOWN` keys to increase the noise gate threshold (discard weaker noise, at the\n  expense of possibly discarding weaker echolocation signal) or decrease the noise gate threshold \n  (show weaker signals, at the possible expense of showing more noise) (respectively). The noise\n  gate threshold is expressed in terms of the root-mean-square (RMS) of the recording, which can be\n  thought of as its \"noise floor\". A threshold of \"1.5x RMS\" means that only portions of the signal\n  which are 150% of the noise floor will be displayed; weaker noise will be thrown out. The current\n  threshold is displayed in the status bar at the bottom of the screen. (Default of 1.5x is a safe\n  starting point for \"clean\" recordings, but should be increased if noise dots overwhelm\n  echolocation pulses, or it may be decreased to more accurately reflect the high and low\n  frequencies of echolocation pulses.)\n\n* Use the `SHIFT+UP` and `SHIFT+DOWN` key combinations to raise or lower (respectively) the\n  high-pass filter's (HPF) cutoff frequency. The HPF is a digital filter which removes low-frequency\n  noise from the full-spectrum recording prior to zero-crossing; it is a steep, 6-pole filter,\n  followed by a \"brickwall filter\" that removes any dots below the cutoff frequency *after*\n  zero-crossing. This should be used to filter out any audible (non-bat) frequencies, but will\n  remove bat echolocation signals if set too high. Setting the HPF to 0.0kHz will disable it\n  entirely, so that the original file is zero-crossed in pristine state. The current HPF cutoff\n  is displayed in the status bar at the bottom of the screen, and visually denoted by a dashed\n  blue line. (Default is 17.5kHz, which will mask the occurance of some low-frequency North\n  American bats.)\n\n* Use `CMD+s` to save an Anabat-format file, or `CMD-p` to \"print\" a screenshot image in .PNG format.\n  The saved Anabat-format files will be in a sub-folder named \"_ZCANT_Converted\".\n \n* Delete a .WAV file with the `DELETE` key. Delete just the converted zero-cross file (but not the\n  .WAV itself) with `SHIFT+DELETE`. Files are never truly deleted, they're moved into a sub-folder\n  named \"Deleted Files\".\n\n\n## Credits\n\nZCANT was written by David A. Riggs of [Myotisoft LLC](http://myotisoft.com). Inspiration for\nzero-cross analysis of bat echolocation, as well as the Anabat file format by\n[Chris Corben](http://users.lmi.net/corben/).\n\nFree / Open Source software utilized: [Python](http://python.org), [NumPy](http://www.numpy.org/), \n[MatPlotLib](http://matplotlib.org/), and [wxPython](https://wxpython.org/) for the core of the\napplication. Sound playback thanks to the [sounddevice](https://python-sounddevice.readthedocs.io)\n/ [PortAudio](http://www.portaudio.com/) library. Graphic icons by \n[Open Iconic](https://useiconic.com/open).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Friggsd%2Fzcant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Friggsd%2Fzcant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Friggsd%2Fzcant/lists"}