Skip to content
forked from rstudio/DT

R package for Morphological Analysis using the jQuery Plug-in DataTables

License

Notifications You must be signed in to change notification settings

sgrubsmyon/morphr

 
 

Repository files navigation

An R implementation of a Morphological Analysis tool

This package provides an interactive graphical representation of a morphological field, a.k.a. morphological box, or "Zwicky box", see [1], [2], [3]. A morphological field is a tabular representation where each parameter of the problem corresponds to a column whose rows are filled with the parameter values. Each parameter value is mutually checked for consistency with all other parameter values. This enables to systematically exclude inconsistent configurations and therefore greatly reduce the problem space.

Morphological Analysis (MA)---not to be confused with morphology in linguistics, biology or image processing---is a structured method for exploring and constraining a complex multi-dimensional, possibly non-quantifiable, problem space. MA was developed by the astrophysicist Fritz Zwicky (e.g. [4], [5], [6], [7]) and is since the mid-1990s advanced and applied by the Swedish Morphological Society, in particular by Tom Ritchey et al., under the term "General Morphological Analysis" (e.g. [8], [9]).

The purpose of this package is to bring Morphological Analysis tools into a modern, mobile, cross-platform computing environment and to provide easy access. Because it requires only a web browser to run, it can be used from almost any platform. Perhaps this easy access will encourage more widespread usage of Morphological Analysis techniques for structured scientific problem solving and decision making.

Please note that Morphological Analysis as a scientific method is not trademarked or even copyrightable. The Swedish Morphological Society write on their website:

The term and the procedures embodied in "morphological analysis" are not trademarked or copyrighted. Morphological analysis is a basic scientific method, and is therefore no more copyrightable than "mathematical analysis" or "statistical analysis".

-- Swedish Morphological Society

The code of this package is publicly available and released under the GPL-3 (GNU GENERAL PUBLIC LICENSE version 3). It is built upon RStudio's DT package, which is distributed under the same license.

[1]: https://en.wikipedia.org/wiki/Morphological_analysis_%28problem-solving%29
[2]: https://en.wikipedia.org/wiki/Morphological_box
[3]: https://de.wikipedia.org/wiki/Morphologische_Analyse_(Kreativit%C3%A4tstechnik)
[4]: Zwicky, F. (1947). Morphology and nomenclature of jet engines. Aeronautical Engineering Review, Vol. 6, No. 6, pp. 49--50.
[5]: Zwicky, F. (1948). Morphological astronomy. Observatory, Vol. 68, No 845, pp. 121--143.
[6]: Zwicky, F. & Wilson, A. (Eds.) (1967). New methods of thought and procedure: Contributions to the symposium on methodologies. Berlin: Springer.
[7]: Zwicky, F. (1969). Discovery, invention, research -- through the morphological approach. New York: The MacMillan Company.
[8]: General Morphological Analysis - A general method for non-quantified modeling, Swedish Morphological Society, 2002 (Revised 2013), Licensed under a Creative Commons Attribution
[9]: Ritchey, T. (2011). Wicked Problems -- Social Messes, Decision Support Modelling with Morphological Analaysis, Volume 17 of the series Risk, Governane and Society, Springer-Verlag Berlin Heidelberg.

Talk

I gave a talk about the morphr package at the useR!2017 conference in Brussels. The slides are here and a video of the talk can be viewed here.

Example

See morphr in action in the following screenshot:

Example for using the morphr package

The parameter values and the mutual consistency of the field are specified in R. In the web browser, one can then constrain the field by selecting a certain parameter value with a mouse click. The response is that the selected cell is colored red and the cells remaining consistent with the selection are colored blue. One can select as many cells as desired, the field is updated accordingly. To compare two parameter values, one can select the first, then the second, and observe how the field changes. A click on a selected cell deselects it.

Many morphological fields have input and output columns, i.e. some parameters may be controllable and within reach to a policy maker, while others indicate certain outcomes in response to the input parameters. One can either select a certain configuration of input parameter values and see the resulting outcome(s), or one can do it the other way around and select certain desired outcomes to see in what range the input parameters must be for that outcome.

Installation

Install the package directly from GitHub using the devtools package:

# Install devtools
install.packages("devtools")

# Install from GitHub
devtools::install_github("sgrubsmyon/morphr")

Usage

This package provides a function installMorphField() to display R data, which represents a morphological field, via the DataTables library (N.B. not to be confused with the data.table package). The morphological field widget is installed into the output object of a Shiny application and can be displayed by putting a morphFieldOutput() call into the applications ui. This package is built upon RStudio's excellent package DT.

Simple example

library(shiny)

ui <- fluidPage(
  fluidRow(
    morphr::morphFieldOutput("morphfield")
  )
)

server <- function(input, output) {
  param_values <- list(
    "Parameter A" = c("A1", "A2"),
    "Parameter B" = c("B1", "B2"),
    "Parameter C" = c("C1", "C2")
  )

  configurations <- list(
    list(
      list(param = "Parameter A", value = "A1"),
      list(param = "Parameter B", value = "B2"),
      list(param = "Parameter C", value = "C1")
    ),
    list(
      list(param = "Parameter A", value = "A2"),
      list(param = "Parameter B", value = "B1"),
      list(param = "Parameter C", value = "C1")
    )
  )

  morphr::installMorphField(input, output, id = "morphfield",
                            param_values = param_values,
                            configurations = configurations)
}

shinyApp(ui = ui, server = server)

Or execute shiny::runApp(system.file("examples", "morphr-simple", package="morphr")) in RStudio.

Contact info

This package is authored and maintained by Markus Voge ([email protected]). Feel free to contact me if you want to utilize morphr and need any advice or help.

About

R package for Morphological Analysis using the jQuery Plug-in DataTables

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • R 71.2%
  • JavaScript 21.9%
  • CSS 6.9%