Git Product home page Git Product logo

morphr's Introduction

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.

morphr's People

Contributors

yihui avatar jcheng5 avatar jjallaire avatar carlganz avatar fbreitwieser avatar hafen avatar

Watchers

James Cloos avatar  avatar

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.