{"id":23972597,"url":"https://github.com/5tefan/py-netcdf-timeseries-gui","last_synced_at":"2026-05-29T16:31:35.710Z","repository":{"id":75017235,"uuid":"70283283","full_name":"5tefan/py-netcdf-timeseries-gui","owner":"5tefan","description":"A Python Qt5 GUI supporting exploratory analysis and visualization of time series based data from NetCDF files.","archived":false,"fork":false,"pushed_at":"2021-03-08T18:08:41.000Z","size":165,"stargazers_count":3,"open_issues_count":7,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-02T02:29:32.583Z","etag":null,"topics":["analysis","gui","netcdf","python","time-series"],"latest_commit_sha":null,"homepage":"","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/5tefan.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2016-10-07T21:12:31.000Z","updated_at":"2025-08-15T00:41:59.000Z","dependencies_parsed_at":"2023-02-28T22:45:50.717Z","dependency_job_id":null,"html_url":"https://github.com/5tefan/py-netcdf-timeseries-gui","commit_stats":{"total_commits":57,"total_committers":2,"mean_commits":28.5,"dds":"0.17543859649122806","last_synced_commit":"47a46c576eef51e7b840b1cd48f58fc508b6beda"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/5tefan/py-netcdf-timeseries-gui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5tefan%2Fpy-netcdf-timeseries-gui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5tefan%2Fpy-netcdf-timeseries-gui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5tefan%2Fpy-netcdf-timeseries-gui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5tefan%2Fpy-netcdf-timeseries-gui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/5tefan","download_url":"https://codeload.github.com/5tefan/py-netcdf-timeseries-gui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5tefan%2Fpy-netcdf-timeseries-gui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33662205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"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":["analysis","gui","netcdf","python","time-series"],"created_at":"2025-01-07T03:32:45.006Z","updated_at":"2026-05-29T16:31:35.691Z","avatar_url":"https://github.com/5tefan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python NetCDF Time Series Plot GUI\n\nThe Python NetCDF Time Series GUI (pyntpg) is a tool to visualize and \ndo analysis with series data in NetCDF format. \n\n## Overview \n\nThe goal of the project is to streamline analysis and visualization of\nNetCDF time series data. The program allows you to produce basic time \nseries and scatter plots without writing any code. The integrated Ipython\nconsole allows the user to perform any kind of data processing possible\nin Python and display the results. \n\nThe software package brings together many powerful third party components, making use of:\n\n* PyQt4 Python bindings to the Qt UI library\n* netcdf4-python interface to the netCDF C library\n* matplotlib python visualization and plotting library\n* Jupyter IPython console and kernel, qtconsole\n \nOne goal of continued ddevelopment on the interface is focusing on improving the \nmodularity such that adapting to new features may only require rewriting\nlimited pieces of the interface. The panel_configurer for new plot styles\nor the dataset_tabs for reading new data types. \n\n## Usage\n\nA tutorial workflow is described below \n\n 1. Open NetCDF files using the \"Add Files\" button on the dataset tab, or by \n    selecting dataset -\u003e Open files from the menu. Multiple files may be \n    selected which will then be concatenated into one underlying netcdf file\n    object. Note that the files must have the same format, otherwise \n    concatenation will fail.\n 2. When the import is successful, the progress bar will disappear and an \n    ncinfo like preview of the file will be displayed in the right hand text box.\n    At this point, a variable with the same name your dataset tab (\"dataset\" is\n    the default for the first tab) is available in the IPython console, accessible\n    from Edit -\u003e Open IPython Console. More datasets can be added by clicking the\n    \"+\" tab, or from File -\u003e New Dataset.\n 3. In the plot tab below, customize the panel layout to your preference. We will\n    opt for two side by side panels for demonstration. Drag the black bars to the\n    nearest edge until the number disappears and you are left with two equally \n    sized panels labeled 0 and 1. \n 4. Below, under \"y axis picker\", configure the From field to be \"dataset\", and \n    choose a variable. To make the tutorial simple, hopefully the variable you \n    selected only depends on the time dimension, but if not, options to flatten \n    into a 1 dimensional array should appear. \n 5. Under \"x axis picker\", select the datetime radio button, then again configure\n    the From field to be \"dataset\", and choose the variable representing time. If\n    the units are configured correctly, the date range of your data should display\n    in the start and end boxes. You may configure the start and end to constrain\n    what is shown.\n 6. Stroke color and Stroke style should be ok, feel free to change the color. The\n    Stroke style indicators are exactly from matplotlib, '-' is a solid line, '*' \n    makes each point a star, etc. See matplotlib documentation for more. The Panel \n    destination box indicates which panel the data you just configured will be \n    drawn on. You can add the line to panels that are not currently on the layout,\n    they will appear if you change their number or add the panel number it is \n    specified on back to they layout. Click \"Add to Queue\" and the line should \n    appear in the \"Queue to plot\". You can right click the queued line to change\n    color, line style, or the panel it is attached to at any time. \n 7. Next, we will create a scatter plot to add to panel 1 by changing, under \"x\n    axis picker\" the radio button to other. Select another variable to plot \n    a scatter plot against. I suggest selecting line style '.' for scatter plot.\n    Select panel destination 1 and Add to Queue. \n 8. Finally, to display the plot, click the green \"Create Plot\" button at the \n    bottom. A toolbar within the window that should appear allows you to zoom,\n    pan, save, and even configure the axes (eg. log, linear, min, max) as well\n    as options to change the title and labels.\n    \n \n\n# TODO\n\n* Opening frequency analysis wizards takes a while, especially for lots of data.\nIe, complexity of opening a wizard is at least O(n) in size of data, which should not\nbe the case! from some initial profiling,\n`python -m cProfile -s cumtime pyntpg/main.py \u003e profile.log`, and code inspection,\nthis appears to be due to the calls from signal\\_picker, specifically the get\\_values \ncall is expensive. \n* ability to transport/compose wizard plots to plot tab queue\n* catch errors coming out of the analysis wizard and appropriately intercept in preview\\_result\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F5tefan%2Fpy-netcdf-timeseries-gui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F5tefan%2Fpy-netcdf-timeseries-gui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F5tefan%2Fpy-netcdf-timeseries-gui/lists"}