Scyland3D

Scyland3D: Processing 3D landmarks - Published in JOSS (2020)

https://github.com/ybayle/scyland3d

Science Score: 93.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README and JOSS metadata
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

3d geometric-morphometric landmark landmark3d landmarks python semilandmark shape-analysis
Last synced: 4 months ago · JSON representation

Repository

Scyland3D: Processing 3D landmarks

Basic Info
  • Host: GitHub
  • Owner: ybayle
  • License: mit
  • Language: Python
  • Default Branch: master
  • Size: 361 KB
Statistics
  • Stars: 10
  • Watchers: 3
  • Forks: 8
  • Open Issues: 0
  • Releases: 4
Topics
3d geometric-morphometric landmark landmark3d landmarks python semilandmark shape-analysis
Created almost 7 years ago · Last pushed over 4 years ago
Metadata Files
Readme Changelog Contributing License

README.md

Scyland3D: Processing 3D landmarks

Scyland3D is a Python tool for converting 3D raw landmark and semilandmark coordinates exported from landmark acquisition software (e.g. Landmark Editor 3.6 from IDAV, UC Davis) to a csv format best suited for geometric morphometric analyses. Processing schemes to mirror and reorder these points are provided to address further symmetry issues.

By: - Fidji Berio (GitHub) from ISEM and IGFL, - Yann Bayle (Website, GitHub) from LaBRI, Univ. Bordeaux, CNRS, and SCRIME.

Installation

Install and update using pip:

pip install -U Scyland3D

Dependencies:

  • Python 2 or 3. Scyland3D has been tested with Python 2.7.16 and 3.6.3 and should work with older versions of Python.
  • Numpy >= 1.13.3. Scyland3D has been tested with Numpy 1.13.3 and 1.16.2 and should work with older versions of Numpy.

If you encounter an error with other versions, please submit an issue.

Use-case example

To quickly process landmarks files, you can give Scyland3D the path to the folder containing the .pts files (format defined on page 37 in http://www.idav.ucdavis.edu/research/projects/EvoMorph/supplement/LandmarkDocv3b6.pdf), as shown in the example files provided:

from Scyland3D import Scyland3D Scyland3D.pts2csv("example/")

This will create a file named landmarks.csv that you can use for statistical analyses in any language/software you want. The example files provided come from a subset of our dataset for studying teeth of the small-spotted catshark Scyliorhinus canicula. We provide 7 landmark and 31 semilandmark coordinates for 2 upper teeth and for 3 lower ones, stored in two folders that describe the specimens they belong to. A landmark is a point set up by hand as opposed to a semilandmark that is interpolated by the computer between two landmarks by following the curvature of the studied form.

Below, the image A is the representation of 7 landmarks for an input right shark tooth and the image B is the output produced by Scyland3D when using the options to mirror and reorder the landmarks. This process can be used to process right teeth in order to superimpose and compare them with left teeth in order to compare analogous elements. More information can be found on the related article.

Landmarks on a tooth

API documentation

The function pts2csv() is the core of Scyland3D and is also called when using the script from the terminal with the following arguments:

  • indir (required)
    • A string containing the input directory where the files are stored. File names can specify the feature modalities separated by _ (e.g. speciesAageXsex1.pts).
    • Example: Scyland3D.pts2csv(indir="path/")
    • Command line: python -m Scyland3D.Scyland3D -i "path/"
  • outdir (optional)
    • A string containing the output directory where the files will be generated.
    • Default: Use the current folder.
    • Example: Scyland3D.pts2csv(indir="path/", outdir="outpath/")
    • Command line: python -m Scyland3D.Scyland3D -i "path/" -o "path/"
  • order (optional)
    • A list of integer indicating the new order to apply to the landmarks. The order_factor argument must also be supplied.
    • Default: None
    • Example: Scyland3D.pts2csv(indir="path/", order_factor="upper", order=[36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 37])
    • Command line: python -m Scyland3D.Scyland3D -i "path/" -f "upper" -r "36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 37"
  • order_factor (optional)
    • A string containing the keyword for items that need their landmarks and semilandmarks to be reordered. The order argument must also be supplied. Warning: no checks are made on the factor, so be sure to avoid any typo.
    • Default: None
    • Example: if the dataset contains lower and upper teeth where only the upper teeth need to be reordered, one can use: Scyland3D.pts2csv(indir="path/", order_factor="upper", order=[36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 37])
    • Command line: python -m Scyland3D.Scyland3D -i "path/" -f "upper" -r "36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 37". This is only valid if the keyword upper is present in the file name.
  • feature_names (optional)
    • A list of string containing the feature names.
    • Default: None
    • Example: Scyland3D.pts2csv(indir="path/", feature_names=["identifier", "species", "location", "length", "sex", "stage", "jaw", "position", "generation"])
    • Command line: python -m Scyland3D.Scyland3D -i "path/" -n "identifier,species,location,length,sex,stage,jaw,position,generation"
  • verbose (optional)
    • A boolean indicating if information should be printed on the console by the process.
    • Default: False
    • Example: Scyland3D.pts2csv(indir="path/", verbose=True) displays information to the console.
    • Command line: python -m Scyland3D.Scyland3D -i "path/" -v displays information to the console.
  • mirror_factor (optional)
    • A string containing the keyword for items to be mirrored in the 3D space. Warning: no checks are made on the factor, so be sure to avoid any typo.
    • Default: None
    • Example: Scyland3D.pts2csv(indir="path/", mirror_factor="upper")
    • Command line: python -m Scyland3D.Scyland3D -i "path/" -m "upper" will mirror in 3D the landmarks stored in .pts files with the keyword upper in their filename. Then, it will export to a .csv file those mirrored landmarks and also the unprocessed landmarks from .pts files that do not contain the keyword upper in their filename. The figure above depicts the mirroring.

How To Contribute

Contributions are welcome! Please refer to the CONTRIBUTING.md file.

License

Scyland3D is licensed under the MIT License as described in the license file. Please use the following citation:

@article{Berio2019, author = {Berio, Fidji and Bayle, Yann}, title = {{Scyland3D: Processing 3D landmarks}}, journal = {{The Journal of Open Source Software}}, page = {1153--1155}, volume = {4}, issue = {33}, doi = {10.21105/joss.01153}, note = {Review pending} }

Acknowledgements

  • We acknowledge the contribution of SFR Biosciences (UMS3444/CNRS, US8/Inserm, ENS de Lyon, UCBL) facilities: AniRA-ImmOs and Mathilde Bouchet for her help with X-ray microtomography.
  • We are thankful to @patrikhuber and @r-barnes, the two reviewers from JOSS that helped improved a lot the code and the documentation.

Owner

  • Name: Yann Bayle
  • Login: ybayle
  • Kind: user
  • Location: France
  • Company: Reef Pulse

CTO & co-founder @reefpulse | PhD in AI applied to Signal Processing

JOSS Publication

Scyland3D: Processing 3D landmarks
Published
February 08, 2020
Volume 5, Issue 46, Page 1262
Authors
Fidji Berio ORCID
ISEM, UMR 5554, CNRS-IRD-UM, 34095 Montpellier, France, IGFL, UMR 5242, CNRS-ENS de Lyon, 69007 Lyon, France
Yann Bayle ORCID
LaBRI, UMR 5800, CNRS, 33400 Talence, France
Editor
Kevin M. Moerman ORCID
Tags
3D geometric morphometrics shape analysis Landmark

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 55
  • Total Committers: 4
  • Avg Commits per committer: 13.75
  • Development Distribution Score (DDS): 0.255
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Yann Bayle y****e 41
Yann Bayle 9
Yann Bayle d****n@T****k 4
Yann Bayle b****4@g****m 1

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 13
  • Total pull requests: 0
  • Average time to close issues: 3 months
  • Average time to close pull requests: N/A
  • Total issue authors: 2
  • Total pull request authors: 0
  • Average comments per issue: 3.69
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • r-barnes (9)
  • patrikhuber (4)
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 49 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 15
  • Total maintainers: 1
pypi.org: scyland3d

A Python package for processing 3D landmarks

  • Versions: 15
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 49 Last month
Rankings
Dependent packages count: 10.1%
Forks count: 11.9%
Stargazers count: 17.7%
Dependent repos count: 21.5%
Average: 21.6%
Downloads: 46.7%
Maintainers (1)
Last synced: 4 months ago

Dependencies

setup.py pypi
  • numpy *