[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XCZCGPZMSMM7KMQA7C6C90":3,"skill-same:01M6XCZCGPZMSMM7KMQA7C6C90":77},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":30,"publishedAt":51,"linkOnly":52,"markdownContent":53,"markdownBody":54,"frontMatter":55,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":13,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M6XCZCGPZMSMM7KMQA7C6C90","obspy-data-api",null,"An overview of the core data API of ObsPy, a Python framework for processing seismological data. It is useful for parsing common seismological file formats, or manipulating custom data into standard objects for downstream use cases such as ObsPy's signal processing routines or SeisBench's modeling API.","Waaaalnut\u002Fskillsbench","Waaaalnut","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103995656?v=4","01M6XCS9K1V51EY3JMB7DGMX24","01M6XCS9Q4WPW88W62C55G1H44",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks-no-skills\u002Fearthquake-phase-association\u002Fenvironment\u002Fskills\u002Fobspy-data-api\u002FSKILL.md",[17,22,27],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":28,"categoryName":29,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000033","数据分析师",[31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"data","api","obspy data api","objects","useful","standard","signal","custom","for","processing","as","modeling","python","use","overview","common","parsing","file","core","routines","2026-11-10 10:12:30",false,"---\nname: obspy-data-api\ndescription: An overview of the core data API of ObsPy, a Python framework for processing seismological data. It is useful for parsing common seismological file formats, or manipulating custom data into standard objects for downstream use cases such as ObsPy's signal processing routines or SeisBench's modeling API.\n---\n\n# ObsPy Data API\n\n## Waveform Data\n\n### Summary\n\nSeismograms of various formats (e.g. SAC, MiniSEED, GSE2, SEISAN, Q, etc.) can be imported into a `Stream` object using the `read()` function.\n\nStreams are list-like objects which contain multiple `Trace` objects, i.e. gap-less continuous time series and related header\u002Fmeta information.\n\nEach Trace object has the attribute `data` pointing to a NumPy `ndarray` of the actual time series and the attribute `stats` which contains all meta information in a dict-like `Stats` object. Both attributes `starttime` and `endtime` of the Stats object are `UTCDateTime` objects.\n\nA multitude of helper methods are attached to `Stream` and `Trace` objects for handling and modifying the waveform data.\n\n### Stream and Trace Class Structure\n\n**Hierarchy:** `Stream` → `Trace` (multiple)\n\n**Trace - DATA:**\n- `data` → NumPy array\n- `stats`:\n  - `network`, `station`, `location`, `channel` — Determine physical location and instrument\n  - `starttime`, `sampling_rate`, `delta`, `endtime`, `npts` — Interrelated\n\n**Trace - METHODS:**\n- `taper()` — Tapers the data.\n- `filter()` — Filters the data.\n- `resample()` — Resamples the data in the frequency domain.\n- `integrate()` — Integrates the data with respect to time.\n- `remove_response()` — Deconvolves the instrument response.\n\n### Example\n\nA `Stream` with an example seismogram can be created by calling `read()` without any arguments. Local files can be read by specifying the filename, files stored on http servers (e.g. at https:\u002F\u002Fexamples.obspy.org) can be read by specifying their URL.\n\n```python\n>>> from obspy import read\n>>> st = read()\n>>> print(st)\n3 Trace(s) in Stream:\nBW.RJOB..EHZ | 2009-08-24T00:20:03.000000Z - ... | 100.0 Hz, 3000 samples\nBW.RJOB..EHN | 2009-08-24T00:20:03.000000Z - ... | 100.0 Hz, 3000 samples\nBW.RJOB..EHE | 2009-08-24T00:20:03.000000Z - ... | 100.0 Hz, 3000 samples\n>>> tr = st[0]\n>>> print(tr)\nBW.RJOB..EHZ | 2009-08-24T00:20:03.000000Z - ... | 100.0 Hz, 3000 samples\n>>> tr.data\narray([ 0.        ,  0.00694644,  0.07597424, ...,  1.93449584,\n        0.98196204,  0.44196924])\n>>> print(tr.stats)\n         network: BW\n         station: RJOB\n        location:\n         channel: EHZ\n       starttime: 2009-08-24T00:20:03.000000Z\n         endtime: 2009-08-24T00:20:32.990000Z\n   sampling_rate: 100.0\n           delta: 0.01\n            npts: 3000\n           calib: 1.0\n           ...\n>>> tr.stats.starttime\nUTCDateTime(2009, 8, 24, 0, 20, 3)\n```\n\n## Event Metadata\n\nEvent metadata are handled in a hierarchy of classes closely modelled after the de-facto standard format [QuakeML](https:\u002F\u002Fquake.ethz.ch\u002Fquakeml\u002F). See `read_events()` and `Catalog.write()` for supported formats.\n\n### Event Class Structure\n\n**Hierarchy:** `Catalog` → `events` → `Event` (multiple)\n\n**Event contains:**\n- `origins` → `Origin` (multiple)\n  - `latitude`, `longitude`, `depth`, `time`, ...\n- `magnitudes` → `Magnitude` (multiple)\n  - `mag`, `magnitude_type`, ...\n- `picks`\n- `focal_mechanisms`\n\n## Station Metadata\n\nStation metadata are handled in a hierarchy of classes closely modelled after the de-facto standard format [FDSN StationXML](https:\u002F\u002Fwww.fdsn.org\u002Fxml\u002Fstation\u002F) which was developed as a human readable XML replacement for Dataless SEED. See `read_inventory()` and `Inventory.write()` for supported formats.\n\n### Inventory Class Structure\n\n**Hierarchy:** `Inventory` → `networks` → `Network` → `stations` → `Station` → `channels` → `Channel`\n\n**Network:**\n- `code`, `description`, ...\n\n**Station:**\n- `code`, `latitude`, `longitude`, `elevation`, `start_date`, `end_date`, ...\n\n**Channel:**\n- `code`, `location_code`, `latitude`, `longitude`, `elevation`, `depth`, `dip`, `azimuth`, `sample_rate`, `start_date`, `end_date`, `response`, ...\n\n## Classes & Functions\n\n| Class\u002FFunction | Description |\n|----------------|-------------|\n| `read` | Read waveform files into an ObsPy `Stream` object. |\n| `Stream` | List-like object of multiple ObsPy `Trace` objects. |\n| `Trace` | An object containing data of a continuous series, such as a seismic trace. |\n| `Stats` | A container for additional header information of an ObsPy `Trace` object. |\n| `UTCDateTime` | A UTC-based datetime object. |\n| `read_events` | Read event files into an ObsPy `Catalog` object. |\n| `Catalog` | Container for `Event` objects. |\n| `Event` | Describes a seismic event which does not necessarily need to be a tectonic earthquake. |\n| `read_inventory` | Function to read inventory files. |\n| `Inventory` | The root object of the `Network` → `Station` → `Channel` hierarchy. |\n\n## Modules\n\n| Module | Description |\n|--------|-------------|\n| `obspy.core.trace` | Module for handling ObsPy `Trace` and `Stats` objects. |\n| `obspy.core.stream` | Module for handling ObsPy `Stream` objects. |\n| `obspy.core.utcdatetime` | Module containing a UTC-based datetime class. |\n| `obspy.core.event` | Module handling event metadata. |\n| `obspy.core.inventory` | Module for handling station metadata. |\n| `obspy.core.util` | Various utilities for ObsPy. |\n| `obspy.core.preview` | Tools for creating and merging previews. |\n","# ObsPy Data API\n\n## Waveform Data\n\n### Summary\n\nSeismograms of various formats (e.g. SAC, MiniSEED, GSE2, SEISAN, Q, etc.) can be imported into a `Stream` object using the `read()` function.\n\nStreams are list-like objects which contain multiple `Trace` objects, i.e. gap-less continuous time series and related header\u002Fmeta information.\n\nEach Trace object has the attribute `data` pointing to a NumPy `ndarray` of the actual time series and the attribute `stats` which contains all meta information in a dict-like `Stats` object. Both attributes `starttime` and `endtime` of the Stats object are `UTCDateTime` objects.\n\nA multitude of helper methods are attached to `Stream` and `Trace` objects for handling and modifying the waveform data.\n\n### Stream and Trace Class Structure\n\n**Hierarchy:** `Stream` → `Trace` (multiple)\n\n**Trace - DATA:**\n- `data` → NumPy array\n- `stats`:\n  - `network`, `station`, `location`, `channel` — Determine physical location and instrument\n  - `starttime`, `sampling_rate`, `delta`, `endtime`, `npts` — Interrelated\n\n**Trace - METHODS:**\n- `taper()` — Tapers the data.\n- `filter()` — Filters the data.\n- `resample()` — Resamples the data in the frequency domain.\n- `integrate()` — Integrates the data with respect to time.\n- `remove_response()` — Deconvolves the instrument response.\n\n### Example\n\nA `Stream` with an example seismogram can be created by calling `read()` without any arguments. Local files can be read by specifying the filename, files stored on http servers (e.g. at https:\u002F\u002Fexamples.obspy.org) can be read by specifying their URL.\n\n```python\n>>> from obspy import read\n>>> st = read()\n>>> print(st)\n3 Trace(s) in Stream:\nBW.RJOB..EHZ | 2009-08-24T00:20:03.000000Z - ... | 100.0 Hz, 3000 samples\nBW.RJOB..EHN | 2009-08-24T00:20:03.000000Z - ... | 100.0 Hz, 3000 samples\nBW.RJOB..EHE | 2009-08-24T00:20:03.000000Z - ... | 100.0 Hz, 3000 samples\n>>> tr = st[0]\n>>> print(tr)\nBW.RJOB..EHZ | 2009-08-24T00:20:03.000000Z - ... | 100.0 Hz, 3000 samples\n>>> tr.data\narray([ 0.        ,  0.00694644,  0.07597424, ...,  1.93449584,\n        0.98196204,  0.44196924])\n>>> print(tr.stats)\n         network: BW\n         station: RJOB\n        location:\n         channel: EHZ\n       starttime: 2009-08-24T00:20:03.000000Z\n         endtime: 2009-08-24T00:20:32.990000Z\n   sampling_rate: 100.0\n           delta: 0.01\n            npts: 3000\n           calib: 1.0\n           ...\n>>> tr.stats.starttime\nUTCDateTime(2009, 8, 24, 0, 20, 3)\n```\n\n## Event Metadata\n\nEvent metadata are handled in a hierarchy of classes closely modelled after the de-facto standard format [QuakeML](https:\u002F\u002Fquake.ethz.ch\u002Fquakeml\u002F). See `read_events()` and `Catalog.write()` for supported formats.\n\n### Event Class Structure\n\n**Hierarchy:** `Catalog` → `events` → `Event` (multiple)\n\n**Event contains:**\n- `origins` → `Origin` (multiple)\n  - `latitude`, `longitude`, `depth`, `time`, ...\n- `magnitudes` → `Magnitude` (multiple)\n  - `mag`, `magnitude_type`, ...\n- `picks`\n- `focal_mechanisms`\n\n## Station Metadata\n\nStation metadata are handled in a hierarchy of classes closely modelled after the de-facto standard format [FDSN StationXML](https:\u002F\u002Fwww.fdsn.org\u002Fxml\u002Fstation\u002F) which was developed as a human readable XML replacement for Dataless SEED. See `read_inventory()` and `Inventory.write()` for supported formats.\n\n### Inventory Class Structure\n\n**Hierarchy:** `Inventory` → `networks` → `Network` → `stations` → `Station` → `channels` → `Channel`\n\n**Network:**\n- `code`, `description`, ...\n\n**Station:**\n- `code`, `latitude`, `longitude`, `elevation`, `start_date`, `end_date`, ...\n\n**Channel:**\n- `code`, `location_code`, `latitude`, `longitude`, `elevation`, `depth`, `dip`, `azimuth`, `sample_rate`, `start_date`, `end_date`, `response`, ...\n\n## Classes & Functions\n\n| Class\u002FFunction | Description |\n|----------------|-------------|\n| `read` | Read waveform files into an ObsPy `Stream` object. |\n| `Stream` | List-like object of multiple ObsPy `Trace` objects. |\n| `Trace` | An object containing data of a continuous series, such as a seismic trace. |\n| `Stats` | A container for additional header information of an ObsPy `Trace` object. |\n| `UTCDateTime` | A UTC-based datetime object. |\n| `read_events` | Read event files into an ObsPy `Catalog` object. |\n| `Catalog` | Container for `Event` objects. |\n| `Event` | Describes a seismic event which does not necessarily need to be a tectonic earthquake. |\n| `read_inventory` | Function to read inventory files. |\n| `Inventory` | The root object of the `Network` → `Station` → `Channel` hierarchy. |\n\n## Modules\n\n| Module | Description |\n|--------|-------------|\n| `obspy.core.trace` | Module for handling ObsPy `Trace` and `Stats` objects. |\n| `obspy.core.stream` | Module for handling ObsPy `Stream` objects. |\n| `obspy.core.utcdatetime` | Module containing a UTC-based datetime class. |\n| `obspy.core.event` | Module handling event metadata. |\n| `obspy.core.inventory` | Module for handling station metadata. |\n| `obspy.core.util` | Various utilities for ObsPy. |\n| `obspy.core.preview` | Tools for creating and merging previews. |\n",{"name":5,"description":7},"main","7eeb258ada72b7f58119b0e7a2c00ea89d9beedd","tasks-no-skills\u002Fearthquake-phase-association\u002Fenvironment\u002Fskills\u002Fobspy-data-api","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench","https:\u002F\u002Fgithub.com\u002FWaaaalnut","student of Zhejiang University","2026-04-21 23:16:23",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add Waaaalnut\u002Fskillsbench --skill obspy-data-api",{"tool":69,"command":70},"bunx","bunx skills add Waaaalnut\u002Fskillsbench --skill obspy-data-api",{"tool":72,"command":73},"pnpm","pnpm dlx skills add Waaaalnut\u002Fskillsbench --skill obspy-data-api","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks-no-skills\u002Fearthquake-phase-association\u002Fenvironment\u002Fskills\u002Fobspy-data-api\u002FSKILL.md",true,[],[78,87,102,127,149,166],{"skillNo":79,"name":80,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":84,"publishedAt":51},"01M6XEWMJ6VY3ZC53MPDCPG3GH","data-reconciliation","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fxlsx-recover-data\u002Fenvironment\u002Fskills\u002Fdata-reconciliation\u002FSKILL.md",[83],{"categoryNo":28,"categoryName":29,"taxonomyType":25,"taxonomyTypeDesc":26},[85,86,31],"data reconciliation","reconciliation",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":51},"01M6XEW8MNPMF1KRXV6ATGFRQF","speech-to-text","Transcribe video to timestamped text using Whisper tiny model (pre-installed).","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-tutorial-indexer\u002Fenvironment\u002Fskills\u002Fspeech-to-text\u002FSKILL.md",[],[94,95,96,97,98,99,100,101],"speech","text","speech to text","transcribe video","whisper","model","Video","transcribe",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":111,"publishedAt":51},"01M6XEW3FQZP0T1RKQQJFXVY9T","video-processor","Process videos by removing segments and concatenating remaining parts. Use when you need to remove detected pauses\u002Fopenings from videos, create highlight reels, or batch process segment removals using ffmpeg filter_complex.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fvideo-processor\u002FSKILL.md",[108],{"categoryNo":109,"categoryName":110,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",[100,112,113,114,115,116,117,118,119,120,121,122,123,124,125,44,126],"processor","video processor","batch","create","reels","when","parts","segments","process","videos","you","segment","filter","ffmpeg","remove",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":134,"publishedAt":51},"01M6XEVXJ5KZ0NTY3XZKRY4AS1","silence-detector","Detect initial silence segments in audio\u002Fvideo using energy-based analysis. Use when you need to find low-energy periods at the start of recordings (title slides, setup time, pre-roll silence).","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fsilence-detector\u002FSKILL.md",[133],{"categoryNo":109,"categoryName":110,"taxonomyType":20,"taxonomyTypeDesc":21},[135,136,137,138,117,122,139,140,141,142,143,119,144,145,100,146,147,148,44],"detector","silence detector","title","slides","time","energy","at","recordings","detect","find","Audio","analysis","start","setup",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":51},"01M6XEVT3NGRN1FT7JPMAPXS6M","segment-combiner","Combine multiple segment detection results into a unified list. Use when you need to merge segments from different detectors, prepare removal lists for video processing, or consolidate detection outputs.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fsegment-combiner\u002FSKILL.md",[],[123,156,100,157,158,159,160,39,117,161,162,119,122,40,163,44,164,165],"segment combiner","detection","prepare","merge","video processing","outputs","combine","consolidate","results","list",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":175,"publishedAt":51},"01M6XEVMPVASGS2KX86QK4FMT7","report-generator","Generate compression reports for video processing. Use when you need to create structured JSON reports with duration statistics, compression ratios, and segment details after video processing.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Freport-generator\u002FSKILL.md",[172],{"categoryNo":173,"categoryName":174,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000034","行政与办公人员",[176,177,178,123,117,39,122,179,40,180,181,182,44,160,183,100,184,185,115],"generator","report generator","report","with","statistics","structured","reports","json","compression","generate"]