class: left, middle, title-slide .title[ # OCTA workshop ] .subtitle[ ## the Order & Complexity Toolbox for Aesthetics ] .author[ ### Eline Van Geert ] .institute[ ### KU Leuven, Belgium ] .date[ ### May 9th, 2024 ] --- layout: true .footer_right[] .footer_middle[<a href="https://github.com/ElineVG/OCTA_workshop" target="_blank">https://github.com/ElineVG/OCTA_workshop</a>] --- class: top, center, normal ## OCTA workshop: </br> What will you learn today? ??? Welcome everyone, I am Eline Van Geert and today I will present you the Order and Complexity Toolbox for Aesthetics that I created. -- .column-4[ .center[ ![A](img/example1.svg) ] ] .column-4[ .center[ ![B](img/example2.svg) ] ] .column-4[ .center[ ![C](img/example3.svg) ] ] .column-4[ .center[ ![D](img/example4.svg) ] ] --- class: top, normal ## What will you learn today? Part I .pull-left[ - What is OCTA and why was it created? - OCTA BASICS (app / code): - Installation and prerequisites - How to create an OCTA stimulus? - Stimulus types & features - Positions - Element features & feature patterns - Deviations - Order & complexity - Output options ] .pull-right[ .center[ ![C](img/example2.svg) ] ] --- class: top, normal ## What will you learn today? Part II .pull-left[ - OCTA ADVANCED (code): - Dynamic features - Generating stimulus sets - Combining OCTA displays - Use OCTA in your research (app / code) ] .pull-right[ .center[ ![D](img/example4.svg) ] ] --- class: middle, center, inverse ## OCTA: </br> What and why? --- class: top, normal ## Order and complexity? .pull-left[ ### Order .column-3[ .center[ ![](img/ord1.svg) ] ] .column-3[ .center[ ![](img/ord2.svg) ] ] .column-3[ .center[ ![](img/ord3.svg) ] ] aspects related to the structure and organization of information in a stimulus ] .footnote[Van Geert, E., & Wagemans, J. (2020). Order, Complexity, and Aesthetic Appreciation. [*Psychology of Aesthetics, Creativity, and the Arts.*](http://dx.doi.org/10.1037/aca0000224)] -- .pull-right[ ### Complexity .column-3[ .center[ ![](img/compl1.svg) ] ] .column-3[ .center[ ![](img/compl2.svg) ] ] .column-3[ .center[ ![](img/compl3.svg) ] ] aspects related to the quantity and variety of information in a stimulus ] ??? With order, I refer to all aspects related to the structure and organization of information in a stimulus. Between the left and the middle image we see a difference in type of order (they are equally ordered on the shape and color dimension, but in the left the pattern is applied AcrossRows and in the middle AcrossColumns) Between these images and the right one there is a difference in the level of order. All three images contain the same elements, but in the right one the elements switched positions, disrupting the presence of the color and shape patterns. With complexity, I refer to all aspects related to the quantity and variety of information in a stimulus. The left stimulus exhibits complexity / variety on the shape and color dimension, the middle stimulus has a different type of complexity namely size and color complexity, whereas the right stimulus has fewer elements and only size complexity. --- class: top, normal ## Order, complexity, and aesthetic appreciation .pull-left[ <center><img class="center" style="display: block; width: 500px;" src = "img/Scheme_order_complexity_appreciation.png"></center> ] .footnote[Van Geert, E., & Wagemans, J. (2020). Order, Complexity, and Aesthetic Appreciation. [*Psychology of Aesthetics, Creativity, and the Arts.*](http://dx.doi.org/10.1037/aca0000224) </br></br> ] ??? What is now the relation between order, complexity and aesthetic appreciation? Although it is clear from earlier research that order, complexity and appreciation àre related, the exact direction and type of relation between them has been more difficult to pin down. One of the reasons I want to bring forward is that order and complexity are often studied separately when their relation to aesthetic appreciation is investigated. --- class: top, normal ## Order, complexity, and aesthetic appreciation .pull-left[ <center><img class="center" style="display: block; width: 500px;" src = "img/Scheme_order_complexity_appreciation.png"></center> ] .pull-right[ <center><img class="center" style="display: block; width: 500px;" src = "img/Scheme.png"></center> ] .footnote[Van Geert, E., & Wagemans, J. (2020). Order, Complexity, and Aesthetic Appreciation. [*Psychology of Aesthetics, Creativity, and the Arts.*](http://dx.doi.org/10.1037/aca0000224) </br> Van Geert, E., & Wagemans, J. (2019). Order, Complexity, and Aesthetic Preferences for Neatly Organized Compositions. [*Psychology of Aesthetics, Creativity, and the Arts.*](http://dx.doi.org/10.1037/aca0000276)] ??? In an empirical study we conducted with neatly organized compositions, we found that different types of appreciation relate differentially to order and complexity: whereas a soothing image is high in order but low in complexity, a fascinating image is high in order ànd complexity. And I want to say a few more things about the earlier research, as this has motivated the creation of the OCTA toolbox. --- class: top, normal ## Earlier research * effects of order and complexity often studied in isolation ??? In earlier research, the effects of order and complexity have often been studied in isolation --- class: top, normal ## Earlier research * effects of order and complexity often studied in isolation * when studied jointly, no parametric manipulations or a narrow, unidimensional view <center><img class="center" style="display: block; width: 550px;" src = "img/fig3_examplesresearch_600dpi.png"></center> .footnote[Van Geert, E., Bossens, C., & Wagemans, J. (2023). The Order & Complexity Toolbox for Aesthetics (OCTA): A systematic approach to study the relations between order, complexity, and aesthetic appreciation. *Behavior Research Methods*, *55*, 2423–2446. [https://doi.org/10.3758/s13428-022-01900-w](https://doi.org/10.3758/s13428-022-01900-w)</br></br>] ??? When they were studied jointly, the stimuli were not manipulated parametrically, or order and complexity were operationalized in a narrow, unidimensional way. In addition, many stimulus sets used in aesthetics research are not openly available, or if they are, they are not easily expandible or adaptible (as they are often not code-based). To sum up, as far as I know, there is - no single existing stimulus set that combines systematic manipulations of order and complexity on different stimulus dimensions - in addition there is no easy way available to create reproducible and parametrically controlled stimulus sets, including both order and complexity manipulations Therefore, I created OCTA --- class: top, normal ## Earlier research * effects of order and complexity often studied in isolation * when studied jointly, no parametric manipulations or a narrow, unidimensional view <center><img class="center" style="display: block; width: 900px;" src = "img/ton.png"></center> .footnote[Van Geert, E., & Wagemans, J. (2019). Order, Complexity, and Aesthetic Preferences for Neatly Organized Compositions. [*Psychology of Aesthetics, Creativity, and the Arts.*](http://dx.doi.org/10.1037/aca0000276)] ??? When they were studied jointly, the stimuli were not manipulated parametrically, or order and complexity were operationalized in a narrow, unidimensional way. In addition, many stimulus sets used in aesthetics research are not openly available, or if they are, they are not easily expandible or adaptible (as they are often not code-based). To sum up, as far as I know, there is - no single existing stimulus set that combines systematic manipulations of order and complexity on different stimulus dimensions - in addition there is no easy way available to create reproducible and parametrically controlled stimulus sets, including both order and complexity manipulations Therefore, I created OCTA --- class: top, normal ## Creating OCTA .titlepicture[<img src= "img/eline_vangeert.jpg"><img src= "img/christophe_bossens.jpg"><img src= "img/johan_wagemans.jpg">] * the Order and Complexity Toolbox for Aesthetics (OCTA) * create an easy way to generate stimuli varying in complexity and/or order along multiple stimulus dimensions (e.g., shape, color, size, orientation) .footnote[Van Geert, E., Bossens, C., & Wagemans, J. (2023). The Order & Complexity Toolbox for Aesthetics (OCTA): A systematic approach to study the relations between order, complexity, and aesthetic appreciation. *Behavior Research Methods*, *55*, 2423–2446. [https://doi.org/10.3758/s13428-022-01900-w](https://doi.org/10.3758/s13428-022-01900-w)</br></br>] ??? The order and complexity Toolbox for Aesthetics provides researchers with an easy way to generate stimuli varying in complexity and order along multiple dimensions including shape, color, size and orientation. In addition, it is openly available for both the programmers and non-programmers amongst us as I will explain in a second. - the Order and Complexity Toolbox for Aesthetics (OCTA) - a free, openly available toolbox for creating stimuli that vary systematically in order and complexity on multiple stimulus dimensions - Python package for coders, Shiny app for non-coders - create custom stimulus sets that are easily reproducible and expandable - to replicate earlier findings with a more parametrically controlled stimulus set - to further explore the balance between order and complexity, and its relation to aesthetic appreciation - created for aesthetics, but other applications possible - used stimulus sets that are not easily reproducible or expandible; if code-based, code often not openly available - did not use stimulus set that combines systematic manipulations of different aspects of order and complexity -- .pull-left[ ### Order .column-3[ .center[ ![](img/ord4.svg) ] ] .column-3[ .center[ ![](img/ord5.svg) ] ] .column-3[ .center[ ![](img/ord6.svg) ] ] ] ??? Here we see an example manipulation of the level of order in the stimulus: the elements are exactly the same for each of the three stimuli, only the number of switches varies between them. -- .pull-right[ ### Complexity .column-3[ .center[ ![](img/compl4.svg) ] ] .column-3[ .center[ ![](img/compl5.svg) ] ] .column-3[ .center[ ![](img/compl6.svg) ] ] ] ??? Here we see two example manipulations of the level of complexity in the stimulus: the number of elements can be varied or the number of complexity dimensions and thus the variety of the elements can be varied (the right stimulus has shape complexity in addition to the color complexity in the middle stimulus.) --- class: top, normal ## Creating OCTA .pull-left[ ![](img/wordcloud_OCTA3.png) ] .pull-right[ <img src = "img/OCTAcode.png" style = "margin-top:-130px;"> ![](img/OCTAapp.png) ] ??? - the Order and Complexity Toolbox for Aesthetics (OCTA) - a free, openly available toolbox for creating stimuli that vary systematically in order and complexity on multiple stimulus dimensions - Python package for coders, Shiny app for non-coders - create custom stimulus sets that are easily reproducible and expandable - to replicate earlier findings with a more parametrically controlled stimulus set - to further explore the balance between order and complexity, and its relation to aesthetic appreciation - created for aesthetics, but other applications possible - used stimulus sets that are not easily reproducible or expandible; if code-based, code often not openly available - did not use stimulus set that combines systematic manipulations of different aspects of order and complexity --- class: top, normal ## Going beyond geometric shapes <center><img src = "img/fig2_examplesordcompl_600dpi.png" style = "height: 450px; margin-top:-15px;"></center> --- class: top, normal ## More flexible, open, and reproducible alternative for existing closed tools (e.g., Flextiles) <center><img src = "img/fig4_examplesflextiles_600dpi.png" style = "max-height: 450px; margin-top:-15px;"></center> --- class: top, normal ## Benefits of OCTA <center><img src = "img/fig5_benefits.png" style = "height: 450px; margin-top:-15px;"></center> <!-- --- --> <!-- class: top, normal --> <!-- ## OCTA example stimuli --> <!-- <center><img src = "img/fig1_examplesocta_600dpi.png" style = "height: 450px; margin-top:-15px;"></center> --> --- class: top, normal ## Example OCTA stimuli <!-- .footnote[Flower images from Hůla and Flegr (2016)] --> .column-4[ <center> <img src = "img/shape.svg" style = "width: 195px; margin-top: -30px;"></center> ] .column-4[ <center> <embed src="img/extra.svg" type="image/svg+xml" style = " width: 210px; margin-top: -30px;"/> <!-- <img src = "img/extra.svg" style = "width: 200px; margin-top: -50px;"> --> </center> ] .column-4[ <center> <img src = "img/flextiles5.svg" style = "width: 210px; margin-top: -45px; margin-bottom: -15px;"> <div style=" font-size: 12px;" >Using a <a href = "https://thenounproject.com/term/tile/1424326">tile</a> created by <a href = "https://thenounproject.com/marialuisa.iborra">Lluisa Iborra</a> available on <a href = "https://thenounproject.com/">the Noun Project</a></div></center> ] .column-4[ <center> <img src = "img/concentricrings.svg" style = "width: 220px; margin-top: -30px;"></center> ] .column-4[ <center> <embed src="img/IAEA_moving.svg" type="image/svg+xml" style = "width: 210px; margin-top: 10px; margin-bottom:-150px; "/> <!-- <img src = "img/IAEA_moving.svg" style = "width: 210px; margin-top: 10px; margin-bottom:-150px; "> --> </br></br></br></br></br></br> <div style=" font-size: 12px; margin-top: 15px;" >Recreated based on <a href = "https://twitter.com/IAEALondon2021/photo">the official IAEA 2021 logo</a></div></center> ] .column-4[ <center> <img src = "img/dynamicflowers.svg" style = "width: 210px; margin-top: 10px; margin-bottom: -150px; "></center> ] .column-4[ <center> <img src = "img/ecologicalflowers.svg" style = "width: 210px; margin-top: 10px; margin-bottom: -150px; "> </br></br></br></br></br></br> <div style=" font-size: 12px; margin-top: 15px;" ><a href = "https://dx.doi.org/10.6084/m9.figshare.2082529.v1">Flower images</a> from <a href="https://doi.org/10.7717/peerj.2106">Hůla and Flegr (2016)</a></div></center> ] .column-4[ <center> <img src = "img/gradientflowers.svg" style = "width: 210px; margin-top: 10px; margin-bottom: -150px; "></center> ] <embed src="img/concentricrings.svg" type="image/svg+xml" style = "opacity:0; float:right; width: 5px;"/> <embed src="img/extra.svg" type="image/svg+xml" style = "opacity:0; float:right; width: 5px;"/> ??? Here you see some more advanced example stimuli, all created with OCTA. In OCTA you can not only use simple geometric shapes, you can also create more ecologically valid stimuli by using images or custom shapes in your stimuli. You can even recreate the conference logo in OCTA to make it fully reproducible and animatable! Until now I have showed you the toolbox and some examples, but I also want to show you potential applications by discussing two first studies we conducted using stimuli created with the OCTA toolbox. --- class: top, normal ## Applications <center><img src = "img/fig17_applications_600dpi.png" style = "height: 450px; margin-top:-15px;"></center> --- class: top, normal ## Cite OCTA when using it! Always cite OCTA when using it in your work; **Van Geert, E., Bossens, C., & Wagemans, J. (2023). The Order & Complexity Toolbox for Aesthetics (OCTA): A systematic approach to study the relations between order, complexity, and aesthetic appreciation. *Behavior Research Methods*, *55*, 2423–2446. https://doi.org/10.3758/s13428-022-01900-w** If you also want to refer to the Python toolbox or the Shiny app specifically, you can use: - for the Python toolbox: Van Geert, E., Bossens, C., & Wagemans, J. (2021). The Order & Complexity Toolbox for Aesthetics Python library [Computer software]. https://github.com/gestaltrevision/OCTA_toolbox - for the app: Van Geert, E., Bossens, C., & Wagemans, J. (2021). The Order & Complexity Toolbox for Aesthetics Shiny application [Online application]. https://elinevg.shinyapps.io/OCTA_toolbox/ --- class: middle, center, inverse ## OCTA: </br> Let's start! ??? First I will give you a quick demo of the app, then I will share where to find octa and the workshop documents and then we will go through some OCTA basics! --- class: middle, center, inverse ## OCTA: </br> App demo ??? https://elinevg.shinyapps.io/OCTA_toolbox/"> https://octa.shinyapps.io/OCTA_app5/"> Live demo * change positions of elements * change color pattern * change color value * output options --- class: top, normal ## Workshop documents Find the workshop materials and click on the 'Launch binder' icon: https://github.com/ElineVG/OCTA_workshop Alternatively, you can access the workshop here: </br> https://colab.research.google.com/drive/1v5AVb76tQ-aGVdJFvKi5Rqrw4IuRMztP?usp=sharing If you want to work with the app **during** the workshop, also open one of these links: - https://octa.shinyapps.io/OCTA_app1/ - https://octa.shinyapps.io/OCTA_app2/ - https://octa.shinyapps.io/OCTA_app3/ - https://octa.shinyapps.io/OCTA_app4/ **After** the workshop, access the app here: - https://elinevg.shinyapps.io/OCTA_toolbox/ --- class: top, normal ## Installation and requirements: APP No installation needed! Open the app in your browser: If you want to work with the app **during** the workshop, also open one of these links: - https://octa.shinyapps.io/OCTA_app1/ - https://octa.shinyapps.io/OCTA_app2/ - https://octa.shinyapps.io/OCTA_app3/ - https://octa.shinyapps.io/OCTA_app4/ **After** the workshop, access the app here: - https://elinevg.shinyapps.io/OCTA_toolbox/ --- class: top, normal ## Installation and requirements: PYTHON To run octa online: - surf to https://github.com/ElineVG/OCTA_workshop - click on 'launch binder' (OR alternatively, open this link: https://colab.research.google.com/drive/1v5AVb76tQ-aGVdJFvKi5Rqrw4IuRMztP?usp=sharing) To run octa locally on your computer: - Open the software you use to open Python documents (Spyder / PyCharm / ...) - install the following packages (or check whether already installed): svgwrite svg.path svgpathtools svgutils jsonpickle html2image svglib reportlab colour IPython pandas - install octa: pip install octa --- class: top, normal ## Installation and requirements: PYTHON Load the most common functions part of the octa package: ```python from octa.Stimulus import Grid, Outline, Concentric, Stimulus from octa.Positions import Positions from octa.patterns import GridPattern, Pattern, Sequence, LinearGradient from octa.shapes import (Ellipse, Rectangle, Triangle, Polygon, RegularPolygon, Path, PathSvg, Image, FitImage, Text) from octa.measurements import Order, Complexity ``` --- class: top, normal ## How to create an OCTA stimulus? <center><img src = "img/fig6_examplestim.png" style = "height: 450px; margin-top:-15px;"></center> --- class: top, normal ## Create your first OCTA stimulus! ![](img/examplestim.svg) ```python stimulus = Grid(9,9, row_spacing=25, col_spacing=25) stimulus.boundingboxes = GridPattern.RepeatAcrossElements([(20,20)]) stimulus.shapes = GridPattern.RepeatAcrossLayers([Rectangle, Triangle, Ellipse]) stimulus.fillcolors = GridPattern.GradientAcrossRightDiagonal(start_value = 'limegreen', end_value = 'steelblue') stimulus.orientations = GridPattern.MirrorAcrossLeftDiagonal([-90,-45,0,45,90]) stimulus.Show() ``` --- class: top, normal ## Exercise 1 0. Click the ‘Run Code’ button to create your first OCTA stimulus. 1. Can you change the number of rows and columns to 12 instead of 9? 2. Can you change the elements’ colors to go from red to limegreen? 3. Can you change the color gradient to go across the rows (`AcrossRows`) instead of across the right diagonal (`AcrossRightDiagonal`)? --- class: top, normal ## 1. Specify stimulus type <center><img src = "img/fig8_stimulustypes_600dpi.png" style = "height: 450px; margin-top:-15px;"></center> ??? also 'Stimulus' as stimulus type, when you do not want any default values applied to your stimulus and want to specify everything from scratch --- class: top, normal ## 1. Specify stimulus characteristics <center><img src = "img/stimcharacteristics.svg" style = "height: 450px; margin-top:-15px;"></center> ??? can be specified during defining stimulus type, or can be changed after stimulus has been created --- class: top, normal ## 1. Specify stimulus characteristics When defining stimulus type: ```python stimulus = Grid(n_rows = 3, n_cols = 6, background_color = "gainsboro") stimulus.Show() ``` Or after stimulus has been created: ```python stimulus = Grid(3,3) stimulus.n_cols = 6 stimulus.background_color = "gainsboro" stimulus.Show() ``` ??? can be specified during defining stimulus type, or can be changed after stimulus has been created <!-- --- --> <!-- class: top, normal --> <!-- ## 1. Specify stimulus characteristics --> --- class: top, normal ## 2. Customize positions <center><img src = "img/fig9_positiondefinitions_600dpi.png" style = "height: 450px; margin-top:-15px;"></center> --- class: top, normal ## 3. Specify pattern types <center><img src = "img/fig10_patterntypes_600dpi.png" style = "height: 450px; margin-top:-15px;"></center> --- class: top, normal ## 3. Specify pattern directions <center><img src = "img/fig11_patterndirections_600dpi.png" style = "height: 450px; margin-top:-15px;"></center> --- class: top, normal ## 3. Specify element features <center><img src = "img/fig12_elementfeatures_600dpi.png" style = "height: 450px; margin-top:-15px;"></center> --- class: top, normal ## 4. Add deviations <center><img src = "img/fig13_deviations_600dpi.png" style = "height: 450px; margin-top:-15px;"></center> ??? three types: - position deviations - element deviations - feature deviations --- class: top, normal ## 4. Order manipulations <center><img src = "img/fig14_ordmanipulations_600dpi.png" style = "height: 450px; margin-top:-15px;"></center> ??? Position order can be changed qualitatively by changing the type of position pattern. Element (and feature) order can be changed qualitatively by changing the different element feature pattern types and directions. Be aware that some feature pattern changes may also impact element complexity because of emerging (non-)congruence between different feature patterns. To induce quantitative changes in order, the user can swap the positions of distinct elements or randomize the elements in the stimulus (which keep element complexity level constant), or add any other element or feature deviations (but these other deviations may influence element or feature complexity as well; cf. Deviations). The user can also make stimulus features and element features (in)congruent to impact the order level of the stimulus. In addition, the congruence of patterns, pattern types, or pattern directions across feature dimensions can be adapted. Keep in mind that changes in pattern congruence may influence element complexity simultaneously. --- class: top, normal ## 4. Complexity manipulations <center><img src = "img/fig15_complmanipulations_600dpi.png" style = "height: 450px; margin-top:-15px;"></center> ??? Qualitative changes in complexity can be achieved by changing the feature dimension on which the complexity is present (e.g., shape, color, or size complexity). Quantitative element complexity changes can include (a) changing the number of visible elements present in the stimulus (i.e., by removing elements or by changing the position pattern of the stimulus); (b) manipulating the variety of elements (i.e., by including more pattern values on a feature dimension, by choosing more diverse pattern values, by adding feature deviations, or by changing the congruence of patterns across feature dimensions); (c) changing the complexity (familiarity, unintellegibility, etc.) of individual feature pattern values (e.g., use complex path shape instead of rectangles); or (d) changing the complexity of individual stimulus features. Position complexity can be changed quantitatively by adding random position jitter or structured position deviations (cf. Position deviations). --- class: top, normal ## 4. Order & complexity measures <center><img src = "img/fig16_ordcomplmeasures_600dpi.png" style = "height: 450px; margin-top:-15px;"></center> ??? OCTA provides some basic functionality to measure aspects of order and complexity in the created stimulus. For order, the user can request the applied patterns, pattern types, and pattern directions across all feature dimensions; check whether all specified feature dimensions have congruent patterns, pattern types, or pattern directions; calculate how many specified feature dimensions have congruent patterns, pattern types, or pattern directions; calculate the number of deviant elements are present given the specified feature dimensions (e.g., by added element or feature deviations); and calculate the number of deviant positions are present in the stimulus (i.e., by added position jitter or specified position deviations). When it comes to complexity measures, it is possible to calculate (a) the number of elements present in the display (N); (b) how many different types of elements are present in the display based on the feature dimensions specified (LOCE); (c) how many different features are present across all feature dimensions (LOC); and (d) how many different feature dimensions have more than one feature value (i.e., have non-identical values; LOCI). --- class: top, normal ## 5. Show & save stimulus - stimulus as vector image (SVG) - stimulus as raster image (PNG, JPG, PDF, TIFF) - computer-readable JSON output to recreate the stimulus - (in Python with the LoadFromJSON function) **In the online Shiny app: download or view the Python code to (re)create the stimulus in Python** **Set a seed to reproduce the exact same random deviations!** **Scale option to increase quality for raster images** [SVG - PNG scale 0.5 - PNG scale 1 - PNG scale 10]: <center><img src = "img/concentricrings.svg" style = "height: 200px; margin-top:-15px;"> <img src = "img/concentricrings_scale05.png" style = "height: 200px; margin-top:-15px;"> <img src = "img/concentricrings_scale1.png" style = "height: 200px; margin-top:-15px;"> <img src = "img/concentricrings_scale10.png" style = "height: 200px; margin-top:-15px;"></center> <embed src="img/concentricrings.svg" type="image/svg+xml" style = "opacity:0; float:right; width: 5px;"/> --- class: top, normal ## 5. Show and save stimulus **Points of attention:** - Always add random.seed(..) just before each SaveSVG/PNG/JPG/... function (because the stimulus is regenerated for each of those). Otherwise, random values will differ between different output files. - Always stimulus.Render() when using GetSVG(). Otherwise, the stimulus will not be rendered automatically and values will not be updated. - **Be aware that svg may be removed when you add SavePNG or SaveJPG!** Therefore it is best to save each output type in a separate folder. --- class: top, normal ## Terminology <center><img src = "img/fig17_terminology.png" style = "height: 450px; margin-top:-15px;"></center> --- class: top, normal ## Challenges! <center><img src = "img/challenge1.svg" style = "height: 200px; margin-top:-15px;"> <img src = "img/challenge2.svg" style = "height: 200px; margin-top:-15px;"> <img src = "img/challenge3.svg" style = "height: 200px; margin-top:-15px;"> <img src = "img/challenge4.svg" style = "height: 200px; margin-top:-15px;"></center> Need some help? Look here: https://colab.research.google.com/drive/1m5bKqK6oE0qf2J1AUn4CAcvG7Ged698-?usp=sharing --- class: top, normal ## Additional challenges! * Remove the background color (TAB 0) * Try to use the animated orientation (TAB 0) * Try different position patterns (e.g., SineGrid; TAB 1) * Add additional features like border widths or opacities (TAB 2) * Remove 3 random elements from the display (TAB 3) * Add uniform position jitter (TAB 3) * Give 1 element a custom fillcolor (e.g., ‘violet’, ‘black’; TAB 3) * Find the level of element complexity (LOCE; TAB 4) * Explore the example stimuli (SUPPORT TAB) --- class: middle, center, inverse ## OCTA: </br> Advanced topics ??? - adding sound is possible using Javascript --- class: top, normal ## Dynamic features <center><img src = "img/stim_example1.svg" style = "height: 150px; margin-top:-15px;"></center> ```python stim = Outline(n_elements = 20, x_margin = 0, y_margin = 0, shape_boundingbox = (90,90), background_color = "none", stim_orientation = ['animate', '0', '360', "dur='40s', repeatCount='indefinite'"]) stim.boundingboxes = GridPattern.RepeatAcrossElements( [ (20,20) ] ) stim.shapes = GridPattern.RepeatAcrossElements( [ Ellipse, Rectangle ] ) stim.fillcolors = GridPattern.RepeatAcrossElements( [ "#9C4B9C", "#5EA1D8" ] ) stim.orientations = GridPattern.RepeatAcrossElements( [ ['animate', '360', '0', "dur='40s', repeatCount='indefinite'"] ] ) stim.Show() stim.SaveSVG("stim_example1", folder = "") ``` --- class: top, normal ## Dynamic features <center><img src = "img/stim_example2.svg" style = "height: 150px; margin-top:-15px;"></center> ```python stim = Grid(n_rows = 6, n_cols = 6, row_spacing = 35, col_spacing= 35, size = (250,250)) stim.boundingboxes = GridPattern.RepeatAcrossElements( [ (20,20) ] ) stim.fillcolors = GridPattern.TiledElementGrid(source_grid = GridPattern.RepeatAcrossRightDiagonal( [ ['animate', '#5EA1D8', 'values = "#5EA1D8;#B2D135", begin = "0s", calcMode = "discrete", dur = "5s", repeatCount = "indefinite"'] , ['animate', '#B2D135', 'values = "#B2D135;#5EA1D8", begin = "0s", calcMode = "discrete", dur = "5s", repeatCount = "indefinite"'] ], 2, 2), tile_multiplier = 3) stim.shapes = GridPattern.TiledElementGrid(source_grid = GridPattern.RepeatAcrossRightDiagonal( [ Ellipse, Rectangle ], 2, 2), tile_multiplier = 3) stim.Show() stim.SaveSVG("stim_example2", folder = "") ``` --- class: top, normal ## Dynamic features - animate - set More examples in the app under 'Custom' colors, orientations, etc. More info on SVG animation: https://www.w3schools.com/graphics/svg_animation.asp --- class: top, normal ## Dynamic features No dynamic feature options for shape in OCTA directly, BUT: - you can add a gif video as shape using the image tag - you can create a dynamic svg in which the shape changes and add it using the image tag - you can create static OCTA stimuli and concatenate them in a video (e.g., using moviepy) --- class: top, normal ## Generating a stimulus set ```python # Load necessary objects and functions from OCTA from octa.Stimulus import Grid from octa.patterns import GridPattern from octa.shapes import Ellipse, Rectangle # Set variable values to use in stimulus set cols = [ "#5EA1D8", "#B2D135", "#F39130", "#ED4959"] # [ "#9C4B9C", "#5EA1D8", "#54C4D0", "#62BD80", "#B2D135", "#FCE533", "#F39130", "#ED4959"] colors_in_set1 = [] for i in range(len(cols)): for j in range(len(cols)): # do not add those conditions where both colors are the same: if cols[i] != cols[j]: colors_in_set1.append([cols[i], cols[j]]) ``` --- class: top, normal ## Generating a stimulus set ```python shapes = [ Ellipse, Rectangle, RegularPolygon(5) ] shapes_in_set1 = [] for i in range(len(shapes)): for j in range(len(shapes)): # do not add those conditions where both shapes are the same: if shapes[i] != shapes[j]: shapes_in_set1.append([shapes[i], shapes[j]]) #shapes_in_set1 = [ [Ellipse, Rectangle], [Ellipse, RegularPolygon(3)], [Ellipse, RegularPolygon(5)], [Ellipse, RegularPolygon(6)] ] ``` --- class: top, normal ## Generating a stimulus set ```python # Define base stimulus [with features that stay same across all stimuli in set] stim = Outline(n_elements = 20, x_margin = 0, y_margin = 0, shape_boundingbox = (90,90), background_color = "none", stim_orientation = ['animate', '0', '360', "dur='40s', repeatCount='indefinite'"]) ## Add non-changing features of base stimulus stim.boundingboxes = GridPattern.RepeatAcrossElements( [ (20,20) ] ) stim.orientations = GridPattern.RepeatAcrossElements( [ ['animate', '360', '0', "dur='40s', repeatCount='indefinite'"] ] ) ``` --- class: top, normal ## Generating a stimulus set ```python for chosen_colors in range(len(colors_in_set1)): for chosen_shapes in range(len(shapes_in_set1)): # Define stimulus name stimname = "outlinestim_" + str(chosen_shapes+1) + "_" + str(chosen_colors+1) # Add fillcolors for the elements stim.fillcolors = GridPattern.RepeatAcrossElements( colors_in_set1[chosen_colors] ) # Add shapes for the elements stim.shapes = GridPattern.RepeatAcrossElements( shapes_in_set1[chosen_shapes] ) # Save stimulus stim.Render() #stim.Show() stim.SaveSVG(stimname, folder = "") ``` --- class: top, normal ## Arranging different OCTA displays <center><img src = "img/superstim.svg" style = "height: 450px; margin-top:-15px;"></center> <embed src="img/superstim.svg" type="image/svg+xml" style = "opacity:0; float:right; width: 5px;"/> --- class: top, normal ## Arranging different OCTA displays <center><img src = "img/superstim2.svg" style = "height: 450px; margin-top:-15px;"></center> <embed src="img/superstim2.svg" type="image/svg+xml" style = "opacity:0; float:right; width: 5px;"/> --- class: middle, center, inverse ## OCTA: </br> Use OCTA in your research! --- class: top, normal ## Use pregenerated OCTA stimuli in your experiments .pull-left[ **Possible with any software** **Psychopy: needs raster images** **Demo experiments in jspsych** [www.jspsych.org/](https://www.jspsych.org/) Let participants... - choose which image they prefer - rate images on aesthetic value - arrange elements on a canvas - create a pleasing or interesting stimulus - change an existing stimulus - ... ] .pull-right[ <div id="wrap2"> <iframe id="scaled-frame" src="http://evg.ulyssis.be/octa/expdemo/jspsych-combo.html"></iframe> </div> ] ??? The two studies I presented here only show very basic experiment designs, but OCTA stimuli are easy to use in a multitude of experiment options. For example, we can let participants - choose which image they prefer - rate images on their aesthetic value but we can for example also let them - arrange the elements on a canvas in the way the prefer - or let them resize elements as preferred All of this is also possible with animated stimuli as shown here --- class: top, normal ## Generate OCTA stimuli during the experiment Possible with **PsyNet** ([www.psynet.dev](www.psynet.dev)) → **Presentation by Peter Harrison in Methods session (May 10th, 9:00)** <div style="text-align: center; margin-top:0px"> <video width="680" controls> <source src="img/octagibbs2.mp4" type="video/mp4" Your browser does not support the video tag. </video> </div> --- class: middle, center, inverse ## OCTA: </br> The future --- class: top, normal ## Future developments .pull-left[ - additional position patterns & deviation options - additional animation options - option to create multiple stimuli at once - ... **Which additional features would you like to see?** **What other feedback or suggestions do you have for OCTA?** ] .pull-right[ ![](img/testanimatesvg.svg) ] ??? What does the future bring for the OCTA toolbox? Well, on the development side, further development will largely depend on user requests, so if you have any suggestions or requests you can contact me on my email address. On the research side, there are many options available, and I want to invite all of you to explore them with me. If you are interested in collaborations, please contact me on my email address, but if you want to use OCTA in your own research independently, feel free to do so as well. Only condition is citing the toolbox in your research outputs, respecting the license and making sure you keep the code you used to generate your stimuli so that other researchers will be able to reproduce and adapt for their own work! <!-- --- --> <!-- class: top, normal --> <!-- ## Which image do you prefer? --> <!-- <div style = "margin-top: -20px;">Stimuli with varying number of complexity dimensions: </div> --> <!-- .column-4[ --> <!-- .center[ --> <!-- <img src = "img/example1.svg" style = "width: 210px; margin-top: -20px;"> --> <!-- .caption[A</br>color</br>shape</br>orientation] --> <!-- ] --> <!-- ] --> <!-- .column-4[ --> <!-- .center[ --> <!-- <img src = "img/example2.svg" style = "width: 210px; margin-top: -20px;"> --> <!-- .caption[B</br>color</br>shape] --> <!-- ] --> <!-- ] --> <!-- .column-4[ --> <!-- .center[ --> <!-- <img src = "img/example3.svg" style = "width: 210px; margin-top: -20px;"> --> <!-- .caption[C</br>color</br>shape</br>orientation </br>size] --> <!-- ] --> <!-- ] --> <!-- .column-4[ --> <!-- .center[ --> <!-- <img src = "img/example4.svg" style = "width: 210px; margin-top: -20px;"> --> <!-- .caption[D</br>color] --> <!-- ] --> <!-- ] --> <!-- ??? --> <!-- So, we are back where we started, which image did you prefer? --> <!-- As you may have noticed these OCTA stimuli differ in the number of complexity dimensions present, with D being the simplest image and C being the most complex one. --> --- class: top, normal ## Cite OCTA when using it! Always cite OCTA when using it in your work; **Van Geert, E., Bossens, C., & Wagemans, J. (2023). The Order & Complexity Toolbox for Aesthetics (OCTA): A systematic approach to study the relations between order, complexity, and aesthetic appreciation. Behavior Research Methods, 55, 2423–2446. https://doi.org/10.3758/s13428-022-01900-w** If you also want to refer to the Python toolbox or the app specifically, you can use: - for the Python toolbox: Van Geert, E., Bossens, C., & Wagemans, J. (2021). The Order & Complexity Toolbox for Aesthetics Python library [Computer software]. https://github.com/gestaltrevision/OCTA_toolbox - for the app: Van Geert, E., Bossens, C., & Wagemans, J. (2021). The Order & Complexity Toolbox for Aesthetics Shiny application [Online application]. https://elinevg.shinyapps.io/OCTA_toolbox/ --- class: top, normal .pull-left[ <div style = "margin-top: -50px;"> <h2> Further resources</h2></div> - <a href="https://doi.org/10.3758/s13428-022-01900-w" target="_blank">Read the OCTA paper</a> - <a href="https://elinevg.shinyapps.io/OCTA_toolbox/" target="_blank">Use the OCTA Shiny app</a> - <a href="https://github.com/gestaltrevision/OCTA_toolbox" target="_blank">Use the OCTA Python package</a> - <a href="https://docs.google.com/forms/d/e/1FAIpQLScHfKYGP_Oh6a_cd6jnf-jpbfJWWSzNXCpnPwDiI07zyHBy-w/viewform?hl=en" target="_blank">Subscribe to the OCTA mailing list</a> <!-- - <a href="http://evg.ulyssis.be/octa/2021-08-26_ECVP2021_vangeert_onl_poster_2901.html" target="_blank">Explore the OCTA poster from ECVP 2021</a> --> - <a href="http://evg.ulyssis.be/octa/" target="_blank">Check the OCTA documentation and example stimuli</a> <!-- - <a href="https://elinevg.github.io/OCTA_stimulusexamples/" target="_blank">Explore OCTA example stimuli</a> --> - <a href="https://github.com/ElineVG/OCTA_workshop" target="_blank">Revisit the OCTA workshop</a> <!-- - <a href="https://elinevg.shinyapps.io/OCTAratings_explore/" target="_blank">Explore the OCTA image ratings app</a> --> ] .pull-right[ <center> <img src = "img/EVG_OCTA.svg" style = "width: 100%;" margin-bottom: -10px;"> <div style = "margin-top: -30px;"><a href = "http://evg.ulyssis.be/evg/"><b>Eline Van Geert</b></a></div></br> <div style = "float:middle; margin-top: -20px; "> <a style = "font-size: 16px;" href="http://gestaltrevision.be/en/" target="_blank" rel="noopener"> <span>GestaltReVision, KU Leuven</br>Computational Auditory Perception, MPIEA</span> </a></br> <a href="http://evg.ulyssis.be/evg/" style="display:inline-block; float:middle;padding:10px; padding-left:0px;"> <svg viewBox="0 0 496 512" style="position:relative;display:inline-block;top:.1em;fill:#119abb;height:2em;" xmlns="http://www.w3.org/2000/svg"> <path d="M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"></path></svg> </a> <a href="mailto:eline.vangeert@kuleuven.be" style="display:inline-block; float:middle;padding:10px;"> <svg viewBox="0 0 512 512" style="position:relative;display:inline-block;top:.1em;fill:#119abb;height:2em;" xmlns="http://www.w3.org/2000/svg"> <path d="M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z"></path></svg> </a> <a href="http://orcid.org/0000-0002-7848-5998" target="_blank" rel="noopener" style="display:inline-block; float:middle;padding:10px;"> <svg viewBox="0 0 512 512" style="position:relative;display:inline-block;top:.1em;fill:#119abb;height:2em;" xmlns="http://www.w3.org/2000/svg"> <g label="icon" id="layer6" groupmode="layer"> <path id="path2" d="m 336.6206,194.53756 c -7.12991,-3.32734 -13.8671,-5.55949 -20.25334,-6.61343 -6.36534,-1.09517 -16.57451,-1.61223 -30.71059,-1.61223 h -36.70409 v 152.74712 h 37.63425 c 14.6735,0 26.08126,-1.01267 34.22385,-3.01709 8.14259,-2.00442 14.92159,-4.52592 20.35674,-7.62608 5.43519,-3.07925 10.416,-6.8615 14.94192,-11.38742 14.4876,-14.71475 21.74129,-33.27334 21.74129,-55.7176 0,-22.05151 -7.44016,-40.05177 -22.34085,-53.98159 -5.49732,-5.16674 -11.82143,-9.44459 -18.88918,-12.79281 z M 255.99999,8.0000031 C 119.02153,8.0000031 8.0000034,119.04185 8.0000034,255.99998 8.0000034,392.95812 119.02153,504 255.99999,504 392.97849,504 504,392.95812 504,255.99998 504,119.04185 392.97849,8.0000031 255.99999,8.0000031 Z M 173.66372,365.51268 H 144.27546 V 160.1481 h 29.38826 z M 158.94954,138.69619 c -11.13935,0 -20.21208,-9.01056 -20.21208,-20.21208 0,-11.11841 9.05183,-20.191181 20.21208,-20.191181 11.18058,0 20.23244,9.051831 20.23244,20.191181 -0.0219,11.22184 -9.05186,20.21208 -20.23244,20.21208 z m 241.3866,163.59715 c -5.29051,12.54475 -12.83407,23.58066 -22.65053,33.08742 -9.98203,9.83734 -21.59659,17.19443 -34.84378,22.19616 -7.74983,3.01709 -14.83852,5.06335 -21.30725,6.11726 -6.4891,1.01267 -18.82759,1.50883 -37.07593,1.50883 H 219.5033 V 160.1481 h 69.23318 c 27.96195,0 50.03378,4.1541 66.31951,12.54476 16.26485,8.36977 29.18144,20.72859 38.79164,36.97254 9.61013,16.26483 14.4254,34.01757 14.4254,53.19607 0.0227,13.76426 -2.66619,26.90802 -7.93576,39.43187 z" style="stroke-width:0.07717"></path> </g></svg> </a> <a href="https://twitter.com/eline__vg" target="_blank" rel="noopener" style="display:inline-block; float:middle;padding:10px;"> <svg viewBox="0 0 512 512" style="position:relative;display:inline-block;top:.1em;fill:#119abb;height:2em;" xmlns="http://www.w3.org/2000/svg"> <path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path></svg> </a> <a href="https://github.com/ElineVG" target="_blank" rel="noopener" style="display:inline-block; float:middle;padding:10px;"> <svg viewBox="0 0 496 512" style="position:relative;display:inline-block;top:.1em;fill:#119abb;height:2em;" xmlns="http://www.w3.org/2000/svg"> <path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg> </a> </div> </center>] <div> <center><b>Thanks to</b></center> .pull-left[<center>my research groups, institutions, and funder</center></br>] .pull-right[<center>my collaborators</center>] .pull-left[<center><img src = "logos/gestaltrevisionlogosmall.png"> <img src = "logos/KULeuven_small.png"> <img src = "logos/FWOlogosmall.jpg" ></center><center><img style = "width:220px;" src = "CAP.png"><img style = "width:220px;" src = "logos/MPIEA-Logo-Prio1-EN-RGB-green_WHITEBG_SMALL.png"> </center> ] .pull-right[<center><img src = "img/christophe_bossens.jpg" style = "height:65px;margin-left:85px;margin-top: 0px;float:middle; "> <img src = "img/johan_wagemans.jpg" style = "height:65px;margin-left:15px;margin-top: 0px;float:middle; "> <img src = "img/nori_jacoby.png" style = "height:65px;margin-left:15px;margin-top: 0px; float:middle;"></center>] </div> ??? I want to thank you all for your attention and point you to all the resources available online (there is the OCTA toolbox app, code, documentation, we also have a mailing list to be kept up to date on new developments for OCTA; a poster you can explore to get to know OCTA better, and the ratings app I showed you today). A paper is in preparation and will soon be available as a preprint. To get to all of those resources, you can go to the url shown on the bottom of the slide and click all the links on the slides. If there are any questions, I am more than happy to answer them :-)