{"id":26766223,"url":"https://github.com/ucl/scikit-surgerygoicp","last_synced_at":"2025-10-07T08:28:23.117Z","repository":{"id":92131782,"uuid":"269414594","full_name":"UCL/scikit-surgerygoicp","owner":"UCL","description":null,"archived":false,"fork":false,"pushed_at":"2022-03-24T13:28:12.000Z","size":1895,"stargazers_count":2,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-20T17:05:10.091Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UCL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2020-06-04T16:50:32.000Z","updated_at":"2024-05-06T17:08:10.000Z","dependencies_parsed_at":"2024-04-03T22:00:28.873Z","dependency_job_id":null,"html_url":"https://github.com/UCL/scikit-surgerygoicp","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/UCL/scikit-surgerygoicp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UCL%2Fscikit-surgerygoicp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UCL%2Fscikit-surgerygoicp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UCL%2Fscikit-surgerygoicp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UCL%2Fscikit-surgerygoicp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UCL","download_url":"https://codeload.github.com/UCL/scikit-surgerygoicp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UCL%2Fscikit-surgerygoicp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278742641,"owners_count":26037863,"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-07T02:00:06.786Z","response_time":59,"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":[],"created_at":"2025-03-28T20:19:32.011Z","updated_at":"2025-10-07T08:28:23.108Z","avatar_url":"https://github.com/UCL.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"scikit-surgerygoicp\n------------------\n\n[![Build Status](https://travis-ci.com/MattClarkson/scikit-surgerygoicp.svg?branch=master)](https://travis-ci.org/github/UCL/scikit-surgerygoicp)\n[![Build Status](https://ci.appveyor.com/api/projects/status/5pm89ej732c1ekf0/branch/master)](https://ci.appveyor.com/project/tdowrick/scikit-surgerygoicp)\n\n\nPurpose\n-------\n\nThis is a re-wrapping of the GoICP algorithm in https://github.com/aalavandhaann/go-icp_cython using PyBind11.\n\n`pip install scikit-surgerygoicp`\n\nWorking on Ubunutu (Python 3.6, 3.7, 3.8), Mac (3.6, 3.7, 3.8) and Windows (3.6, 3.7)\n\nUsage\n-----\n\nOnly the below classes have been wrapped:\n* GoICP\n* POINT3D\n* ROTNODE\n* TRANSNODE\n\nA simplified usage is shown below. See `Testing/test.py` for a full example.\n\n```\nimport numpy as np;\nfrom sksurgerygoicppython import GoICP, POINT3D, ROTNODE, TRANSNODE;\n\ndef loadPointCloud(filename):\n    pcloud = np.loadtxt(filename, skiprows=1);\n    plist = pcloud.tolist();\n    p3dlist = [];\n    for x,y,z in plist:\n        pt = POINT3D(x,y,z);\n        p3dlist.append(pt);\n    return pcloud.shape[0], p3dlist;\n\ngoicp = GoICP();\nNm, a_points = loadPointCloud('./Testing/Data/model_bunny.txt');\nNd, b_points = loadPointCloud('./Testing/Data/data_bunny.txt');\ngoicp.loadModelAndData(Nm, a_points, Nd, b_points);\ngoicp.setDTSizeAndFactor(300, 2.0);\ngoicp.BuildDT();\ngoicp.Register();\nprint(goicp.optimalRotation()); # A python list of 3x3 is returned with the optimal rotation\nprint(goicp.optimalTranslation());# A python list of 1x3 is returned with the optimal translation\n```\n\nCredits\n-------\n\nhttps://github.com/aalavandhaann/go-icp_cython\nhttps://github.com/yangjiaolong/Go-ICP\n\nPreferred Branching Workflow for Contributions.\n-----------------------------------------------\n\nWe welcome contributions to this project. Please use the following workflow.\n\n 1. Raise issue in this project's Github Issue Tracker.\n 2. Fork repository.\n 3. Create a feature branch called ```\u003cissue-number\u003e-\u003csome-short-description\u003e```\n    replacing ```\u003cissue-number\u003e``` with the Github issue number\n    and ```\u003csome-short-description\u003e``` with your description of the thing you are implementing.\n 4. Code on that branch.\n 5. Push to your remote when ready.\n 6. Create pull request.\n 7. We will review code, suggest and required changes and merge to master when it is ready.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fucl%2Fscikit-surgerygoicp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fucl%2Fscikit-surgerygoicp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fucl%2Fscikit-surgerygoicp/lists"}