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
  • Pirouz Nourian

    Hi Tim, I'd say it is probably because the points and lines do not 'exactly' touch each other where you expect them to. Could you please try redrawing them accurately, preferably using the snapping options of Rhino? if the problem persisted, then my next guess would be something pertained to the error tolerance that I have hard coded in the components, that is the document tolerance set once when you initiate a file. An idea to solve this issue would be through raising the tolerance for error through Rhino command line or Rhino options. 

  • Arindra Januari

    Hi Pirouz, thanks for the awesome plugin! I'm new to this Space Syntax thing and now Im having problem when trying to make the triangulation. First I thought it was because I used too many nodes that caused the configuration to be not planar the but then I tested it with simpler one and the problem is still the same. I think I already follow the example and also read your pdf but couldn't really find the solution. The value on the base plan is also xy instead of coordinate, maybe it is the issue but I dont know how to fix it. Following is the screenshot:

    Thanks in advance! :)

  • Pirouz Nourian

    Hi Arindra, thanks for your compliments! From what I see in the image I can guess that the problem is that you have not mentioned links towards the 4 sides (NEWS: North, East, West, and South). You need to provide additional links towards the sides to use the triangulation methods. 

    I hope this helps. 

  • Lea Dietiker

    Hello Everyone! 

    Thanks Pirouz for this amazing tool!  I would love to use it - BUT the Node-Link Graph is constantly telling an error.

    >> Boolean Rhino.geometry.Line.EpsilonEquals (Rhino.Geometry.Line, Double) 

    Anyone knows what is the problem? :) THANK u!! 

  • Pirouz Nourian

    Hi Lea, Happy to hear you find them useful. Regarding the error, as I understand it is complaining that it cannot find the method Line.EpsilonEquals(). Based on what I've seen so far, this problem is usually solved by  updating Rhino. Could you please go to your Rhino options and check if it is up to date? 

  • Lea Dietiker

    Hey Pirouz!

    Thank u so much for your quick answer! Now it is working! Was not thinking about this solution.... Thanks  a LOT!

  • Pirouz Nourian

    Most welcome! Comments and complaints are also welcome :)!

  • Chandan Chaturvedi

    Great tool to analyze and take inferences. However, I have a lot of trouble getting it to create exportable results while using its generative design capabilities. To be very specific, I see no labels and colour when I use the dual graph command and further ahead from there. Any ideas if I am doing something wrong?
    Keep uo the work. Very inspiring.

    Regards
  • Pirouz Nourian

    Hi Chandan, Thanks for your compliments. Could you please describe what you want to get from what component exactly? I might be able to add a code snippet to help you achieve that for the time being. 

  • Francisco Diaz

    Great app Pirouz!, I seem to be having the same problem as a recent post from a couple days ago. Specifically, i dont have a clue on how to add links to the NEWS. 

    Do you reference them by adding additional points?

    Thanks.! 

  • Pirouz Nourian

    Hi Francisco, Thanks! It appears you are missing links towards the 4 sides. Once you provide the nodes and links to the NEWS (North, East, West, South) node-link graph, a sketch-pad with four nominal sides appears. You need to provide additional links from your spaces towards these sides in order to proceed with the rest of those methods. Please check the example file as well. 

  • Chandan Chaturvedi

    So, here's an example of what happens when I try to get it to work.

    Thats the definition...

    Now, the result..

    Now, Where is the label that says which box represents which room. I mostly figure that out myself but that is very counterproductive. I use an application that makes me pick up the pen and paper. Suggest something.

    Regards

  • Tim

    Hey Pirouz,

    How are you doing?

    I keep using your plugin, start to get used to it. My professor love it, it helped me a lot. During my work with it I sometimes find bloopers and would like to drop some wishes.

    For example it would be super useful to be able to bake Justified Graph to work with it later. Specifically, I think it would be useful for it to have geometry outputs. For example with other plugins I can convert colored circles (which I assume are surfaces) into hatches and safely export them into AI and work with nice fills from there (avoid filling it up myself this way).

    Or you could make them to be hatches when they are baked.

    Also, input for text color is essential. Since I can't bake it I have to take a screenshot but white text will just disappear on my (so happens) white presentation poster.

    It is a really beautiful graph, I can see the logic or a problem clearly from it, but it can be much better, text can be centered to its bubble and resized to fit in and so on.

  • Tim

    Hello again,

    Also I think it would be nice to add a piece of code that tries to avoid intersections in Justified Graph

  • Pirouz Nourian

     Chandan Chaturvedi 

    Please follow the way it is done in the example file. There you can see how to use the attributes to keep track of the spaces in your configuration. In principle, the order of the spaces does not get disrupted when they go through the process; that is if the graph is planar and sufficient links to the sides are provided. You can do the labeling and similar tasks with native components of GH. BTW, do not expect the rectangular drawing components to do the job properly, they are only place holders. Check the example file and read the "read me" notes please. 

  • Pirouz Nourian

    Hi Tim, Thanks for your suggestions and compliments. I am fine and getting closer to my defense ceremony I presume :). I have posted a C# snippet previously here for baking the balls of a bubble diagram as colored meshes. Have you tried that? I will try to find it from here and re-post it. It does not do all you have asked for, but it is something to start with. You can then perhaps adjust the texts separately using GH native components.  

  • Tim

    Hey Pirouz,

    Great to hear, please don't worry about the snippet, I'll find it myself.

  • Tim

    What you say is that it is possible to assign names through tags to corresponding bubble and from there just tweak and bake the tag.

    I found it extremely useful to work with pipeline component with your plugin. I guess you know why (although not without some trickery))). Also, it seems more efficient to name the geometry and with Human plugin retrieve these names to each bubble accordingly.

  • Tim

    Just to be on the same page, are you talking about C_Disk_PZN_Corrected.gh?

  • Tim

    If yes, I just checked it, maybe I haven't gotten it yet, but how does it bake justified graph (it doesn't even have any outputs, which is the problem)

  • Pirouz Nourian

    Yes Tim, that is the component I meant. Indeed it cannot do the job as is because the Justified Graph Component doesn't have an output. That component has one of the biggest chunks of code... Let me see if I can rewrite it to get an output from it. 

  • Tim

    Please do if you have time, if not with code, I could rearrange intersecting bubbles in AI if have baked geometry. Meshes are ok too, I can convert them to hatches with Human or FabTools plugins.

  • Tim

    Also text is very important, if possible to output it as a text that would be most useful.

  • Arindra Januari

    Hey Pirouz,

    I would like to ask about the entrophy parameter that is connected with the integration. In the paper 'designing with space syntax' there's explanation about the formula that you used to get the measurement for each parameter but how about the entrophy? I'd really love to know where do the numbers come from. Thanks in advance! 

  • Pirouz Nourian

    Hi Arindra, 

    The measure Entropy is newer than the rest in our implementation. I hereby explain it (from my PhD dissertation):

    Entropy values, as described in (Hillier & Hanson, The Social Logic of Space, 1984) and specified in (Turner A. , “Depthmap: A Program to Perform Visibility Graph Analysis, 2007), intuitively describe the difficulty of getting to other spaces from a certain space. In other words, the higher the entropy value, the more difficult it is to reach other spaces from that space and vice-versa. We compute the spatial entropy of the   node as  using the  point depth set:

    (11)

     “The term  is the maximum depth from vertex  and  is the frequency of point depth *d* from the vertex” (ibid). Technically, we compute it using the function below, which itself uses some outputs and by-products from previous calculations:

    Algorithm 4: Entropy Computation

    Given the graph  (adjacency lists), Depths  as List of List of integer, DepthMap as Dictionary of integer

     

    Initialize Entropies as List(double)

    For node as integer in range [0, |V|)

    • integer How_Many_of_D=0
    • double S_node=0
    • For depth as integer in range [1, Depths[node].Max()]
      • How_Many_of_D=DepthMap.Branch[(node,depth)].Count
      • double frequencyHow_Many_of_D/|V|
      • S_node = S_node - frequency * Math.Log(frequency, 2)
    • Next
    • Entropies [node] = S_node

    Next

  • Arindra Januari

    Hi Pirouz,

    thank you so much for your quick answer! I really appreciate it. :)

  • mehrnoosh_arc

    hello;
    firstly , thanks alot for this helpful plugin.
    i'm having a problem with Triangulate component that show Error:1.Solution exception:value cannot be null. but i can't solve it.
    please helpe me.

    SYNTAZTIC_NewVersion_PublicRelease_0.2.7.gh

    SYNTACTIC_NewVersion_sample_2.7.3dm

  • Pirouz Nourian

    Hello Mehrnoosh, 

    The problem with your file is that the configuration you are trying to realize as a plan layout is not planar. That means there can be no drawing of your configuration graph on a piece of paper without its edges (links) crossing each other. That is not a software issue, but a theoretical limitation. If you want to get a result from the methods, you need to remove a few links so that the graph becomes a planar graph. 

  • Federico Secci

    I apologise in advance for my poor English. Is it possible with space syntax to make 2D/3D visibility analysis? (I rode about the isovist bubble)

  • Shayan Kavakeb

    Dear Pirouz,

    First, I would like to thank you for developing this tool, I find it very useful and well developed. I am currently working at UK AECOM and involved in various projects related to urban space. I believe this tool is under the following licence: Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported Li.... Thus, we cannot use it for commercial purposes. 

    I wonder can we discuss on how we can use this tool for commercial purposes at AECOM?

    Best regards,

    Shayan 

     

  • Pirouz Nourian

    Dear Shayan, 

     Thanks for your kind words; and apologies for responding late. Happy to hear that you find the tools useful in practice. Regrading the licensing, we have been thinking of changing the license towards a more-open one. For the time being, I can write to your email and grant permission free of charge to use the tools, on the condition that 'some' results are shown to public with attribution to the toolkit, including on this platform. You can send me an email on p.nourian@tudelft.nl

  • Larouci Brahim

    Thank you a lot, I'm waiting the 3d plug-in

  • Pranav

    can anyone please upload a working gh script with NEWS vertices and dual graph??? i couldnt link them properly..it states error evrytym

  • Pirouz Nourian

    @Pranav: you can check the example files included in the installed file. Note that the NEWS graph can only work on a certain class of graphs that are called 3 connected. These graphs cannot be torn apart unless at least three links of them are cut. 

  • salma samir elesawy

    Hello, dear Pirouz
    I have used SYNTATIC in an analysis of an urban area and I have  common miss measurements that the relationship between local and global integration is negative correlation and logically, it must be positive. I have attached the. GH and. 3dm files. I hope you help me to fix this error. thank you in advance

    locaandglobalintegration.gh

    Sample.rar

     

  • Pirouz Nourian

    Hi Salma, I'm currently busy with my defense planned for next Friday and cannot work on the files; however, I do not see why you should expect a positive correlation between local and global integration in every situation? Where does this rule come from? In Space Syntax literature, if there is such a positive correlation people consider the configuration to be illegible. That is all I can recall about this. Could you please elaborate?

  • Pirouz Nourian

    working on a new set of tools for adjacency tables. will release them one by one:

  • Tim

    Great news, glad to hear that.

  • Pirouz Nourian

    and here are two more features from the same tool:

  • Tim

    I don't understand what I see (yet), but I like it. 

  • Pirouz Nourian

    Hi, we are going to release the latest version of CONFIGURBANIST as a dll library (API) that can be accessed through C# and VB.NET components. In the meantime, I thought you could try and test the modules and provide suggestions. It comes with some goodies useful along with SYNTACTIC tools, such as Spectral Graph Drawing and Matrix Plots. Simple connectors are also provided for SYNTACTIC and SpiderWeb. This new toolkit is in some ways fundamentally different from the version you have been using so far. For more info please check my dissertation: 

    http://abe.tudelft.nl/index.php/faculty-architecture/issue/archive

    if you don't have the time to read this, check this one out:

    https://www.researchgate.net/publication/303944600_Spectral_Modelli...

    If you want to try this version you need to install two libraries in your Grasshopper/Special Folders/Components Folder

    * Math.NET (MathNet.Numerics.dll): http://www.mathdotnet.com/

    * Configraphics_CS.dll (the library to be completed by me)

    Please note that because this package uses Math.NET their licencing terms apply as well as those of mine. Please read the Read-Me panel in the file.

    If you want to write a C#/VB snippet to do something in connection to this package we'd be happy to help you with that (as much as the schedules and other things allow us) and eventually involve you as a developer in the next versions. 

    Our vision for the next versions is to connect/integrate this package with SYNTACTIC and SpiderWeb. 

    I will replace some of the groups with better/newer modules in the coming days. Stay tuned. 

    CONFIGURBANIST_Nov2016_TestVersion.gh

    Configraphix_CS.dll

    NOTE: This file is a Work-in-Progress and likely to contain bugs and errors. Use at your own risk. In no circumstances the authors (mentioned in the CC licence above) can be held responsible for any kind of damage (hardware, software or other kinds of property) caused by using these packages. The package does not come with any sort of guarantee. 

  • maryam

    Hello

    How was demonstrated three-dimensional “isovist” by using GrassHopper

    Do the same plug-SYNTACTIC done?

  • Pirouz Nourian

    Hi, yes this is a C# component which will be included in the 'next' version of SYNTACTIC.  

  • Pirouz Nourian

  • maryam

    Hi

    Do SYNTACTIC plug is able to do separately calculate the mean depth "MD" or "TD" (in space syntax theory) such as Different factors, Selection and Integration?

  • Pirouz Nourian

    Hi, Yes, you can easily make TD and MD values by using the Depth Tree output of the integration component and using a Mass Addition component. Difference Factor is separately provided as a component. 

  • maryam

    Hi

    Do you mean using “Mass addition” to achieve MD is this picture?

    as far as I know According to the functionality of this component does not seem to be able to provide the mean depth.

    If possible further advice Thank you.

  • Pirouz Nourian

    hi, this is a way to do this:

  • Yalda Sharifi

    Hi, May I ask you to explain how to create Weighted Voronoi Diagram? 

  • Pirouz Nourian

    Hi Yalda, you can use it like the grasshopper's Voronoi diagram component with a list of points and a boundary curve plus a list of areas to be used as the weights. You can check the demo file for an example. The demo file comes in the installed folder.