{"id":194169,"name":"Fractional Cover","description":"A remote sensing algorithm which measures the photosynthetic, non-photosynthetic and bare earth components of a Landsat image.","url":"https://github.com/geoscienceaustralia/fc","last_synced_at":"2026-04-30T13:30:21.662Z","repository":{"id":22453056,"uuid":"60825624","full_name":"GeoscienceAustralia/fc","owner":"GeoscienceAustralia","description":"Fractional Cover","archived":false,"fork":false,"pushed_at":"2024-10-09T03:15:48.000Z","size":641,"stargazers_count":13,"open_issues_count":4,"forks_count":8,"subscribers_count":40,"default_branch":"master","last_synced_at":"2026-04-09T03:02:49.559Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GeoscienceAustralia.png","metadata":{"files":{"readme":"README.rst","changelog":null,"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}},"created_at":"2016-06-10T05:15:32.000Z","updated_at":"2026-03-20T20:44:54.000Z","dependencies_parsed_at":"2024-09-06T11:57:48.402Z","dependency_job_id":"7aac2479-340b-42aa-b5d3-8ba56ab4983d","html_url":"https://github.com/GeoscienceAustralia/fc","commit_stats":{"total_commits":343,"total_committers":21,"mean_commits":"16.333333333333332","dds":0.6676384839650146,"last_synced_commit":"f2a7481ae6cdf15ddea6aac93918830f9c55033e"},"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/GeoscienceAustralia/fc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeoscienceAustralia%2Ffc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeoscienceAustralia%2Ffc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeoscienceAustralia%2Ffc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeoscienceAustralia%2Ffc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GeoscienceAustralia","download_url":"https://codeload.github.com/GeoscienceAustralia/fc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GeoscienceAustralia%2Ffc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31918838,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","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":{"login":"GeoscienceAustralia","name":"Geoscience Australia","uuid":"4704285","kind":"organization","description":"","email":null,"website":"http://www.ga.gov.au/","location":"Canberra, Australia","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/4704285?v=4","repositories_count":333,"last_synced_at":"2024-04-14T15:25:37.066Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/GeoscienceAustralia","funding_links":[],"total_stars":2163,"followers":226,"following":0,"created_at":"2022-11-03T14:04:11.584Z","updated_at":"2024-04-14T15:26:26.969Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GeoscienceAustralia","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GeoscienceAustralia/repositories"},"packages":[],"commits":{"id":1549575,"full_name":"geoscienceaustralia/fc","default_branch":"master","total_commits":343,"total_committers":21,"total_bot_commits":1,"total_bot_committers":1,"mean_commits":16.333333333333332,"dds":0.6676384839650146,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-04-27T12:03:37.706Z","last_synced_commit":"f2a7481ae6cdf15ddea6aac93918830f9c55033e","created_at":"2024-06-10T00:15:05.251Z","updated_at":"2026-04-27T12:01:20.607Z","committers":[{"name":"Damien Ayers","email":"damien@omad.net","login":"omad","count":114},{"name":"andrewdhicks","email":"andrew.hicks@ga.gov.au","login":"andrewdhicks","count":86},{"name":"Duncan Gray","email":"duncan.gray@ga.gov.au","login":"dunkgray","count":58},{"name":"Jeremy Hooke","email":"jez@stulk.com","login":"jeremyh","count":26},{"name":"Santosh Mohan","email":"santosh.mohan@ga.gov.au","login":null,"count":24},{"name":"Kirill Kouzoubov","email":"kirill888@gmail.com","login":"Kirill888","count":7},{"name":"Simon Oliver","email":"simon.oliver@ga.gov.au","login":"simonaoliver","count":5},{"name":"Emma Ai","email":"emmaai","login":"emmaai","count":4},{"name":"Alex Leith","email":"alexgleith@gmail.com","login":"alexgleith","count":3},{"name":"Ariana Barzinpour","email":"ariana.barzinpour@ga.gov.au","login":null,"count":3},{"name":"santoshamohan","email":"39038859+santoshamohan","login":"santoshamohan","count":2},{"name":"Duncan Gray","email":"dsg547@raijin2.(none)","login":null,"count":2},{"name":"David Gavin","email":"GypsyBojangles","login":"GypsyBojangles","count":1},{"name":"FeiZhang2","email":"fei2zhang@gmail.com","login":"kodexp","count":1},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":1},{"name":"eloise-b","email":"elly.birchall@gmail.com","login":"eloise-b","count":1},{"name":"Emma Ai","email":"emma.ai@ga.gov.au","login":null,"count":1},{"name":"Duncan Gray","email":"dsg547@raijin6.(none)","login":null,"count":1},{"name":"Duncan Gray","email":"dsg547@raijin1.(none)","login":null,"count":1},{"name":"Alex Vincent","email":"alexander.vincent@ga.gov.au","login":null,"count":1},{"name":"harshurampur","email":"harshu.rampur@ga.gov.au","login":"harshurampur","count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/geoscienceaustralia%2Ffc/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-29T00:00:10.453Z","repositories_count":6222919,"commits_count":899829989,"contributors_count":34897655,"owners_count":1147472,"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":"geoscienceaustralia/fc","html_url":"https://github.com/geoscienceaustralia/fc","last_synced_at":"2026-04-27T12:01:11.386Z","status":"error","issues_count":7,"pull_requests_count":53,"avg_time_to_close_issue":51389900.5,"avg_time_to_close_pull_request":1861210.5961538462,"issues_closed_count":4,"pull_requests_closed_count":52,"pull_request_authors_count":15,"issue_authors_count":7,"avg_comments_per_issue":0.7142857142857143,"avg_comments_per_pull_request":1.2641509433962264,"merged_pull_requests_count":48,"bot_issues_count":0,"bot_pull_requests_count":1,"past_year_issues_count":3,"past_year_pull_requests_count":3,"past_year_avg_time_to_close_issue":174184.0,"past_year_avg_time_to_close_pull_request":833406.5,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.6666666666666666,"past_year_avg_comments_per_pull_request":1.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":1,"past_year_merged_pull_requests_count":2,"created_at":"2024-06-10T00:15:11.980Z","updated_at":"2026-04-27T12:01:11.386Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/geoscienceaustralia%2Ffc","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/geoscienceaustralia%2Ffc/issues","issue_labels_count":{},"pull_request_labels_count":{"dependencies":2},"issue_author_associations_count":{"CONTRIBUTOR":4,"NONE":3},"pull_request_author_associations_count":{"CONTRIBUTOR":49,"MEMBER":3,"NONE":2,"COLLABORATOR":1},"issue_authors":{"omad":1,"santoshamohan":1,"fangfy":1,"jessjaco":1,"andrewdhicks":1,"Kirill888":1,"vikineema":1},"pull_request_authors":{"omad":12,"santoshamohan":9,"emmaai":7,"dunkgray":7,"andrewdhicks":5,"jeremyh":3,"alexgleith":2,"Kirill888":2,"dependabot[bot]":2,"eloise-b":1,"GypsyBojangles":1,"jessjaco":1,"harshurampur":1,"Ariana-B":1,"ASVincent":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-29T00:00:10.439Z","repositories_count":14445154,"issues_count":34208297,"pull_requests_count":112308498,"authors_count":11248670,"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":{"NONE":1},"past_year_pull_request_author_associations_count":{"NONE":1},"past_year_issue_authors":{"jessjaco":1},"past_year_pull_request_authors":{"jessjaco":1},"maintainers":[{"login":"jeremyh","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jeremyh"},{"login":"Ariana-B","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Ariana-B"}],"active_maintainers":[]},"events":{"total":{"IssuesEvent":2,"MemberEvent":2,"PullRequestEvent":1,"ForkEvent":1},"last_year":{"IssuesEvent":1,"MemberEvent":2,"PullRequestEvent":1,"ForkEvent":1}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-09-05T16:30:59.248Z","updated_at":"2022-09-05T16:30:59.248Z","repository_link":"https://github.com/GeoscienceAustralia/fc/blob/master/setup.py","dependencies":[{"id":3921588209,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":3921588210,"package_name":"numexpr","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":3921588211,"package_name":"datacube","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":3921588212,"package_name":"click","ecosystem":"pypi","requirements":"\u003e=6.0","direct":true,"kind":"runtime","optional":false},{"id":3921588213,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":3921588214,"package_name":"digitalearthau","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/publish-pypi.yml","sha":null,"kind":"manifest","created_at":"2023-01-11T21:37:56.571Z","updated_at":"2023-01-11T21:37:56.571Z","repository_link":"https://github.com/GeoscienceAustralia/fc/blob/master/.github/workflows/publish-pypi.yml","dependencies":[{"id":6872246154,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6872246155,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":6872246156,"package_name":"pypa/gh-action-pypi-publish","ecosystem":"actions","requirements":"release/v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/tests.yaml","sha":null,"kind":"manifest","created_at":"2023-01-11T21:37:56.621Z","updated_at":"2023-01-11T21:37:56.621Z","repository_link":"https://github.com/GeoscienceAustralia/fc/blob/master/.github/workflows/tests.yaml","dependencies":[{"id":6872246157,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6872246158,"package_name":"conda-incubator/setup-miniconda","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6872246159,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6872246160,"package_name":"codecov/codecov-action","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6872246161,"package_name":"actions/download-artifact","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6872246162,"package_name":"jakejarvis/s3-sync-action","ecosystem":"actions","requirements":"master","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"pyproject.toml","sha":null,"kind":"manifest","created_at":"2024-06-12T03:31:51.336Z","updated_at":"2024-06-12T03:31:51.336Z","repository_link":"https://github.com/GeoscienceAustralia/fc/blob/master/pyproject.toml","dependencies":[]}],"score":5.87773578177964,"created_at":"2024-06-10T00:15:03.921Z","updated_at":"2026-04-30T13:30:21.666Z","avatar_url":"https://github.com/GeoscienceAustralia.png","language":"Python","category":"Natural Resources","sub_category":"Soil and Land","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"=======================\n Fractional Cover (FC)\n=======================\n\n|Build Status| |Coverage Status|\n\n`Fractional Cover`_ is a remote sensing algorithm which measures the\nphotosynthetic, non-photosynthetic and bare earth components of a Landsat image.\n\nThis repository implements Fractional Cover as used by `Digital Earth Australia`_\nfor the production of the `Fractional Cover Data Product \u003cFractional Cover\u003e`_.\nThe implementation is Python, with the core algorithm in Fortran.\n\nData production is either by a command line application that runs on the NCI_,\nor a `Virtual Product`_ class run by `Datacube Alchemist`_ on AWS.\n\n\n.. contents::\n\n.. _Fractional Cover: https://cmi.ga.gov.au/data-products/dea/119/dea-fractional-cover-landsat\n.. _NCI: https://www.nci.org.au/\n.. _Datacube Alchemist: https://github.com/opendatacube/datacube-alchemist/\n.. _Virtual Product: https://datacube-core.readthedocs.io/en/latest/dev/api/virtual-products.html\n.. _Digital Earth Australia: https://www.ga.gov.au/dea\n\n\n.. |Build Status| image:: https://github.com/GeoscienceAustralia/fc/workflows/Tests/badge.svg\n    :target: https://github.com/GeoscienceAustralia/fc/actions?query=workflow%3ATests\n\n.. |Coverage Status| image:: https://codecov.io/gh/GeoscienceAustralia/fc/branch/master/graph/badge.svg?token=wpeulGrrUT\n    :target: https://codecov.io/gh/GeoscienceAustralia/fc\n\nInstallation\n============\n\nThe easiest way to install Fractional Cover is::\n\n    pip install --extra-index-url=https://packages.dea.ga.gov.au/ fc\n\nThis package includes the compiled Fortran extensions to run about 15 times faster than the Python+scipy version\nyou get by default without a Fortran compiler.\n\nSetup on VDI\n============\n\nThe first time you try to use gadi PBS commands from VDI, you will need\nto run::\n\n    $ remote-hpc-cmd init\n\nSee http://vdi.nci.org.au/help#heading=h.u1kl1j7vdt16 for more details.\n\nYou will also need to setup datacube to work from VDI and gadi.\n\n::\n\n    $ ssh gadi \"cat .pgpass\" \u003e\u003e ~/.pgpass\n    $ chmod 0600 ~/.pgpass\n\nSee http://geoscienceaustralia.github.io/digitalearthau/connect/nci_basics.html for\nfull details.\n\nRunning\n-------\n\nThe Fractional Cover application works in 2 parts:\n\n    #. Creating the task list\n    #. Check for unexpected existing files - these were most likely created during an run that did not successfully\n       finish.\n    #. Submit the job to gadi.\n\nTo run fractional cover::\n\n    $ module use /g/data/v10/public/modules/modulefiles/\n    $ module load dea\n\nThis will list the available app configs::\n\n    $ datacube-fc list\n    ls5_fc_albers.yaml\n    ls7_fc_albers.yaml\n    ls8_fc_albers.yaml\n\nTo submit the job to ``gadi``, the datacube-fc app has a the ``datacube-fc submit`` command:\nThis command kick off two stage PBS job\n\n    Stage 1 (Generate task file):\n        The task-app machinery loads a config file, from a path specified on the\n        command line, into a dict.\n\n        If dry is enabled, a dummy DatasetType is created for tasks generation without indexing\n        the product in the database.\n        If dry run is disabled, generate tasks into file and queue PBS job to process them.\n\n    Stage 2 (Run):\n        During normal run, following are performed:\n           1) Tasks (loadables (nbart,ps,dsm) + output targets) shall be yielded for dispatch to workers.\n           2) Load data\n           3) Run FC algorithm\n           4) Attach metadata\n           5) Write output files and\n           6) Finally index the newly created FC output files\n\n        If dry run is enabled, application only prepares a list of output files to be created and does not\n        record anything in the database.\n\nTracking progress\n-----------------\n\n::\n\n    $ qstat -u $USER\n\n    $ qcat 7517348.gadi-pbs | head\n\n    $ qcat 7517348.gadi-pbs | tail\n\n    $ qps 7517348.gadi-pbs\n\nFile locations\n--------------\n\nThe config file (eg. ls5_fc_albers.yaml) specifies the app settings, and is found in the module.\n\nYou will need to check the folder of the latest ``dea`` module::\n\n    ls /g/data/v10/public/modules/dea/\u003cYYYYMMDD\u003e/lib/python3.6/site-packages/fc/config\n\nThe config file lists the output `location` and file_path_template``, as shown in this snippet::\n\n    source_type: ls5_nbar_albers\n    output_type: ls5_fc_albers\n\n    description: Landsat 5 Fractional Cover 25 metre, 100km tile, Australian Albers Equal Area projection (EPSG:3577)\n    product_type: fractional_cover\n    \n    location: '/g/data/fk4/datacube/002/'\n    file_path_template: 'LS5_TM_FC/{tile_index[0]}_{tile_index[1]}/LS5_TM_FC_3577_{tile_index[0]}_{tile_index[1]}_{start_time}_v{version}.nc'\n\nSo here the output files are saved to ``/g/data/fk4/datacube/002/FC/LS5_TM_FC/\u003ctile_index\u003e/*.nc``\n\nFile naming\n===========\n\nSpecify a template string used to name the output files. Uses the python ``format()`` string syntax, with the following placeholders available:\n\n\n==============  ==============\n  Placeholder    Description\n==============  ==============\ntile_index[0]    X Tile Index\ntile_index[1]    Y Tile Index\nregion code      The region code of the input dataset\nepoch_start      Start date of the epoch, format using `strftime` syntax\nepoch_end        End date of the epoch, format using `strftime` syntax\nversion          Task timestamp\nstart_time       Start time in `%Y%m%d%H%M%S%f` format\nend_time         End time in `%Y%m%d%H%M%S%f` format\n==============  ==============\n\nFor example:\n\n.. code-block:: yaml\n\n       file_path_template: '{y}_{x}/LS_PQ_COUNT_3577_{y}_{x}_{epoch_start:%Y-%m-%d}_{epoch_end:%Y-%m-%d}.nc'\n\nWill output filenames similar to:\n\n.. code-block:: bash\n\n    10_15/LS_PQ_COUNT_3577_10_15_2010-01-01_2011-01-01.nc\n\n\nLicense\n-------\nThis repository is licensed under the Apache License 2.0. See the `LICENSE file \u003cLICENSE\u003e`_ in this repository for details.\n\n\nContacts\n--------\nGeoscience Australia developers:\n\n**Joshua Sixsmith**\njoshua.sixsmith@ga.gov.au\n\n**Jeremy Hooke**\njeremy.hooke@ga.gov.au\n\n**Damien Ayers**\ndamien.ayers@ga.gov.au\n\n**Duncan Gray**\nduncan.gray@ga.gov.au\n\nAlgorithm developer:\n\n**Peter Scarth**\npeter.scarth@qld.gov.au\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["gdal","opendatacube","earthobservation","remotesensing","ogc-services","earth-observation","digitalearthaustralia","geoscienceaustralia","geospatial-data","sentinel-2"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/194169","html_url":"https://ost.ecosyste.ms/projects/194169"}