Git Product home page Git Product logo

momacs's Introduction

MomX

Part of MomX

None of what follows will be ready before end of April 2020 !!!

MomX is an ecosystem of R packages for everything 2D morphometrics, that is the statistical description of shape and its (co)variation.

MomX is intended to provide a complete, comfortable, powerful, and - last but not least - open-source workflow for morphometrics.

MomX packages share common principles and work together well. This architecture is largely inspired by the tidyverse.

Planned schedule

  1. Finish rewriting Momocs, release (April 2020)
  2. Port old Momocs stats to Momcalc, release (April 2020)
  3. Finish Momit, release (May 2020)
  4. Finish MomX, release (May 2020)
  5. Finish Momacs and Momoshop, release (June 2020)
  6. Submit to rOpenSci

Packages

Acquisition

🖖 Momit

Import from various image and foreing file format and defines a portable format for morphometrics data

Momit website

🛠 Momacs

Interactively acquire morphometrics data from images, eg defining landmarks, curves, and other regions of interest.

Momacs website

Post-processes images, eg adjust contrast, pick channels, remove background, etc.

Momoshop website

Morphometrics

🕊 Momocs

Manipulating shapes and turning them into coefficients using morphometrics methods.

Momocs2 website

Wraps sensible statistics methods for morphometrics in a consistent grammar

Momstats website

🔮 Momecs

Is the shiny descent of Momocs x Momecs

Momecs website

Meta

💍 MomX

Install and manage all MomX packages

MomX website

🍭 MomX

Interesting datasets for MomX

Momdata website

📚 Mombook

Compiles all package documentation into a practical book for MomX

🚯 MomXiv

Share and archive morphometrics data

General philosophy

  • MomX aims to be a complete and user-friendly ecosystem for morphometrics
  • Compartiment key processes into well-defined, interoperable packages that go together well.
  • Each package should solve a single task, and do it well. Make it work, document, release, improve, repeat.

MomX embraces and owns much to the tidy manifesto. MomX kind of theorise the programming side of morphometrics, or at least itself (yes, infinite loop). Tibbles are the answer.

MomX packages share :

  • Continous integration with Travis
  • Continuous testing with [pkg::testthat] and codecov
  • Companion website built by [pkg::pkgdown], at url: MomX.github.io/packagename
  • Cheatsheets to decorate your bathroom walls

Installation

Will come on top when ready

Once on CRAN, install the last released version of a package, say “MomX” with:

install.packages("MomX")

I will typically only support the very last development versions that you can get from GitHub with:

# install.packages("devtools")
devtools::install_github("MomX/MomX")

Then you will need to laod it with :

library(MomX)

You can install and use packages separetely (eg with install.packages("Momocs"). MomX package will install all MomX packages, and help update them.

How to help

I’m much than welcoming contributions to MomX ! Good news is that whatever your skills, you can contribute a bit.

You can :

  • Signal a bug : fill an issue with bug label 🐛
  • Code, improve, develop, discuss, request new features : fill an issue with discuss 🔧
  • Improve examples, and my English : edit pages 🇬🇧

How to get help

I do not have time either, so before asking for help, please :

  • Make sure you have the very last versions of packages : MomX::MomX_update
  • Start reading the vignettes, they are a good place to start 📚
  • Read the reference manual, understand examples 🐣
  • Go to walk for 2 hours in the forest 🌳 🐗 🍀, solves 95% of my problems
  • Show us what you have tried and make a reproducible example 💊

Then, if you think something is wrong with :

  • is wrong with MomX : fill an issue with bug
  • is wrong with you, your data, or something local, fill an issue tagged with help

Feel free to ring my bell <[email protected]> if :

  • You would like to collaborate with me
  • You would like to get trained in R and/or MomX
  • Any other sensible reason

Happy MomX-ing 😘 !

momacs's People

Contributors

falindir avatar vbonhomme avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

momacs's Issues

Handle scale

Users often need to click on two points to define a scale that would be included as a scalar (euclidean distance between the two points) in the yaml

pass a list of image paths to Momacs

We really need to pass, from R, a list of files to digitize with Momacs.

Something like: list.files("data") %>% acquire() should trigger Momacs digitization on these files and thus bypass Load images / Load folder

This is a dummy example: usually we want some more complex subsets of files adn this would be really helpful in many other contexts.

Handle missing data

Often, some information (eg a landmark) is absent (whether the object was broken, or just not here).

So we would need a "missing" button that would add a single missing point (or whatever) as NA in the yaml representation.

handle landmark id

j'ai montré Momacs à une pro de tpsDig de mes collègues (future beta testeuse:o))
elle me dit que:

  • tout est trop bien !
  • qu'il faudrait prévoir l'affichage des landmarks (points) avec un petit numéro de référence d'ordre (1, 2, etc.)
  • visiblement la configurabilité des points et autres en termes de symboles, tailles, couleurs est importante aussi !
  • quantité d'autres choses à gérer mais ça sera un onglet supplémentaire pour manipuler les fichiers crées et je m'en chargerai

bientôt le bout du tunnel !

Not compatible with R version > 4

When trying to install from cran on my machine, I get

Warning in install.packages :
  package ‘momacs’ is not available (for R version 4.0.2)

Output of sessionInfo()

R version 4.0.2 (2020-06-22)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS  10.16

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib

locale:
[1] en_NZ.UTF-8/en_NZ.UTF-8/en_NZ.UTF-8/C/en_NZ.UTF-8/en_NZ.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_4.0.2 tools_4.0.2    tinytex_0.28   xfun_0.20   

Use template file

When digitizing it is helpful to have a target template, eg:

points: 12
curves: 2
scale: TRUE

Then when Momacs is loaded, it could look for it, parse it and:

  • automatically skip to curves after the 12^th click here
  • message if something was forgotten (eg defining scale)

.yml formatting

Li'dée serait un formatage yml plus consistant et simple. Je liste plusieurs points pour avoir un fichier plus compact/parcimonieux.

Fondamentalement, toutes les données sont des arrays 2D non? Seul le type (curves2D, points2D, etc.) change la représentation côté Momacs et l'utilisation côté Momocs. En outre, certaines informations ne me semblent nécessaires que côté affichage et pas tellement pour ce qui a été effectivement digitalisé (par exemple les segments dans segments2D. J'imagine qu'avoir un fichier de sortie le plus minimaliste possible (même exemple : des points sans segments) implique de rajouter des couches côté Momacs. On peut toujours raboter ce fichier compact avant d'injecter dans Momocs ou autre mais ça me semble moins propret. Bon, reste le cas batard des curves (avec les ancres et les points samplés, on a besoin des deux je crois) qui fait pencher la balance vers une édition post Momacs/ pro Momocs sauf idée sortie des bois. Je liste plusieurs points sur lesquels je serais plutôt favorable si faisable(s) :

  • gérer les partitions

  • types actuels compliants avec GeoJson geometries:

    • points2D -> (Multi)Point
    • curves2D (open) -> LineString
    • curves2D (close) -> Polygon
      À part les points qui sont toujours ou presque multiples (et encore j'imagine que MultiPoint gère les Point), les lignes et polygones sont gérés par la table des partitions. A priori on aura ptet pas besoin des Multi* partout, mais je pense qu'il vaut mieux le prévoir (?). Je me demande aussi s'il faut gérer les partitions nichées (type courbes_A: courbe A1, courbe A2; courbes_B: courbe B1, etc.)
  • arrays2D partout. Ptet que côté Momacs on a besoin des id, x, y mais côté Momocs déduit le tout (par l'ordre des points pour id, et l'ordre d'arrivée au sein d'un id pour x et y).

  • la précision peut être diminuée à disons 3 chiffres sous le pixel par souci de lisibilité/taille de fichier ici aussi.

Les deux points précédents transforment une représentation de points (entres autres arrays) comme ça :

    points: [
      { "id":  21, "x": 75.0236968994141, "y": 166.120025634766},
      ...
      { "id":  33, "x": 64.6323165893555, "y": 36.2277755737305}
    ]

devient:

points: [
      {75.024, 166.120},
      ...
      {64.632, 36.228}
      ]
  • côté Momocs (ou autres) on n'a donc pas besoin des choses suivantes :
    • segments dans segments2D
    • type dans curve2D puisque open devient LineString et close devient un Polygon (je sais que tu ne va guère kiffer ce point 😬

Ce qui précède touche à l'état actuel de l'affichage/édition/fichier de sortie mais pour être complet je mentionne deux autres points :

  • faudrait prévoir la possibilité de gérer des scalaires (et leurs unités éventuelles) et de les éditer dans Momacs. Le cas le plus courant sera l'échelle mais il y a souvent des données associées, dans les fichiers morphométriques, et non pas seulement dans une table à côté...
  • enfin, je crois que je n'en ai pas parlé avant (mea culpa) il y a souvent des données manquantes pour les landmarks notamment, donc faudrait prévoir un ou plusieurs NULL ou équivalent dans l'enchaînement des points cliqués.

la plupart des points me semblent souhaitables, pas obligatoires. On peut en rediscuter mais au moins ils sont là.

Forza ✌️

full screen

space is gold here, and we would really need to open Momacs in a full screen browser. Possibly folding whatever we dont need (eg when a template is used)

change name to Momaxe

  • Momacs is too confusing with Momocs(2)
  • Also would be a wink at tpsDig the popular digitalization software

packaging fails

Inside any other project we have this:

> library(Momacs)
> acquire() # or Momacs::acquire()
 Error in shinyAppDir(x) : 
  No Shiny application exists at the path "inst/momacs_shiny/" 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.