{"id":17163427,"url":"https://github.com/gf712/prostruct","last_synced_at":"2026-05-04T04:31:56.333Z","repository":{"id":132116195,"uuid":"127311655","full_name":"gf712/ProStruct","owner":"gf712","description":"Protein structure library for C++ and Python","archived":false,"fork":false,"pushed_at":"2019-05-31T06:59:52.000Z","size":828,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-29T21:54:56.412Z","etag":null,"topics":["bioinformatics","cpp","protein-structure-analysis","python","swig"],"latest_commit_sha":null,"homepage":"","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/gf712.png","metadata":{"files":{"readme":"README.md","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":"2018-03-29T15:33:13.000Z","updated_at":"2020-02-28T11:59:49.000Z","dependencies_parsed_at":"2023-05-27T03:00:29.420Z","dependency_job_id":null,"html_url":"https://github.com/gf712/ProStruct","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gf712%2FProStruct","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gf712%2FProStruct/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gf712%2FProStruct/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gf712%2FProStruct/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gf712","download_url":"https://codeload.github.com/gf712/ProStruct/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245315290,"owners_count":20595216,"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","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":["bioinformatics","cpp","protein-structure-analysis","python","swig"],"created_at":"2024-10-14T22:49:01.387Z","updated_at":"2026-05-04T04:31:51.314Z","avatar_url":"https://github.com/gf712.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n[![Build Status](https://travis-ci.org/gf712/ProStruct.svg?branch=master)](https://travis-ci.org/gf712/ProStruct)\n\n# ProStruct\nProStruct is a protein structure analysis tool with the end goal of becoming a fast and user friendly library.\n\nTo achieve fast speeds and maximise performance given the available linear algebra libraries ProStruct uses\nArmadillo. Armadillo can currently use BLAS/LAPACK, OpenBLAS, MKL and NVBLAS. In addition, the code is parallelised\nwhere possible using OpenMP (with intra and intercore optimisations).\n\nIn addition, ProStruct is available in Python, Perl and R using SWIG. The list of interfaces will (potentially) continue to grow.\n\nI also try to write C++ code using the latest standards, so you might need a relatively recent compiler to build\nProstruct.\n\nContributions are welcome!\n\n## Examples:\n\nC++:\n```cpp\n#include \u003cprostruct/prostruct.h\u003e\n\nusing namespace prostruct;\n\nauto pdb = PDB\u003cfloat\u003e(\"mypdb.pdb\");\nauto radii = pdb.get_radii(); // arma::Col\u003cfloat\u003e\nauto ks = pdb.compute_kabsch_sander() // arma::Mat\u003cfloat\u003e\n```\n\nPython:\n```python\nimport prostruct\n\npdb = prostruct.PDB_float(\"mypdb.pdb\")\nradii = pdb.get_radii() # numpy array\nks = pdb.compute_kabsch_sander() # numpy array\n```\n\nThe python behaviour can be further extended using SWIG directors, as shown [here](src/interface/README.md).\n\nR:\n```R\ndyn.load(paste(\"prostruct\", .Platform$dynlib.ext, sep=\"\"))\nsource(\"prostruct.R\")\ncacheMetaData(1)\n\npdb \u003c- PDB_float(\"mypdb.pdb\")\nradii = pdb$get_radii() # R vector\nks = pdb$compute_kabsch_sander() # R matrix\n```\n\nPerl:\n```perl\nuse prostruct;\n\nmy $pdb = new prostruct::PDB_float(\"mypdb.pdb\");\nmy $radii = $pdb-\u003eget_radii(); # Perl array of scalars\nmy $ks = $pdb-\u003ecompute_kabsch_sander(); # Perl array of references to arrays of scalars\n```\n\n## Build with CMake\n\nCurrently ProStruct is only available from source.\n\n```bash\nmkdir build\ncd build\ncmake ..\nmake\n```\n\nTo build code with full compiler optimisations run cmake in Release mode:\n```bash\ncmake -DCMAKE_BUILD_TYPE=Release ..\n```\n\nWith Python interface:\n```bash\ncmake -DPYTHON_EXECUTABLE=/my/path/to/python -DPYTHON_LIBRARY=/my/path/python/to/lib/libpython3.6m.so -DPYTHON_INCLUDE_DIR=/my/path/to/include/python3.6m/ ..\n```\n\n## Known issues:\n\n* On some platforms you might have to compile with -fPIC due to the fmt static library. The compiler will throw an error like this:\n    ```bash\n   /usr/bin/ld: extern/fmt/libfmt.a(format.cc.o): relocation R_X86_64_PC32 against symbol `_ZN3fmt2v58internal12basic_bufferIcE6resizeEm' can not be used when making a shared object; recompile with -fPIC\n  ```\n  To do this just re-run cmake with this:\n  ```bash\n  cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON ...\n  ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgf712%2Fprostruct","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgf712%2Fprostruct","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgf712%2Fprostruct/lists"}