{"id":2182,"name":"TATHU","description":"A Python package for tracking and analyzing the life cycle of thunderstorms.","url":"https://github.com/uba/tathu","last_synced_at":"2026-04-05T20:30:17.387Z","repository":{"id":64729508,"uuid":"506698434","full_name":"uba/tathu","owner":"uba","description":"TATHU is a Python package for tracking and analyzing the life cycle of convective systems.","archived":false,"fork":false,"pushed_at":"2026-03-02T18:56:19.000Z","size":25557,"stargazers_count":36,"open_issues_count":1,"forks_count":15,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-03-28T00:23:57.821Z","etag":null,"topics":["geospatial","image-processing","meteorology","nowcasting","python","radar","remote-sensing","satellite","tracking"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","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/uba.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-06-23T15:41:40.000Z","updated_at":"2026-03-02T18:56:23.000Z","dependencies_parsed_at":"2024-04-09T17:57:28.869Z","dependency_job_id":"15c90463-a957-49e3-8042-7e660e456ca1","html_url":"https://github.com/uba/tathu","commit_stats":{"total_commits":220,"total_committers":4,"mean_commits":55.0,"dds":0.07727272727272727,"last_synced_commit":"67e38dd6030dd5ff49075cbe61cfabc428cef85a"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/uba/tathu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uba","download_url":"https://codeload.github.com/uba/tathu/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31248096,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-31T15:15:33.278Z","status":"ssl_error","status_checked_at":"2026-03-31T15:15:28.327Z","response_time":111,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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"}},"owner":{"login":"uba","name":"Douglas Uba","uuid":"1336572","kind":"user","description":"Technologist at INPE - Brazil's National Institute for Space Research, working with satellite image processing and Geoinformatics.","email":"","website":null,"location":null,"twitter":null,"company":"INPE","icon_url":"https://avatars.githubusercontent.com/u/1336572?u=d4f8c311bba44146741adb721e18d52b26566234\u0026v=4","repositories_count":3,"last_synced_at":"2023-05-18T02:43:12.040Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/uba","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-05-18T02:43:12.042Z","updated_at":"2023-05-18T02:43:12.042Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uba","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uba/repositories"},"packages":[{"id":12367355,"name":"github.com/uba/tathu","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/uba/tathu","keywords_array":[],"namespace":null,"versions_count":1,"first_release_published_at":"2025-08-04T11:47:57.000Z","latest_release_published_at":"2025-08-04T11:47:57.000Z","latest_release_number":"v1.0.0","last_synced_at":"2026-04-02T19:01:05.824Z","created_at":"2025-10-09T08:55:35.528Z","updated_at":"2026-04-02T19:01:05.824Z","registry_url":"https://pkg.go.dev/github.com/uba/tathu","install_command":"go get github.com/uba/tathu","documentation_url":"https://pkg.go.dev/github.com/uba/tathu#section-documentation","metadata":{},"repo_metadata":{"id":64729508,"uuid":"506698434","full_name":"uba/tathu","owner":"uba","description":"TATHU is a Python package for tracking and analyzing the life cycle of convective systems.","archived":false,"fork":false,"pushed_at":"2025-10-08T20:27:12.000Z","size":25522,"stargazers_count":35,"open_issues_count":1,"forks_count":14,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-19T05:04:56.977Z","etag":null,"topics":["geospatial","image-processing","meteorology","nowcasting","python","radar","remote-sensing","satellite","tracking"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","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/uba.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-06-23T15:41:40.000Z","updated_at":"2025-10-17T09:56:19.000Z","dependencies_parsed_at":"2024-04-09T17:57:28.869Z","dependency_job_id":"1da6b91b-e645-4ad6-abd1-49d05b178975","html_url":"https://github.com/uba/tathu","commit_stats":{"total_commits":220,"total_committers":4,"mean_commits":55.0,"dds":0.07727272727272727,"last_synced_commit":"67e38dd6030dd5ff49075cbe61cfabc428cef85a"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/uba/tathu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uba","download_url":"https://codeload.github.com/uba/tathu/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280151543,"owners_count":26281249,"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-10-20T02:00:06.978Z","response_time":62,"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"},"owner_record":{"login":"uba","name":"Douglas Uba","uuid":"1336572","kind":"user","description":"Technologist at INPE - Brazil's National Institute for Space Research, working with satellite image processing and Geoinformatics.","email":"","website":null,"location":null,"twitter":null,"company":"INPE","icon_url":"https://avatars.githubusercontent.com/u/1336572?u=d4f8c311bba44146741adb721e18d52b26566234\u0026v=4","repositories_count":3,"last_synced_at":"2023-05-18T02:43:12.040Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/uba","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-05-18T02:43:12.042Z","updated_at":"2023-05-18T02:43:12.042Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uba","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uba/repositories"},"tags":[{"name":"v1.0.0","sha":"c46277e3fefe166d3c6a21c25dab71c12c6c2454","kind":"commit","published_at":"2025-08-04T11:47:57.000Z","download_url":"https://codeload.github.com/uba/tathu/tar.gz/v1.0.0","html_url":"https://github.com/uba/tathu/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/uba/tathu@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/tags/v1.0.0/manifests"}]},"repo_metadata_updated_at":"2025-10-20T19:59:35.485Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.485262849126775,"dependent_packages_count":5.140157323942734,"stargazers_count":7.634471847201134,"forks_count":6.468782525064885,"docker_downloads_count":null,"average":6.182168636333882},"purl":"pkg:golang/github.com/uba/tathu","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/uba/tathu","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/uba/tathu","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/uba/tathu/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-09T20:42:56.385Z","issues_count":5,"pull_requests_count":13,"avg_time_to_close_issue":208882.6,"avg_time_to_close_pull_request":98950.36363636363,"issues_closed_count":5,"pull_requests_closed_count":11,"pull_request_authors_count":4,"issue_authors_count":1,"avg_comments_per_issue":2.0,"avg_comments_per_pull_request":0.8461538461538461,"merged_pull_requests_count":9,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":16223.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.3333333333333333,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/issues","maintainers":[{"login":"cclopes","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cclopes"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fuba%2Ftathu/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fuba%2Ftathu/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fuba%2Ftathu/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fuba%2Ftathu/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fuba%2Ftathu/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2086162,"maintainers_count":0,"namespaces_count":779106,"keywords_count":0,"github":"golang","metadata":{"funded_packages_count":53416},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-03T06:05:35.160Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":1326024,"full_name":"uba/tathu","default_branch":"master","total_commits":251,"total_committers":3,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":83.66666666666667,"dds":0.043824701195219085,"past_year_total_commits":25,"past_year_total_committers":2,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":12.5,"past_year_dds":0.040000000000000036,"last_synced_at":"2026-04-02T19:01:32.885Z","last_synced_commit":"c3dac0c45b29ed77dcae6015e5dba41d1b6e8d35","created_at":"2023-09-11T16:05:28.472Z","updated_at":"2026-04-02T19:01:32.738Z","committers":[{"name":"Douglas Uba","email":"douglas.uba@inpe.br","login":"uba","count":240},{"name":"cclopes","email":"camila.lopes@iag.usp.br","login":"cclopes","count":6},{"name":"diegormsouza","email":"diego.rsouza@hotmail.com","login":"diegormsouza","count":5}],"past_year_committers":[{"name":"Douglas Uba","email":"douglas.uba@inpe.br","login":"uba","count":24},{"name":"diegormsouza","email":"diego.rsouza@hotmail.com","login":"diegormsouza","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-04T00:00:07.631Z","repositories_count":6211182,"commits_count":926830349,"contributors_count":35796351,"owners_count":1145510,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"uba/tathu","html_url":"https://github.com/uba/tathu","last_synced_at":"2026-03-04T05:00:22.620Z","status":"error","issues_count":5,"pull_requests_count":13,"avg_time_to_close_issue":208882.6,"avg_time_to_close_pull_request":98950.36363636363,"issues_closed_count":5,"pull_requests_closed_count":11,"pull_request_authors_count":4,"issue_authors_count":1,"avg_comments_per_issue":2.0,"avg_comments_per_pull_request":0.8461538461538461,"merged_pull_requests_count":9,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":16223.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":1,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.3333333333333333,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":1,"created_at":"2023-09-11T16:05:43.095Z","updated_at":"2026-03-04T05:00:22.620Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/uba%2Ftathu/issues","issue_labels_count":{"enhancement":1,"bug":1},"pull_request_labels_count":{},"issue_author_associations_count":{"COLLABORATOR":5},"pull_request_author_associations_count":{"COLLABORATOR":7,"NONE":3,"CONTRIBUTOR":3},"issue_authors":{"cclopes":5},"pull_request_authors":{"cclopes":7,"diegormsouza":4,"caioatila":1,"diegoenore":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-27T00:00:09.101Z","repositories_count":13948121,"issues_count":34661812,"pull_requests_count":113358522,"authors_count":11210844,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":2,"NONE":1},"past_year_issue_authors":{},"past_year_pull_request_authors":{"diegormsouza":2,"diegoenore":1},"maintainers":[{"login":"cclopes","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/cclopes"}],"active_maintainers":[]},"events":{"total":{"PullRequestEvent":1,"ForkEvent":4,"WatchEvent":8,"IssueCommentEvent":1,"PushEvent":11},"last_year":{"PullRequestEvent":1,"ForkEvent":2,"WatchEvent":4,"IssueCommentEvent":1,"PushEvent":6}},"keywords":["geospatial","image-processing","meteorology","nowcasting","python","radar","remote-sensing","satellite","tracking"],"dependencies":[{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-12-15T03:37:47.876Z","updated_at":"2022-12-15T03:37:47.876Z","repository_link":"https://github.com/uba/tathu/blob/master/setup.py","dependencies":[{"id":6809866077,"package_name":"aenum","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866078,"package_name":"cartopy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866079,"package_name":"geopandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866080,"package_name":"netcdf4","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866081,"package_name":"opencv","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866082,"package_name":"pathos","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866083,"package_name":"psycopg2","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866084,"package_name":"pyproj","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866085,"package_name":"rasterstats","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866086,"package_name":"requests","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866087,"package_name":"rtree","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866088,"package_name":"s3fs","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866089,"package_name":"scikit-image","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866090,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":6809866091,"package_name":"tqdm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":null,"created_at":"2023-09-11T14:26:03.091Z","updated_at":"2026-04-05T20:30:17.406Z","avatar_url":"https://github.com/uba.png","language":"Jupyter Notebook","category":"Climate Change","sub_category":"Natural Hazard and Storms","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"..\n    This file is part of TATHU - Tracking and Analysis of Thunderstorms.\n    Copyright (C) 2022 INPE.\n\n    TATHU - Tracking and Analysis of Thunderstorms is free software; you can redistribute it and/or modify it\n    under the terms of the MIT License; see LICENSE file for more details.\n\n.. image:: https://raw.githubusercontent.com/uba/tathu/master/docs/sphinx/img/logo-tathu.png\n    :target: https://raw.githubusercontent.com/uba/tathu/master/docs/sphinx/img/logo-tathu.png\n    :width: 128\n\n==============================================\nTATHU - Tracking and Analysis of Thunderstorms\n==============================================\n\n.. image:: https://img.shields.io/badge/license-MIT-green\n        :target: https://github.com//uba/tathu/blob/master/LICENSE\n        :alt: Software License\n\n.. image:: https://readthedocs.org/projects/tathu/badge/?version=latest\n        :target: https://tathu.readthedocs.io/en/latest/\n        :alt: Documentation Status\n\n.. image:: https://img.shields.io/badge/lifecycle-experimental-orange.svg\n        :target: https://www.tidyverse.org/lifecycle/#maturing\n        :alt: Software Life Cycle\n\n.. image:: https://img.shields.io/github/tag/uba/tathu.svg\n        :target: https://github.com/uba/tathu/releases\n        :alt: Release\n\n.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.17298147.svg\n        :target: https://doi.org/10.5281/zenodo.17298147\n        :alt: DOI\n\n.. image:: https://img.shields.io/pypi/v/tathu\n        :target: https://pypi.org/project/tathu/\n        :alt: Python Package Index\n\nAbout\n=====\n\n**TATHU** is a Python package for tracking and analyzing the life cycle of **Convective Systems (CS)**.\n\n.. image:: https://github.com/uba/tathu/raw/master/docs/sphinx/img/tracking-radar-nowcasting.gif\n    :target: https://github.com/uba/tathu/raw/master/docs/sphinx/img/tracking-radar-nowcasting.gif\n    :width: 420\n    :alt: CS animation.\n\nThe package provides a modular and extensible structure, supports different types of geospatial data and proposes the use of **Geoinformatics\ntechniques** and **spatial databases** in order to aid in the analysis and computational representation of the CS.\n\nIn addition, the package presents a conceptual model for defining the problem using abstract interfaces.\n\nVisualize `codebase \u003chttps://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=uba%2Ftathu\u003e`_.\n\nNote: Portuguese word for \"armadillo\" is **tatu** which is derived from the Tupi language.\n\nDocumentation\n=============\n\nSee Read The Docs website: `TATHU Documentation \u003chttps://tathu.readthedocs.io/en/latest/\u003e`_.\n\nInstallation\n============\n\nSee `INSTALL.rst \u003c./INSTALL.rst\u003e`_.\n\nContextualization\n=================\n\n**Convective Systems (CS)** are defined as an organized ensemble of thunderstorm clusters and are associated with severe weather events and natural disasters (hail, lightning, precipitation extremes, high winds, among others). Thus, several works propose automatic methods for **monitoring** these elements in order to provide, for each individual CS, characteristics that can describe its **spatio-temporal** evolution, i.e. the life cycle.\n\nCS have a spatio-temporal behavior: they originate in a specific geographic location and change over time in relation to position, size and microphysical composition. We may use **remote sensing data**, such as satellite imagery and radar data, in order to **identifying**, **tracking**, **analyzing** and **nowcasting** the CS evolution.\n\n.. image:: https://github.com/uba/tathu/raw/master/docs/sphinx/img/system-evolution-en.jpg\n    :target: https://github.com/uba/tathu/raw/master/docs/sphinx/img/system-evolution-en.jpg\n    :width: 600\n    :alt: CS and spatio-temporal behavior.\n\nThe general steps involved for automatic monitoring the CS are:\n\n.. image:: https://github.com/uba/tathu/raw/master/docs/sphinx/img/tracking-methodology-en.jpg\n    :target: https://github.com/uba/tathu/raw/master/docs/sphinx/img/tracking-methodology-en.jpg\n    :width: 800\n    :alt: Tracking methodology.\n\n* **Observation**: data acquisition from specific instrumentation. For example, digital images obtained from satellites of geostationary or polar orbit, measurements of meteorological RADAR, among other sources;\n* **Detection**: step to identify the objects of interest existing in the observed data. In the specific case of digital images, the use of different processing techniques can be considered, such as: thresholding, segmentation, classification, filters, among others.\n* **Description**: extraction of different types of attributes and classification. In this case, one can consider spectral attributes (measurements of a sensor in different channels), statistical analysis (mean, variance, etc.) and shape characteristics (size, orientation, rectangularity, among others);\n* **Tracking**: includes detection and description steps followed by an association process. The objective is to determine the behavior and evolution of the objects of interest, as well as the appearance of new objects;\n* **Forecast**: based on specialized knowledge (models and parameterization) and the history of each object, it aims to predict what will be the behavior for future moments.\n\nConceptual Model\n================\n\nTATHU proposes a conceptual model to address the problem of tracking and analyzing the CS lifecycle.\n\nThe entities of the model are:\n\n.. image:: https://github.com/uba/tathu/raw/master/diagrams/tathu-diagram-entities.png\n    :target: https://github.com/uba/tathu/raw/master/diagrams/tathu-diagram-entities.png\n    :alt: Entities.\n\nBasically, a geospatial database contains the observed elements of interest, represented by the ``ConvectiveSystem`` class.\nThis class has an identifier, ``uuid``, at least one spatial attribute, ``geom``, which indicates the geographic limits of the system, and n other attributes, ``fields``.\nThus, four different entities are used:\n\n* **Detector**: interface for detecting the CS present at a given time. This interface takes an image as parameter and should return a ``list`` of ``ConvectiveSystem`` as a result. For each element, the ``geom`` attribute is defined. As an example, detection can be performed from a thresholding operation, i.e. ``ThresholdDetector``;\n* **Descriptor**: responsible for the characterization of CS. This entity defines, for each system, a list of **descriptive attributes**. It receives as parameters auxiliary data and a ``list`` of ``ConvectiveSystem``. For example, calculating statistical attributes such as mean, minimum and maximum temperatures - ``StatisticalDescriptor``;\n* **Tracker**: this interface aims to tracking the CS (i.e. **associate in time** the different elements detected in each observation). The abstract method takes as parameters two ``lists`` containing ``ConvectiveSystem`` of different time instants - ``previous`` and ``current``. As an example, the association can be performed from the topological relationship between the CS and the analysis of the intersection areas - ``OverlapAreaTracker``;\n* **Forecaster**: this interface is built to provide predictions for the CS. One option is to consider a conservative movement, based only on the current speed of the system - ``ConservativeForecaster``.\n\nPseudocode for detection, characterization, tracking and forecast of CS using the abstract interfaces:\n\n.. code-block:: python\n\n    images = load()\n    previous = None\n    for each image in images:\n        systems = detector.detect(images[i])\n        descriptor.describe(systems)\n        tracker.track(previous, systems)\n        forecaster.forecast(previous, systems)\n        previous = systems\n\nFrom Theory to Practice\n=======================\n\nThe set of code snippet below shows how to use the concepts proposed by TATHU package to identify and track CS using satellite imagery (GOES-16).\n\nUse a netCDF file with values measured by ABI/GOES-16, Channel 13, on June 15, 2021 - 00:00 UTC. A geographic region of interest (extent) and a spatial resolution are defined. The remapping is performed from the original satellite projection to a regular grid, with a LatLon/WGS84 coordinate system (EPSG:4326).\n\n.. code-block:: python\n\n    from tathu.constants import LAT_LON_WGS84\n    from tathu.satellite import goes_r\n\n    # Path to netCDF GOES-16 file (IR-window) - (\"past\")\n    path = './data/goes16/ch13/2021/06/ch13_202106150000.nc'\n\n    # Geographic area of regular grid\n    extent = [-100.0, -56.0, -20.0, 15.0]\n\n    # Grid resolution (kilometers)\n    resolution = 2.0\n\n    # Remap\n    grid = goes_r.sat2grid(path, extent, resolution, LAT_LON_WGS84)\n\nNext, let's detect CS followed by the definition of the statistical attributes. Use of ``detectors.LessThan`` and ``descriptors.StatisticalDescriptor``.\n\n.. code-block:: python\n\n    from tathu.tracking import detectors\n    from tathu.tracking import descriptors\n    from tathu.tracking.utils import area2degrees\n\n    # Threshold value\n    threshold = 230 # Kelvin\n\n    # Define minimum area\n    minarea = 3000 # km^2\n\n    # Convert to degrees^2\n    minarea = area2degrees(minarea)\n\n    # Create detector\n    detector = detectors.LessThan(threshold, minarea)\n\n    # Detect systems\n    systems = detector.detect(grid)\n\n    # Create statistical descriptor\n    attrs = ['min', 'mean', 'std', 'count']\n    descriptor = descriptors.StatisticalDescriptor(stats=attrs)\n\n    # Describe systems (stats)\n    descriptor.describe(grid, systems)\n\nExport the result to a CSV file ``systems.csv``:\n\n.. code-block:: python\n\n    from tathu.io import icsv\n    outputter = icsv.Outputter('systems.csv', writeHeader=True)\n    outputter.output(systems)\n\nFile preview. Each line represents an CS, which has a unique identifier, the date and other attributes::\n\n    name,timestamp,event,min,mean,count,std\n    c55f99b4-84a4-4b4b-8393-25aaaf85fb75,2022-06-15 00:00:20.400000,SPONTANEOUS_GENERATION,201.8952178955078,217.48695598417407,2022,8.098725295979632\n    dc616f08-e0cd-4a15-87ed-7becc5ab253a,2022-06-15 00:00:20.400000,SPONTANEOUS_GENERATION,201.8952178955078,216.17461281506226,3293,6.3141480994099926\n    ed97d8cc-d4e7-4a52-b686-1763bd0281f1,2022-06-15 00:00:20.400000,SPONTANEOUS_GENERATION,196.67169189453125,219.96122828784118,1209,6.635110324130535\n    e57dccdf-cf36-4f41-9160-840f29a9111e,2022-06-15 00:00:20.400000,SPONTANEOUS_GENERATION,218.91778564453125,224.71936994856722,1361,2.728877257772919\n    37f1de1a-871b-4b5d-b971-48ddb84cd1ed,2022-06-15 00:00:20.400000,SPONTANEOUS_GENERATION,203.6773681640625,212.5015689699793,966,6.889729660848631\n    32a42b28-74a1-4221-912e-c401d9051c88,2022-06-15 00:00:20.400000,SPONTANEOUS_GENERATION,191.32525634765625,209.74939927913496,19976,8.544348809460782\n\nThe visualization can be performed based on the following snippet:\n\n.. code-block:: python\n\n    from tathu.tracking.visualizer import MapView\n\n    # Create MapView component\n    m = MapView(extent)\n\n    # Plot grid\n    m.plotImage(grid, cmap='Greys', vmin=180.0, vmax=320.0)\n\n    # Plot systems\n    m.plotSystems(systems, edgecolor='red', centroids=True)\n\n    # Show GUI result\n    m.show()\n\n.. image:: https://github.com/uba/tathu/raw/master/docs/sphinx/img/map-view.png\n    :target: https://github.com/uba/tathu/raw/master/docs/sphinx/img/map-view.png\n    :alt: Map view component.\n\nThe same result can be exported to a database instance with geospatial support, like SpatiaLite and PostGIS:\n\n.. code-block:: python\n\n    from tathu.io import spatialite\n    database = spatialite.Outputter('systems.sqlite', 'systems', attrs)\n    database.output(systems)\n\nOnce the CS present in the image of June 15, 2021 - 00:00 UTC have been detected, it is now possible to perform the tracking. We use a new image, from the same day, 00:10 UTC. Use of ``trackers.OverlapAreaTracker``.\n\n.. code-block:: python\n\n    # Path to new netCDF GOES-16 file - (\"present\")\n    path = './data/goes16/ch13/2021/06/ch13_202106150010.nc'\n\n    # Remap\n    grid = goes_r.sat2grid(path, extent, resolution, LAT_LON_WGS84)\n\n    # Tracking\n    previous = systems\n    # Detect new systems\n    systems = detector.detect(grid)\n\n    from tathu.tracking import trackers\n\n    # Define overlap area criterion\n    overlapAreaCriterion = 0.1 # 10%\n\n    # Create overlap area strategy\n    strategy = trackers.RelativeOverlapAreaStrategy(overlapAreaCriterion)\n\n    # Create tracker entity\n    t = trackers.OverlapAreaTracker(previous, strategy=strategy)\n    t.track(current)\n\n    # Save to database\n    database.output(systems)\n\nFinally, the prediction of CS for future moments can be performed based on the following code fragment. Use of ``forecasters.Conservative``.\n\n.. code-block:: python\n\n    from tathu.tracking import forecasters\n\n    times = [15, 30, 45, 60, 90, 120] # minutes\n\n    # Forecaster entity\n    f = forecasters.Conservative(previous, intervals=times)\n\n    # Forecast result for each time\n    forecasts = f.forecast(current)\n\nConsidering that the different CS were detected and stored, the load process can be performed based on the following code snippet:\n\n.. code-block:: python\n\n    from tathu.io import spatialite\n\n    # Setup informations to load systems from database\n    dbname = 'systems.sqlite'\n    table = 'systems'\n\n    # Connect to database\n    db = spatialite.Loader(dbname, table)\n\n    # Get all-systems names\n    names = db.loadNames()\n\n    # Load first system, geometry and attributes\n    family = db.load(names[0], ['min', 'mean', 'std', 'count'])\n\nOther methods can be used to load CS more efficiently, for example: from the duration time, considering a day or a date range, based on a spatial restriction, among others. For more specific cases, it is also possible to perform a query directly to the database using SQL language.\n\n.. code-block:: python\n\n    # Load CS with life-cycle time-duration \u003e= 10 hours\n    systems = db.loadByDuration(10, operator='\u003e=')\n\n    # Load CS with life-cycle time-duration \u003c 1 hours\n    systems = db.loadByDuration(1, operator='\u003c')\n\n    # Load CS from day 26/06/2021\n    systems = db.loadByDay('20210626')\n\n      # Load CS using SQL query\n    systems = db.query('generic query example')\n\nThe CS lifecycle can be visualized, where each plot represents an instant of time in the systems life cycle.\n\n.. code-block:: python\n\n    from tathu.tracking import visualizer\n    view = visualizer.SystemHistoryView(family)\n    view.show()\n\n.. image:: https://github.com/uba/tathu/raw/master/docs/sphinx/img/system-life-cycle-view.png\n    :target: https://github.com/uba/tathu/raw/master/docs/sphinx/img/system-life-cycle-view.png\n    :width: 800\n    :alt: CS lifecycle view.\n\nReferences\n==========\n\nUBA, D. M.; NEGRI, R. G.; ENORÉ, D. P.; COSTA, I. C.; JORGE, A. A. S. TATHU - Software para rastreio e análise do ciclo de vida de sistemas convectivos. São José dos Campos: INPE, 2022. 39 p. IBI: \u003c8JMKD3MGP3W34T/47AF772\u003e. (sid.inpe.br/mtc-m21d/2022/07.20.15.45-NTC). Disponível em: \u003chttp://urlib.net/ibi/8JMKD3MGP3W34T/47AF772\u003e.\n\nPublications\n============\n\nTATHU has been used in research focused on detecting, tracking, and characterizing convective systems from diverse observational and modeling datasets. Below is a list of studies that have applied the package in analyses of storm life cycles, severe weather events, and atmospheric convection.\n\n* Lopes, C. D. C., Albrecht, R. I., Uba, D. M., Biscaro, T. S., and Saraiva, I.: Deep convection life cycle characteristics: a database from the GoAmazon experiment, Earth Syst. Sci. Data, 17, 5489–5505, https://doi.org/10.5194/essd-17-5489-2025, 2025.\n\n* Thayer, J. D., Kilroy, G., and Wildmann, N.: How do convective cold pools influence the atmospheric boundary layer near two wind turbines in northern Germany?, Wind Energ. Sci., 10, 2237–2255, https://doi.org/10.5194/wes-10-2237-2025, 2025.\n\n* Kilroy, Gerard, and Jeffrey D. Thayer. Evaluation of the WRF model for simulating deep convection and cold‐pool characteristics relevant to wind‐energy applications in Germany. Quarterly Journal of the Royal Meteorological Society (2025): https://doi.org/10.1002/qj.70042\n\n* Caio Atila P. Sena, Renato G. Negri, Maria Lívia L.M. Gava, GOES ABI-derived hailstorm polygons and tracking dataset for Brazil, Data in Brief, Volume 55, 2024, 110736, ISSN 2352-3409, https://doi.org/10.1016/j.dib.2024.110736.\n\n* Gatti, E.C.; da Costa, I.C.; Vila, D. Vertical Structure of Heavy Rainfall Events in Brazil. Meteorology 2024, 3, 310-332. https://doi.org/10.3390/meteorology3030016\n\n* Lopes, Camila da Cunha. Envigoração da convecção profunda? uma análise dos sistemas convectivos na Amazônia e do papel da termodinâmica e dos aerossóis. 2025. Tese (Doutorado em Meteorologia) - Instituto de Astronomia, Geofísica e Ciências Atmosféricas, University of São Paulo, São Paulo, 2024. doi:10.11606/T.14.2024.tde-22012025-200800. https://www.teses.usp.br/teses/disponiveis/14/14133/tde-22012025-200800/en.php\n\n* Monteiro, Carolina de Aguiar. Relações entre a atividade elétrica, óxidos de nitrogênio e partículas ultrafinas na Amazônia Central durante a estação chuvosa. 2022. Dissertação (Mestrado em Meteorologia) - Instituto de Astronomia, Geofísica e Ciências Atmosféricas, University of São Paulo, São Paulo, 2022. doi:10.11606/D.14.2022.tde-03012023-205036. https://www.teses.usp.br/teses/disponiveis/14/14133/tde-03012023-205036/en.php \n\nLicense\n=======\n\n.. admonition::\n    Copyright (C) 2022 INPE.\n\n    TATHU - Tracking and Analysis of Thunderstorms is free software; you can redistribute it and/or modify it\n    under the terms of the MIT License; see LICENSE file for more details.\n\nAbout Logo\n==========\n\nTATHU logo is inspired on `Armadillo icons created by Freepik - Flatico \u003chttps://www.flaticon.com/free-icons/armadillo\u003e`_.\n\nQuote\n=====\n\n.. epigraph::\n\n   \"The obvious is that which is never seen until someone expresses it with simplicity.\" Kahlil Gibran\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.5281/zenodo.17298147","https://doi.org/10.5194/essd-17-5489-2025","https://doi.org/10.5194/wes-10-2237-2025","https://doi.org/10.1002/qj.70042","https://doi.org/10.1016/j.dib.2024.110736","https://doi.org/10.3390/meteorology3030016"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/2182","html_url":"https://ost.ecosyste.ms/projects/2182"}