Space Syntax

Space Syntax is a theory of architecture and built environment that seeks to explain the effect of spatial configurations on behavioral patterns of people. SYNTACTIC tools bring Space Syntax theory into parametric design workflows. More information on syntactic design methodology:

My PhD dissertation (see chapters 3 & 4)

Designing with Space Syntax

Syntactic Design Methodology

For more information, videos, news and updates you can visit the following website. 

See a video demo-tutorial here

The plugin is available for download here: https://genesis-lab.dev/products/syntactic/

This plugin is completely compatible with SpiderWeb for Grasshopper and we hereby thank Richard Schaffranek for all we have learned from this extremely useful plugin

NEW VERSION WAS RELEASED ON JANUARY 25, 2015. 

See our newest results these publications:

Voxel Graph Operators

Voxel-Based Spatial Ergonomics Research

Evaluating Spatial Configurations as to their [Adaptive] Reuse Potential

UPDATE: Genesis Lab [webpage][website] is to modernize, open-source, and develop the toolkit starting in December 2021. Stay tuned for updates through my YouTube Channel and ResearchGate

Load Previous Comments
  • Ortler Mark

    Hey Pirouz Nourian,

    Thanks for the fast reply.
    Im not the Graph-Expert but I guess that my Graph is planar(topological).
    No Loops at all, but some intersections of the (real/drawn) edges... 

    Without Loops, shouldn't it possible to remap it?

     
    I get the point of your post addressed to Edward, but I do not understand why the component fails in my case.

    Can u have a look at it and tell me what I can do to get it work?

    greets Mark

    FlaechenAnalyse.zip

  • Pirouz Nourian

    Hi Ortler, You're welcome. I just checked your file; I understand it is a case of analysis of an already existing plan. You need a nice graph drawing if I am not mistaken. Right? Even if the graph is planar, still you need to have a combination of area values to make a kissing-disks or coin-graph drawing. In some nodes you have too many connections to a node that means for the disks to kiss each other that node must be significantly bigger than all its neighbors. Similar problems might arise when one big coin is supposed to be trapped in the middle of a bunch of small coins. I understand this might be frustrating because you already see a feasible planar drawing of this graph as your plan. But note that for circles to meet each other in this way these challenges exist. In general you need to provide a set of area values to make the kissing disk drawing possible. In order to do this, I would either break the graph in parts and approach one by one or try to lower the repulsion force and then put numbers one by one such that their combination would produce a feasible planar configuration of coins. No easy way in either case. Having said all this, please note that if you don't manage to draw a graph with this component it doesn't mean that you cannot use analysis components. I started recognizing the points that connect to many other and giving them a higher area; lowering the repulsion and limiting the iterations at the same time, this way you can produce some acceptable bubble drawings and proceed easier -perhaps. Now they are closing the faculty building and kicking everyone out... FlaechenAnalyse_PZN_Ed.gh

  • Edward Whitley

    Hey, so I have deleted a couple connections in the program, and I have manipulated the attraction and repulsion inputs, and I have seemed to solve the problem... unfortunately it is still a little touch and go if I move those sliders too much. But ultimately Im getting a pretty great output I think. Thank you so much Pirouz, for the help and the program. 

    Here is my new file:

    2ndProgramSyntax.3dm

    2Programsyntax.gh

  • Pirouz Nourian

    Hi Edward, happy to hear that. Looks like you have pushed it to the limit :)

    Still a few coins don't fit around their hubs, but yes if you let them relax by lowering repulsion you can get a result. Good luck with the rest. 

  • Frane Zilic

    Hi Pirouz

    First of all thank you very much for the plugin. I installed and used it in another computer and it was fine but in mine it gives me this error...

    An error occured during GHA assembly loading:
    Path: C:\Users\Frane\AppData\Roaming\Grasshopper\Libraries\SpaceSyntax_for_GenerativeDesign.gha
    ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
    The GHA file is either damaged or has been made with
    a newer version of .NET than Grasshopper itself.
    You can try toggling the "Memory Load" option in the
    GrasshopperDeveloperSettings command window, it might help.
    ――――――――――――――――――――――――――――――――――――

    Any idea why?

    Thanks again

  • Frane Zilic

    Hi Pirouz

    I feel stupid... I thought I tried toggling "Memory Load" and it didn't work... I did it now and it works. 

    So thanks anyway

    Bye

  • Pirouz Nourian

    Hi Frane, 

    Happy to hear that it works now; but could you please tell me how exactly you opened this developer settings window?

    Best,

    Pirouz

  • Frane Zilic

    Hi Pirouz.

    It works but I have to do it every time I start GH.

    You can open the window with the "GrasshopperDevelopperSettings" command in Rhino. 

  • Pirouz Nourian

    Hi Frane, reading the error message again; I get the impression that your GH is not up to date... correct?

  • Frane Zilic

    Hi Pirouz

    no. I have the latest GH version & latest rhino release running on windows 8.1. 
  • Pirouz Nourian

    Strange! Anyway I am planning to release a new version with a small bug fix soon; in this version I will take care of a few issues related to the .Net and Rhinocommon version. Hopefully it will be solved. I need to think about it more... 

  • Tata fontes

    Hi,

    Pirouz thanks so much for all the work. Do you think you can upload the new version, that you refered earlier, the space syntax layout with cardinal directions? Thanks

  • Dario

    Dear Pirouz,

    i would like to ask a suggestion to you beacuse is impossible to figure out the error of my Diskograph component.

    basically I have a distributiion with 29 points and connections among them. I tested a definition with 4 points and working fine, but adding more points the NGV output is giving a strange codification of the point coordinates.

    I will be very glad to hear from you.

    Thanks in advance

    Dario

    error.jpg 

  • Pirouz Nourian

    Hi Dario, just responded via email.  

  • Pirouz Nourian

    Hi Tata, thanks for your kind words. I just need a few hours free to finalize a new version. This week is quite hectic, hopefully next week I will share the new version. 

  • Tata fontes

    Hi Pirouz! Any news on the new version?

  • Pirouz Nourian

    Hi Tata, I made some last changes to the latest version on Sunday, it's basically ready but I need a few more hours to rebuild the assembly and publish. Soon...

  • Mathias s n

    Hi, it says download link is down ..

  • Pirouz Nourian

    Hi all, the new version is now available at: https://sites.google.com/site/pirouznourian/syntactic-design?pli=1

    There might be a little issue with the visualization of disks (they might have been turned into dark colors); haven't figured out yet what it is. But there is a simple solution for the time being: zoom on your work from your perspective view-port and change the name of this view port to TOP.

    Apart from this, make sure you read the notes on the new components. One of them is just a dummy place holder. 

  • Rafat Ahmed

    Big Thanks Prof Nourian, its really very useful, and am one of those who is waiting it.

    Really i appreciate your Time & Effort.

  • Pirouz Nourian

    Thanks Rafat for your compliments. I would love to be a professor but I'm just "a simple kid with a simple passion for simple things" :) technically still a PhD researcher/instructor!  Hope the new version is running smoothly. 

  • Leonardo Roli

    Hi Pirouz, I'm using Space Syntax to configure the functional layout in an urban design project. 
    I've noticed that with a quite high range of functions and especially when all this elements have too many interconnections between them, it became really hard to obtain a clear configuration. For ex in my case I've got 13 functions with more than 30 connections, but the result is incomprehensible, as you can see from the image.

    I've tried to search a previous conversation about this issue, but I didn't found a solution. Am I making some mistakes or do I pretend to use too many imputs? Do you have any suggestion?

    Thank you!!

  • Richard Schaffranek

    Hallo Leonardo,

    I might not be able to suggest anything but I would like to point out two things:

    Syntactic is using force-directed graph drawing (as fare as I know). This comes with certain restraint:

    http://en.wikipedia.org/wiki/Force-directed_graph_drawing

    Secondly it might be that you graph ain't planar:

    http://en.wikipedia.org/wiki/Planarity_testing

    Maybe this helps.

  • Leonardo Roli

    Hi Richard, thanks for the tips.. I've checked and all the points and lines are planar.. 

    So, does anyone has suggestions on how fix this issue?

  • Richard Schaffranek

    Hello Leonard,

    Ain't nothing to do with the lines being planar, please read the postet articles.

  • Leonardo Roli

    ok.. I read the two links.. but I still cannot figure out if I'm wrong and where.. for ex, about the planarity, I think that it's just impossibile for me to avoid the edges intersection.

  • Richard Schaffranek

    Well as said explained in the article about force directed graph drawing, it is an iterative process so one thing you can do is to increase the number of iterations (It_#). Also you can play with the strength of Attraction / Repulsion (St_Atr / St_Rep).

    However if the graph is not planar than there is a conflict, since an edge means attraction... . 

  • Pirouz Nourian

    @ Richard: Many thanks for your explanations Richard! 

    @ Leonardo: As Richard says, if the graph is non-planar then you cannot expect a kissing-disk drawing to be created without crossings. If you want to get a result that is acceptable, you can lower the strength of the springs (ST-Atr) as Richard has suggested. Note that this words of yours "it's just impossible for me to avoid the edges intersection" mean exactly that the graph is non-planar. 

  • Leonardo Roli

    Tank you very much Pirouz and Richard.. now everything seems more clear!!

  • Pirouz Nourian

    Hi, you need to drag the GHA file from the folder installed by the installer and drop it on your GH canvas. Note that the installer asks for the location of this folder during installation. If you don't specify a location it puts the folder in a default location. Please read the notes in the folder. 

  • Arrow Morphow

    very nice work thank you so much ! stay blessed:)

  • dalec

    Hello, is there a way to establish the configuration in the built environment and the correspondence between different spaces but in the case of more than one layer... In other words, if we want to show the relations not only one planar point of view but also in more than one level... I would like to try this component in a research project where i can optimise the spaces not only on one plan level but also the relations between upper level per exemple..
  • Waldemar Felipe

    Hi Pirouz! Your job is amazing! I'm starting to work with grasshopper in university and i`m really interested in a possible application of space syntax in social housing. So your work is all i ever dreamed. hahaha I downloaded your latest release(2.7) but couldn't understand why the graphs that look like rooms (step 3-b and 4 in your paper) do not actualize when i change the value in the Gene Pool. Is still in development? Thank you anyway! Greetings from Brazil!
  • dalec

    Hello, 

    I am really enjoying working with this component, and I am wondering if it is possible to add some parameters and constraints related to energetic and climate contexts.... like p.e. parameters related to sun path (so i will be sure that my graph and relations will be associated to the site conditions...).. so in other words, the functions will be in the right place...

    Thank you very much for this work also 

  • Pirouz Nourian

    Hi, 

    Arrow Morphow: thanks for your kind message!

     dalec: I have not found a generic stable way of doing that in 3D yet. Let me clarify something: the tools for plan layout do not perform any optimization whatsoever. The dual graph component can reveal possible 'topological embedding's for a planar graph that describes desired spatial connectivity links. It does that by introducing adjacency links that were not mentioned in the initial graph. Simply put, it shows multiple ways in which rooms can be laid out on a plane so as to allow for the mentioned spatial connections.If the input graph is non-planar (i.e. you cannot draw it on a piece of paper without edges crossing one another) then this process fails. Speaking of optimization; you need to have a notion of goodness interpreted as a measurable 'objective function' that you can seek to maximize (or minimize). There is no such thing in the toolkit at the moment. As for performance measures, the idea is that the designer initially puts in the desired adjacency such as "kitchen facing northeast"  having in mind lighting conditions and alike. I can imagine that such performance criteria can be integrated but have no idea how generic they can be. As for a toolkit we only focus on tools that are generic-purpose. But of course I would be happy to hear your ideas on this subject; perhaps we can find a way...

  • Pirouz Nourian

    Hi Waldemar Felipe

    Happy to hear that the tools can be useful in social housing design! 

    As I have written below, the 'dual graphs' that look like rooms are only showing the possibilities for laying out rooms on a plane such that they allow for the desired spatial connections put in by the user. There are ways to draw a rectangular dissection with the same topological properties. We did not manage to make such drawings; that is why I have marked these tools as funny/dummy/place holder:

    I would like to develop these further; but unfortunately I don't have the time for that. Please read the message in the example file. If anybody can develop these tools as I have explained, I will include them in the next release. Right now, I am thinking of an alternative way to grow spaces into each other, a completely different story that starts from the dual graph of rooms...

  • dalec

    Hello Pirouz, and thank you for your answer. 

    I know how your toolkit function, and I know that it doesn't provide an optimization, but I think if we find a way to let him provide an optimization by adding multicriteria constraints It would be great...,

    I am using this process of generic and parametric modeling in a research project for my thesis. 

    It seems that architecture programming is being discussed more and more. Optimization of the connectivity between spaces of an architectural projects is needed specially for big projects. 

    Therefor, I wanted to to test the connectivity between spaces not only in 2D level, but with more than one level, (referring to the different stories that we can in the building). Since some of the spaces connected to each other in a graph (2D level) might have to be connected with other spaces in the next level.. I would appreciate also if we can discuss this issue, and having a feedback from you of what you think and what can you propose as a method of solutions.

     

  • Pirouz Nourian

    Hi dalec, speaking of 3D configurations, there is nothing limiting the node-link graph to model a 3D configuration as a graph (to begin with). Once you have your configuration modeled as a graph you can of course do all the analyses of Space Syntax too. The graph is however different from its embedding (drawing). How you put a bunch of points in space referring to the nodes (representing spaces) is a matter of graph drawing. I can do something similar to disk drawing with spheres but I don't see how useful it could be. An approach similar to Tutte drawing (as in the new components) is already quite complicated in 2D; I do not have a clear idea as to how that process can be generalized to 3D; but I have not given up. I am thinking of alternatives. Might show some alternative ways in future here. I would also welcome ideas from everyone in the group. 

    Regarding optimization; we need to define objective functions. What kind of objective functions do you have in mind? 

  • Pirouz Nourian

    Re 3D: Richard Schaffranek has some very interesting 3D configuration experiments, I recommend that you try his toolkit SpiderWeb and have a look at this workshop notes: http://www.gbl.tuwien.ac.at/Archiv/digital.html?name=AAG2014

  • dalec

    Hello and thank you for your replies. 

    I will take a look of these links and get back to you.

  • dalec

    Re, can I find other examples or tutorial for Space Syntax using other components? 

    Thank you 

  • Pirouz Nourian

    Hi dalec, you can do Space Syntax analyses with SpiderWeb tools as well, tutorials by Richard Schaffranek can be found here:

    http://www.gbl.tuwien.ac.at/Archiv/digital.html?name=SpiderWeb

    http://www.gbl.tuwien.ac.at/_docs/GrasshopperScriptum/GrasshopperSc...

    You can have a look at this thread for further instructions on how to use Spider Web for Space Syntax analyses:

    http://www.grasshopper3d.com/group/spiderweb/forum/topics/gamma-ana...       

    FYI, There is also a toolkit called Decoding Spaces:

    http://www.decodingspaces.de/content/decoding-spaces-components-gra...

     

    In addition, our papers on the subject are accessible through the links below: 

    http://www.sss9.or.kr/paperpdf/mmd/SSS9_2013_REF048_P.pdf

    http://cumincad.architexturez.net/doc/oai-cumincadworks.id-ecaade20...

     

    The original Space Syntax software was DepthMap developed by late Alasdair Turner (the hero who made a great difference in the history of spatial analysis and unfortunately died very early) is of course the original software for Space Syntax ‘analysis’. An open source version of this software with a new interface is now developed and maintained as DepthMapX by Tasos Varoudis at University College London. http://www.spacesyntax.net/software/ucl-depthmap/    

     

    For Space Syntax or network analyses on urban scale, DepthMap can be used, we are also developing and furthering the plugin CONFIGURBANIST for this line of work:

     

    http://www.grasshopper3d.com/group/cheetah          

  • Richard Turner

    Hi there, firstly fantastic plug in! second im completely new to grasshopper and currently stumbling my way through tutorials trying to get up to speed. Would somebody please be able to explain how to use the weighted voronoi component in this plug in, apologies if it is very basic

    thank you

  • Pirouz Nourian

    Hi Richard Turner, the weighted Voronoi component works like the native Voronoi component of GH with the difference that it can accept multiple radii corresponding to the points as their weight. In that sense, it creates some sort of a bubble packing. 

  • Pirouz Nourian

    So, given a boundary, a set of points inside that boundary and a set of corresponding radii, you should be able to play with this component to make bubble packing. Disclaimer: I do not support bubbly designs necessarily : ). 

  • Agneesh

    Hello Pirouz,

    I'm sure you must be tired of listening to 'Thank you' for the plug-in...nonetheless thank you again.

    Is there a way to include anchor points such as North / South / East / West / Views etc in this algorithm? Can we do it in its (space syntax's) current version?

    Thanks

    AB

  • Pirouz Nourian

    Hi Agneesh, it always feel good to see people find your work useful! :) my pleasure. Have you tried the new version (2.7)? I have not updated the video yet, but those operations with NEWS have been added. Or did you mean something else?

  • Nicholas Rawitscher

    Hey Pirouz, thank you for your quick reply on the youtube channel. Attached is the rhino file and the GH file PIROUZ.3dm PIROUZ.gh

    Thank you for your tiem and help,I will be waiting for your response

    Nicolas

  • Agneesh

    Hi Priouz,

    Sure it is, i have downloaded the new version and i could see NEWS. Now i have to figure out how to use it :-). i will get in touch if i can not...once again thank you and your are very generous and kind.

  • Agneesh

    Hi Pirouz,

    I tried using the new version. i connected the points (spaces) to the relevant NEWS (suitable to NZ). In the final output NEWS also moves like any other space. Is that correct? Generally, NEWS is supposed to be anchor points and they do not move, whereas only spacial discs move depending upon the interconnections.

    Is it possible to add an input - 'anchor points' to Nodes & Links components ? in that case we could also add more parameters such as scenic views etc?

    Moreover is it also possible to connect points with Repulsive Spring Force, for instances where 2 spaces can not be next to each other for logistic reasons?

    I know i'm being greedy here :-D...

    Kind regards,

    AB