{"id":44215352,"url":"https://github.com/samuelstjean/dpr","last_synced_at":"2026-02-10T01:35:47.935Z","repository":{"id":57423878,"uuid":"168676510","full_name":"samuelstjean/dpr","owner":"samuelstjean","description":"Diffusion profile realignment - Making your along-tract analysis reliable","archived":false,"fork":false,"pushed_at":"2024-12-16T20:05:42.000Z","size":12005,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-09-25T10:53:26.940Z","etag":null,"topics":["along-tract","diffusion-mri","dpr","python"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/samuelstjean.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-02-01T09:49:55.000Z","updated_at":"2024-12-16T20:05:45.000Z","dependencies_parsed_at":"2024-01-15T21:02:48.903Z","dependency_job_id":"6e176ea2-1696-4833-908f-8be2784ddc1d","html_url":"https://github.com/samuelstjean/dpr","commit_stats":{"total_commits":76,"total_committers":4,"mean_commits":19.0,"dds":0.5526315789473684,"last_synced_commit":"4cb75a119373c1f0baf7110269d64ae1b114a194"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/samuelstjean/dpr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samuelstjean%2Fdpr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samuelstjean%2Fdpr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samuelstjean%2Fdpr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samuelstjean%2Fdpr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samuelstjean","download_url":"https://codeload.github.com/samuelstjean/dpr/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samuelstjean%2Fdpr/sbom","scorecard":{"id":798543,"data":{"date":"2025-08-11","repo":{"name":"github.com/samuelstjean/dpr","commit":"c486298273613a4bca465fc9a73aa90c5a223a1b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/22 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/pythonpublish.yml:12","Warn: no topLevel permission defined: .github/workflows/python-package.yml:1","Warn: no topLevel permission defined: .github/workflows/pythonpublish.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.2.2 not signed: https://api.github.com/repos/samuelstjean/dpr/releases/191028554","Warn: release artifact v0.2.1 not signed: https://api.github.com/repos/samuelstjean/dpr/releases/105661097","Warn: release artifact v0.2 not signed: https://api.github.com/repos/samuelstjean/dpr/releases/28639232","Warn: release artifact v0.1.2 not signed: https://api.github.com/repos/samuelstjean/dpr/releases/18062907","Warn: release artifact v0.1.1b not signed: https://api.github.com/repos/samuelstjean/dpr/releases/16081145","Warn: release artifact v0.2.2 does not have provenance: https://api.github.com/repos/samuelstjean/dpr/releases/191028554","Warn: release artifact v0.2.1 does not have provenance: https://api.github.com/repos/samuelstjean/dpr/releases/105661097","Warn: release artifact v0.2 does not have provenance: https://api.github.com/repos/samuelstjean/dpr/releases/28639232","Warn: release artifact v0.1.2 does not have provenance: https://api.github.com/repos/samuelstjean/dpr/releases/18062907","Warn: release artifact v0.1.1b does not have provenance: https://api.github.com/repos/samuelstjean/dpr/releases/16081145"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/samuelstjean/dpr/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-package.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/samuelstjean/dpr/python-package.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pythonpublish.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/samuelstjean/dpr/pythonpublish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pythonpublish.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/samuelstjean/dpr/pythonpublish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pythonpublish.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/samuelstjean/dpr/pythonpublish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pythonpublish.yml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/samuelstjean/dpr/pythonpublish.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python-package.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/python-package.yml:29","Warn: pipCommand not pinned by hash: .github/workflows/python-package.yml:30","Warn: pipCommand not pinned by hash: .github/workflows/pythonpublish.yml:23","Warn: pipCommand not pinned by hash: .github/workflows/pythonpublish.yml:24","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   5 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 21 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T09:44:12.514Z","repository_id":57423878,"created_at":"2025-08-23T09:44:12.514Z","updated_at":"2025-08-23T09:44:12.514Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29288574,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T21:57:15.303Z","status":"ssl_error","status_checked_at":"2026-02-09T21:57:11.537Z","response_time":56,"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":["along-tract","diffusion-mri","dpr","python"],"created_at":"2026-02-10T01:35:47.868Z","updated_at":"2026-02-10T01:35:47.930Z","avatar_url":"https://github.com/samuelstjean.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Diffusion profile realignment (dpr)\n\nAn example and assorted implementation from the manuscript **Reducing variability in along-tract analysis with diffusion profile realignment**.\nHave a look at the [example](example.ipynb) on how to use the package and run it on a small example dataset.\n\nTo install the package, just run\n~~~\npip install dpr\n~~~\n\nThe documentation is available at https://dpr.readthedocs.io.\n\n### The matlab version\n\nThere is also a shiny new version written in matlab, with an assorted example, available in the [matlab](matlab) folder.\nFeel free to check out and edit the functions as needed for your own usage.\n\n### A quick example from the command line\n\nThere is also a command line version for easy usage, here in an example for the AFD metric on the left arcuate fasciculus.\nThe text file is already ordered in increasing order for each subject, which have the same distance between every point and are already zero padded accordingly.\n\nWe also supply the **--exploredti** option to remove the header column, **--do_graph** to save a png file with the results.\n\nWe finally resample everything to 75 points with **--points 75**.\n\nThe **-f** option overwrites the output files and the **-v** option prints useful informative messages throughout (and are optional).\n\n~~~bash\ndpr datasets/af_left_AFD.txt datasets/af_left_AFD_realigned.txt --exploredti --do_graph -f -v --points 75\n~~~\n\nThe output ```datasets/af_left_AFD_realigned.txt``` is a text file where each line is a subject and each column is a different point of the along tract analysis.\n\nWe also get a png file ```datasets/af_left_AFD_realigned.png``` with the before/after realignment process.\n\n![](datasets/af_left_AFD_realigned.png)\n\nNote how the zero padding present in the original data is decreasing the metrics as less and less subjects are present.\nThe realigned metric is instead using padding with Nans, remember to consider/keep track of it in subsequent analysis as needed.\n\n### Visualizing the results\n\nWe can also draw the p-values (computed separately) over the bundle using the script ```dpr_make_fancy_graph```.\nThis requires the original coordinates, the truncated version between rois and the coordinates to the representative streamline.\n\n~~~bash\ndpr_make_fancy_graph datasets/af_left_pval_unaligned.txt datasets/af_left_coordinates.txt datasets/af_left_truncated_coordinates.txt datasets/af_left_average_coordinates.txt 0,2 pvals_unaligned.png --title 'p-values before realignment' -f\ndpr_make_fancy_graph datasets/af_left_pval_realigned.txt datasets/af_left_coordinates.txt datasets/af_left_truncated_coordinates.txt datasets/af_left_average_coordinates.txt 0,2 pvals_realigned.png -f\n~~~\n\nAnd this is the results\n\n![](datasets/pvals_unaligned.png)\n![](datasets/pvals_realigned.png)\n\n### Datasets and reference\n\nThe main reference is\n\n~~~\nSamuel St-Jean, Maxime Chamberland, Max A. Viergever, Alexander Leemans,\nReducing variability in along-tract analysis with diffusion profile realignment,\nNeuroImage, 2019. ISSN 1053-811\n~~~\n\nThe data is also available at https://zenodo.org/record/2483169.\n\nThe open access manuscript is also available at https://www.sciencedirect.com/science/article/pii/S1053811919305014.\n\nTo refer to a specific version of the code, everything is also archived over at https://zenodo.org/record/3248894.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuelstjean%2Fdpr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamuelstjean%2Fdpr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuelstjean%2Fdpr/lists"}