{"id":304263,"name":"Castor","description":"A spatial, large-scale analytical model for simulating forest harvest and it's potential influence on other forest values (e.g., wildlife habitat).","url":"https://github.com/bcgov/castor","last_synced_at":"2026-04-08T03:30:41.270Z","repository":{"id":31985060,"uuid":"129300423","full_name":"bcgov/castor","owner":"bcgov","description":"Castor - decision support model for forest and land management ","archived":false,"fork":false,"pushed_at":"2026-03-18T21:23:10.000Z","size":370438,"stargazers_count":20,"open_issues_count":2,"forks_count":15,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-03-23T09:04:37.342Z","etag":null,"topics":["caribou","for","forest-analysis","forestry"],"latest_commit_sha":null,"homepage":"","language":"R","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/bcgov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"code_of_conduct","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":"2018-04-12T19:18:28.000Z","updated_at":"2026-03-18T21:23:14.000Z","dependencies_parsed_at":"2025-01-10T23:31:22.267Z","dependency_job_id":"ab35c9cd-a6c4-4e2f-aa1d-2a61cede58cc","html_url":"https://github.com/bcgov/castor","commit_stats":{"total_commits":3290,"total_committers":14,"mean_commits":235.0,"dds":0.6519756838905775,"last_synced_commit":"bd73303844c0f5c24a8c5752d347d8230579199e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bcgov/castor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcgov%2Fcastor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcgov%2Fcastor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcgov%2Fcastor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcgov%2Fcastor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bcgov","download_url":"https://codeload.github.com/bcgov/castor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcgov%2Fcastor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31215262,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-30T15:24:02.938Z","status":"ssl_error","status_checked_at":"2026-03-30T15:23:44.804Z","response_time":138,"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":"bcgov","name":"bcgov","uuid":"916280","kind":"organization","description":"This is the home for code that is open","email":"Developer.Experience@gov.bc.ca","website":"https://github.com/bcgov/BC-Policy-Framework-For-GitHub","location":"Canada","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/916280?v=4","repositories_count":2150,"last_synced_at":"2024-12-16T17:13:08.511Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/bcgov","funding_links":[],"total_stars":5184,"followers":687,"following":0,"created_at":"2022-11-05T11:06:51.523Z","updated_at":"2024-12-16T17:13:08.511Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bcgov","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bcgov/repositories"},"packages":[],"commits":{"id":6478029,"full_name":"bcgov/castor","default_branch":"main","total_commits":3305,"total_committers":14,"total_bot_commits":2,"total_bot_committers":1,"mean_commits":236.07142857142858,"dds":0.6508320726172465,"past_year_total_commits":6,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":6.0,"past_year_dds":0.0,"last_synced_at":"2026-03-31T00:03:36.404Z","last_synced_commit":"338716c0da57c4a33112cbcf8cc3cdae16067a07","created_at":"2024-11-21T00:12:29.804Z","updated_at":"2026-03-31T00:02:15.484Z","committers":[{"name":"Lochhead","email":"Kyle.Lochhead@gov.bc.ca","login":"KyleLochhead","count":1154},{"name":"Muhly","email":"Tyler.Muhly@gov.bc.ca","login":"TylerMuhly","count":761},{"name":"Kleynhans","email":"Elizabeth.Kleynhans@gov.bc.ca","login":"ElizabethKleynhans","count":517},{"name":"Lochhead","email":"KLOCHHEA@BCGOV","login":null,"count":323},{"name":"coraskaien","email":"cora.skaien@gov.bc.ca","login":"coraskaien","count":221},{"name":"Muhly","email":"TMUHLY@BCGOV","login":null,"count":191},{"name":"Sasha Bogdanovic","email":"sasha@rubyind.com","login":"sasha-ruby","count":70},{"name":"mwfowler","email":"mike.fowler@gov.bc.ca","login":"mwfowler","count":29},{"name":"Burgar","email":"Joanna.Burgar@gov.bc.ca","login":"joburgar","count":22},{"name":"Sasha Bogdanovic","email":"sasha@myaffiliates.com","login":"sasha-myaffiliates","count":11},{"name":"repo-mountie[bot]","email":"44246292+repo-mountie[bot]","login":"repo-mountie[bot]","count":2},{"name":"Joanna Burgar","email":"joburgar@Joannas-MBP.lan","login":null,"count":2},{"name":"Brett M","email":"brett.moore@nrcan-rncan.gc.ca","login":"BadgerOnABike","count":1},{"name":"'kylelochhead'","email":"'kyle.lochhead@gov.bc.ca'","login":null,"count":1}],"past_year_committers":[{"name":"Kleynhans","email":"Elizabeth.Kleynhans@gov.bc.ca","login":"ElizabethKleynhans","count":6}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcgov%2Fcastor/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-02T00:00:08.713Z","repositories_count":6208611,"commits_count":927075645,"contributors_count":35791072,"owners_count":1144163,"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":"bcgov/castor","html_url":"https://github.com/bcgov/castor","last_synced_at":"2026-03-31T00:00:29.335Z","status":"error","issues_count":30,"pull_requests_count":81,"avg_time_to_close_issue":51271910.37931035,"avg_time_to_close_pull_request":12026.592592592593,"issues_closed_count":29,"pull_requests_closed_count":81,"pull_request_authors_count":4,"issue_authors_count":4,"avg_comments_per_issue":1.6333333333333333,"avg_comments_per_pull_request":0.04938271604938271,"merged_pull_requests_count":72,"bot_issues_count":4,"bot_pull_requests_count":2,"past_year_issues_count":1,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2024-11-21T00:12:34.579Z","updated_at":"2026-03-31T00:00:29.335Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcgov%2Fcastor","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcgov%2Fcastor/issues","issue_labels_count":{"enhancement":15,"bug":6,"invalid":1,"good first issue":1,"computing":1,"documentation":1},"pull_request_labels_count":{},"issue_author_associations_count":{"COLLABORATOR":30,"CONTRIBUTOR":4,"NONE":2},"pull_request_author_associations_count":{"COLLABORATOR":79,"CONTRIBUTOR":2,"NONE":1},"issue_authors":{"TylerMuhly":21,"KyleLochhead":7,"repo-mountie[bot]":4,"rhiand":2,"agehlers":2},"pull_request_authors":{"TylerMuhly":69,"ElizabethKleynhans":5,"KyleLochhead":5,"repo-mountie[bot]":2,"BadgerOnABike":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-02T00:00:07.988Z","repositories_count":14036459,"issues_count":34409181,"pull_requests_count":112562799,"authors_count":11215775,"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":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"TylerMuhly","count":90,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/TylerMuhly"},{"login":"KyleLochhead","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/KyleLochhead"},{"login":"ElizabethKleynhans","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ElizabethKleynhans"},{"login":"rhiand","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/rhiand"}],"active_maintainers":[]},"events":{"total":{"ForkEvent":1,"IssuesEvent":10,"WatchEvent":2,"IssueCommentEvent":7,"PushEvent":49,"GollumEvent":11},"last_year":{"WatchEvent":1,"PushEvent":2,"GollumEvent":11}},"keywords":["caribou","for","forest-analysis","forestry"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/static.yml","sha":null,"kind":"manifest","created_at":"2023-01-14T20:31:09.858Z","updated_at":"2023-01-14T20:31:09.858Z","repository_link":"https://github.com/bcgov/castor/blob/main/.github/workflows/static.yml","dependencies":[{"id":6905881759,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":6905881760,"package_name":"actions/configure-pages","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6905881761,"package_name":"actions/upload-pages-artifact","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":6905881762,"package_name":"actions/deploy-pages","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]}],"score":5.730099782973575,"created_at":"2024-11-21T00:12:26.901Z","updated_at":"2026-04-08T03:30:41.322Z","avatar_url":"https://github.com/bcgov.png","language":"R","category":"Biosphere","sub_category":"Forest Observation and Management","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"[![img](https://img.shields.io/badge/Lifecycle-Experimental-339999)](https://github.com/bcgov/repomountie/blob/master/doc/lifecycle-badges.md)\n## Castor - Forest and Land Use Simulator\n### Description and Usage\nCastor is a spatial, large-scale analytical model for simulating forest harvest and it's potential influence on other forest values (e.g., wildlife habitat). It was first designed to support the government of British Columbia's caribou recovery program, by providing a tool to spatially estimate future forestry and caribou habitat conditions under hypothetical, alternative forest management regimes. It has since been and will continue to be expanded and developed to examine other forest values. \n\nThe code in this GitHub is open-source and provides a transparent record of the Castor model. Anyone is free to download, reproduce and apply the model. However, this is not a self-contained piece of software. In particular, using Castor as-is requires accessing our data management framework, or modifying the code here to work with your preferred data structure. The repository here also consists of code to create backend apps to develop Castor model scenarios and review outputs. \n\n\n### Getting Help or Reporting an Issue\n\nWe've developed a [Wiki page](https://github.com/bcgov/castor/wiki) to help you with understanding the structure and functions of the Castor model. We are also working on a [tutorial](https://github.com/bcgov/castor/blob/main/documentation/clus_quick_start_tutorial.md) that will describe the steps to get a basic Castor model up and running. \n\nOnce you are familiar with Castor, if you find any errors with the code, please submit them via the GitHub  [\"Issues\"](https://github.com/bcgov/castor/issues) tab.\n\nFor more information on working with the Castor team and model for a forest management problem, please don't hesitate to contact Tyler Muhly (tyler.muhly@gov.bc.ca), Team Lead, Strategic Analysis, Forest Analysis and Inventory Branch, Office of the Chief Forester, Ministry of Forests.  \n\n### Core Team\nTyler Muhly, Team Lead, Strategic Analysis, Forest Analysis and Inventory Branch, Office of the Chief Forester, Ministry of Forests\n\nKyle Lochhead, Ecological Modeling Specialist, Forest Analysis and Inventory Branch, Office of the Chief Forester, Ministry of Forests\n\nElizabeth Kleynhans, Ecological Modeling Specialist, Forest Analysis and Inventory Branch, Office of the Chief Forester, Ministry of Forests\n\n### Contributors\nMike Fowler, Spatial Data Analyst, Forest Analysis and Inventory Branch, Office of the Chief Forester, Ministry of Forests\n\nCora Skaien, Ecological Modeling Specialist, Forest Analysis and Inventory Branch, Office of the Chief Forester, Ministry of Forests\n\n### Requirements\nThe model is coded using the R programming language. Thus, you will need to [download program R](https://cran.r-project.org/bin/windows/base/) to work with the code. We also recommend downloading the free version of [RStudio](https://rstudio.com/products/rstudio/download/), which provides a nice integrated development environment for working with R. \n\nR consists of many 'packages' developed by R users that bundle-up specific functions for manipulating, analyzing and visualizing data. The packages needed to run Castor are documented in the respective pieces of code where they are used, and we do not list them all here. However, we note here that you will need the open source simulation engine ['SpaDES'](https://spades.predictiveecology.org/) R package to use Castor. We recommend familiarizing yourself with this package if you want to use Castor.\n\n### License\nCopyright 2020-2021 Province of British Columbia\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at \n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n### Purpose of Castor\nThe purpose of Castor is *compare* alternative *plausible* scenarios of various human-centric forestry decisions in a simulation environment. The relative comparison between scenarios is the true value/purpose of these analyses, whereas, the absolute values of the outcomes should be used with caution. What is deemed *plausible* is left to the quality of the information being used and the resulting logic of the human-centric decisions about harvest scheduling.  \n\n###\tAssumptions and Overview\nThe Castor model is a spatial strategic model used for quantifying and accounting the impacts of forest management on various indicators over long time periods. Thus, its ability to design site specific plans and their corresponding operations is very limited. Fine scale, operational decisions are important but their complexity is simplified in Castor to meet the resolution (e.g., 1 ha)  and scale (e.g., multiple Timber Supply Areas, very large landscapes (\u003e 1 M ha), long time horizons \u003e 100 years) of the study area. The model uses empirical yield curves (from provincial growth models) to project the forest inventory (VRI) attributes into the future. Human-centric decisions around harvest scheduling are the main assumptions which include WHAT, WHERE, WHEN and HOW much timber to harvest. The model is given a demand of timber volume for each time period (i.e., the HOW much) and the goal of Castor is to “find” that timber volume while meeting various constraints like no harvest areas and aspatial land cover constraints. Castor uses some rules around minimum harvest criteria (i.e, merchantable volume \u003e 150 m3 per ha, etc) to determine WHAT gets harvested. Castor uses a priority (closest to disturbance, oldest age, etc) to figure out the WHERE and WHEN to “find” the timber volume in a specific time period. Castor is “greedy” in that it can’t figure out how to find the optimal harvest schedule. The result of a Castor simulation is a *plausible* harvesting sequence that allows cutblock size, adjacency and other spatial considerations.\n\n\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["flnr","forest-management","shiny-apps"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/304263","html_url":"https://ost.ecosyste.ms/projects/304263"}