{"id":40048499,"url":"https://github.com/dvalters/fuse-netcdf","last_synced_at":"2026-01-19T05:38:01.095Z","repository":{"id":83653741,"uuid":"135290602","full_name":"dvalters/fuse-netcdf","owner":"dvalters","description":"ESoWC project to develop a Python utility to mount NetCDF files as a file-system in user space. (FUSE)","archived":false,"fork":false,"pushed_at":"2018-09-18T15:46:45.000Z","size":13837,"stargazers_count":8,"open_issues_count":11,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-06T21:19:13.917Z","etag":null,"topics":["filesystem","fuse","fuse-filesystem","fusepy","netcdf","netcdf4","python-netcdf4"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dvalters.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-05-29T12:10:05.000Z","updated_at":"2024-11-12T16:59:04.000Z","dependencies_parsed_at":"2023-03-12T19:02:09.439Z","dependency_job_id":null,"html_url":"https://github.com/dvalters/fuse-netcdf","commit_stats":{"total_commits":161,"total_committers":6,"mean_commits":"26.833333333333332","dds":0.5714285714285714,"last_synced_commit":"e53300ed5ebaf0c120ea4db4d338604f77ca7d69"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dvalters/fuse-netcdf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvalters%2Ffuse-netcdf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvalters%2Ffuse-netcdf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvalters%2Ffuse-netcdf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvalters%2Ffuse-netcdf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dvalters","download_url":"https://codeload.github.com/dvalters/fuse-netcdf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dvalters%2Ffuse-netcdf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28561903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T03:31:16.861Z","status":"ssl_error","status_checked_at":"2026-01-19T03:31:15.069Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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"}},"keywords":["filesystem","fuse","fuse-filesystem","fusepy","netcdf","netcdf4","python-netcdf4"],"created_at":"2026-01-19T05:38:00.335Z","updated_at":"2026-01-19T05:38:01.089Z","avatar_url":"https://github.com/dvalters.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/dvalters/fuse-netcdf.svg?branch=master)](https://travis-ci.org/dvalters/fuse-netcdf)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/8fc60d5b983c4a24920b6b53996e1fdd)](https://www.codacy.com/app/dvalters/fuse-netcdf?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=dvalters/fuse-netcdf\u0026amp;utm_campaign=Badge_Grade)\n\n[![Python 3.6](https://img.shields.io/badge/python-3.6-blue.svg)](https://www.python.org/downloads/release/python-360/)\n[![Python 2.7](https://img.shields.io/badge/python-2.7-blue.svg)](https://www.python.org/downloads/release/python-270/)\n\n\n\n# fuse-netcdf\nESoWC project for the netcdf-fusepy utility. (Work in progress)\n\n_See the wiki for proposal, workplan, other notes etc. https://github.com/dvalters/fuse-netcdf/wiki_\n\nThis readme contains a brief overview of how to use fuse-netcdf and some example output.\n\n## Usage\n\n\nThis is currently a work in progress, but the basic usage at the testing stage is as follows:\n\n```bash\npython fusenetcdf.py \u003cNetCDF_File.nc\u003e \u003cmountpoint\u003e\n```\n - The `fusenetcdf.py` is in the `fusenetcdf` directory.\n\n - The `\u003cNetCDF_File.nc\u003e` should be the path to your netcdf file. \n\n - You should create an empty folder which will be your mountpoint at `\u003cmountpoint\u003e`\n\nTo unmount the netCDF directory, use:\n\n```\nfusermount -u mntpoint/\n```\n\n### Example usage:\n\nFrom the linux terminal:\n\n(A sample netcdf file is provided in the `trial` folder)\n\n```\n(fusepy27) [dav@localhost fuse-netcdf]$ python fuse-netcdf/fusenetcdf.py trial/ECMWF_ERA-40_subset.nc trial/mntpoint/\n```\n\nYour netCDF file should now be mounted at `/trial/mntpoint` (Or wherever you created the mountpoint folder).\n\n#### What does the mounted netCDF file look like? (note: this is subject to change during development)\n\nIf we run the `tree` command in the top level directory, we get a structure like this:\n\n```\nmntpoint/\n├── netCDF_variable_name\n│   ├── DATA_REPR        # The representation of the Variable's data array (placeholder)\n│   ├── variable_attr1    # A file representing each attribute\n│   ├── variable_attr2    # More attributes for this variable etc.\n(and so on for each variable)\n```\n\nSo to see it with the example file, we get:\n\n```\n[dav@localhost trial]$ tree mntpoint/\nmntpoint/\n├── blh\n│   ├── add_offset\n│   ├── DATA_REPR\n│   ├── _FillValue\n│   ├── long_name\n│   ├── missing_value\n│   ├── scale_factor\n│   └── units\n├── cp\n│   ├── add_offset\n│   ├── DATA_REPR\n│   ├── _FillValue\n│   ├── long_name\n│   ├── missing_value\n│   ├── scale_factor\n│   └── units\n├── e\n│   ├── add_offset\n│   ├── DATA_REPR\n│   ├── _FillValue\n│   ├── long_name\n│   ├── missing_value\n│   ├── scale_factor\n│   └── units\n├── hcc\n│   ├── add_offset\n│   ├── DATA_REPR\n│   ├── _FillValue\n# etc etc.....\n```\n\nIf you are using a graphical file browser, the output is similar. Here is an example of what it should look like:\n\n![variable dirs](docs/variable_dirs.png)\n\n![var_attrs](docs/var_attrs.png)\n\n\n## Development resources\n\nExample of the fusepy module in use here (w/o netCDF)  https://github.com/dvalters/Python-miscellany/blob/master/fusepy.ipynb\n\nBlogpost example: https://medium.com/the-python-corner/writing-a-fuse-filesystem-in-python-5e0f2de3a813\n\nWhich is based on this example... https://github.com/skorokithakis/python-fuse-sample\n\nfusepy is not that well documented, but these resources have been useful (they mostly refer to the FUSE C-library)\n\nhttps://engineering.facile.it/blog/eng/write-filesystem-fuse/\n\nhttps://www.cs.hmc.edu/~geoff/classes/hmc.cs135.201001/homework/fuse/fuse_doc.html\n\nhttps://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/html/unclear.html\n\nhttp://www.maastaar.net/fuse/linux/filesystem/c/2016/05/21/writing-a-simple-filesystem-using-fuse/\n\nThis is a nice overview of what happens when  various filesytem operations are called: https://www.slideshare.net/matteobertozzi/pythonfuse-pycon4\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvalters%2Ffuse-netcdf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdvalters%2Ffuse-netcdf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdvalters%2Ffuse-netcdf/lists"}