Chapter 1 What is OCTA?
The Order and Complexity Toolbox for Aesthetics (OCTA) is a Python library to create stimuli varying qualitatively and quantitatively in order and complexity, based on regularity and variety along multiple dimensions (e.g., position, shape, size, color, orientation) of the elements in the patterns. This Python toolbox provides perception and aesthetics researchers with a free and easy way to create reproducible and parametrically manipulated stimulus sets, with a focus on multi-element displays. Elements can include geometric shapes, but also images or custom-defined vector-based shapes to increase ecological validity. The standard vector-based output is ideal for experiments on the web and the creation of dynamic interfaces and stimuli. This flexibility is evidenced further by the option to animate specific elements in the display. An additional benefit of OCTA is its accessibility: researchers with programming experience can use the available functions or specify additional functionality tailored to their own wishes, whereas researchers less familiar with programming can use the point-and-click interface that is provided. With OCTA being fast, flexible, and transparent, we strongly believe that this toolbox will facilitate reproducible stimulus construction and experimental design in research on order, complexity, and aesthetics. In addition, OCTA can be a very useful tool to study research questions concerning visual perceptual organization and visual perception in general.
1.1 Motivation
Order and complexity have long been considered as important factors influencing aesthetic appreciation (Van Geert & Wagemans, 2020a for a review). Most empirical work investigated the relation of order and complexity to aesthetic appreciation separately, not concurrently. Also, the relation with complexity was much more frequently studied than the relation with order. In case a study investigated order with parametrically varied stimuli, it concerned very specific aspects of order (e.g., symmetry, perceptual balance). Some existing research that did study order and complexity together used more ecologically valid stimuli, but as a consequence less parametrically controlled stimuli, varying in many undefined ways (e.g., Van Geert & Wagemans, 2020b). Findings based on this last type of research, using less controlled stimuli (e.g., Van Geert & Wagemans, 2020b), require replication with a more parametrically controlled stimulus set where both order and complexity of the stimulus can be manipulated as independently as possible.
To our knowledge, no single existing stimulus set combines systematic manipulations of order and complexity on different stimulus dimensions (e.g., shape, size, color, orientation). In addition, many existing stimulus sets are not easily reproducible or expandible; if they are code-based, the code is often not openly available.
Therefore, aesthetics research on order and complexity would benefit from a free, openly available tool to create custom stimulus sets that are easily reproducible and expandible, and give the possibility to manipulate diverse aspects of order and complexity independently. The Order & Complexity Toolbox for Aesthetics (OCTA) is such a free, openly available tool and creates many opportunities to investigate order and complexity in a standardized and multidimensional manner, with a focus on multi-element displays.
1.2 Instant play: Code for simple example
= Grid(9,9, row_spacing=25, col_spacing=25)
stimulus
= GridPattern.RepeatAcrossElements([(20,20)])
stimulus.boundingboxes = GridPattern.RepeatAcrossLayers([Rectangle, Triangle, Ellipse])
stimulus.shapes = GridPattern.GradientAcrossRightDiagonal(start_value = 'limegreen', end_value = 'steelblue')
stimulus.fillcolors = GridPattern.MirrorAcrossLeftDiagonal([-90,-45,0,45,90])
stimulus.orientations stimulus.Show()
1.3 Terminology
- Order
aspects related to the structure and organization of elements in a stimulus
- Complexity
aspects related to the quantity and variety of elements in a stimulus
- Stimulus
overall display, total configuration that can include several elements
- Element
object, part of stimulus display
- Stimulus feature / characteristic
certain characteristic of the stimulus as a whole (e.g., size, orientation, background color, background size)
- Element feature / characteristic (stimulus dimension)
certain characteristic of the elements in the stimulus (e.g., shape, size, color, orientation)
- (Element) position pattern / template
overall configuration of the element positions in the stimulus (e.g., rectangular grid, sine grid, circle, shape)
- (Element) feature pattern
overall configuration of the element characteristics in the stimulus (combination of pattern values, pattern type, and pattern direction)
- Pattern values
the values of a stimulus dimension / element characteristic that will be used in the stimulus
- Pattern type
type of structure or organization present on a certain stimulus dimension across the elements in the stimulus (e.g., pattern repeat, element repeat, mirror symmetry, gradient)
- Pattern direction
the direction in which the pattern values are applied according to the pattern type across the stimulus (e.g., across elements, across rows, across columns)
- Position deviation
deviation from the position pattern, either by the addition of random jitter to the element postions or by the adaptation or removal of specific element positions
- Element deviation
deviation from the element feature patterns present in the stimulus, by removing elements from the stimulus, swapping element positions, or randomizing element positions
- Feature deviation
deviation from at least one element feature pattern, by removing elements from the stimulus, swapping one or more features between elements in the stimulus, randomizing element or feature positions, changing the feature value of one or more random or specified elements in the stimulus, or by jittering one or more numeric stimulus dimensions
1.4 Software information and dependencies
The OCTA Python toolbox was created by Van Geert, Bossens, and Wagemans (2021) as a tool for researchers to create stimuli varying in order and complexity on different dimensions. It was created in Python 3.8 and is dependent on the following Python libraries: svgwrite, svg.path, svgpathtools, svgutils, jsonpickle, html2image, svglib, reportlab, colour, and IPython. We thank the developers of each of these libraries and of the Python programming language.
The OCTA Shiny app was created in R Shiny and depends on the following R libraries: shiny, reticulate, shinydashboard, shinydashboardPlus, sortable, shinyjs, shinyjqui, bsplus, shinybs, shinyWidgets, colourpicker, waiter, rintrojs, tidyverse, lubridate, and jsonlite. We thank the developers of each of these libraries as well as the developers of the R programming language.
1.5 Citation and license
1.5.1 Citing OCTA
If you use the OCTA Python toolbox in your (academic) work, please cite: Van Geert, E., Bossens, C., & Wagemans, J. (2021). The Order & Complexity Toolbox for Aesthetics Python library [Computer software]. https://github.com/gestaltrevision/OCTA_toolbox
If you use the OCTA Shiny app in your (academic) work, please cite: Van Geert, E., Bossens, C., & Wagemans, J. (2021). The Order & Complexity Toolbox for Aesthetics Shiny application [Online application]. https://elinevg.shinyapps.io/OCTA_toolbox/
1.5.2 License
The OCTA Python toolbox is licensed under the terms of the GNU Lesser General Public License:
The Order & Complexity Toolbox for Aesthetics (OCTA) Python library is a tool for researchers to create stimuli varying in order and complexity on different dimensions. Copyright (C) 2021 Eline Van Geert, Christophe Bossens, and Johan Wagemans
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Contact: eline.vangeert@kuleuven.be
1.6 About the developers
Eline Van Geert Creator and main developer OCTA Python toolbox & Shiny app
Eline Van Geert currently is a finishing PhD student at the GestaltReVision research group in the Laboratory of Experimental Psychology at KU Leuven, under supervision of Prof. Johan Wagemans. Her scientific interests include visual aesthetics, perceptual organization, individual differences in perception, Bayesian statistics, open science, and many more.
Christophe Bossens Coding support OCTA Python toolbox
Christophe Bossens provides IT support for the Brain & Cognition research unit at KU Leuven. He also teaches an introductory programming course for psychology students. His personal blog contains plenty of tips & tricks for programming.Johan Wagemans Conceptual support OCTA Python toolbox
Prof. Johan Wagemans is director of the Laboratory of Experimental Psychology at KU Leuven, leading the GestaltReVision research program. His expertise includes perceptual organization and empirical aesthetics. This OCTA toolbox would have made his life much easier if it had been available 20 years ago.