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

    I hereby happily announce that the first version is released here: 

    https://sites.google.com/site/pirouznourian/syntactic-design

  • Pirouz Nourian

    Hi Daniel Hambleton, Sorry for my late reaction! I have been extremely busy with education in the past weeks. Thank you for sharing your interesting work! I will be happy to discuss future joint projects.  

  • ardi bidi

    Nice project!

    I did similar project, in 2012, as my M.A. thesis at University of Tehran, using similar approach in combination with Galapagos as optimizing system. You can find a short demo here:

    http://www.youtube.com/watch?v=0KGx3vos5lU

  • bea franko

    hello great tool!

    but i cant find or i dont knoe how to control the attraction and repulsion. is the orientation to fixpoints (nord, west, east and south) included in this version?

    looking forward!!!

  • Pirouz Nourian

    Hi, Those are just advanced settings. Have a look at the help of the component. It is very unlikely that you need to change those settings. They are not meant to be design parameters. They are just for calibration of the component itself. However, if you are not getting a neat bubble diagram with the default settings, please post your model here. 

  • Mahdi Soheyli Fard

    Hi Pirouz,

    that is really awesome when you are looking for sth about space syntax for experiencing some design method, and just heading to one who did it as well. it became my luck man. congrat!

  • bea franko

    ok but how to difference between attraction and repulsion, do i need a number for each connection (-x=attraction, x=repulsion?)

    You dont plan to set up fixpoints? could be a great extension for your tool and very helpful for use.

    i saw this in the manual:

    how can i do this?

  • Samane

    Dear Bea,

    The algorithm embedded in the "force directed drawing" component finds a set of relax locations for the vertices by considering graph links as springs, applying attractive forces and repulsion between disks when they get closer than their boundaries. You can try with the advanced setting.( if you hover on them you can see the default value)

    The sketch box which you see in the photo and the generative process will be included in the next version.

    Samane   

  • Petar Pejic

    Excellent tool guys, it looks really promising. Do you maybe know how it would be possible to apply same logic to a 3D program diagram. Or you know some theories that deal with that issue? I suppose a set of new parameters would be needed to introduce it.

  • Pirouz Nourian

    Hi Petar, Thanks for your compliments. We are also interested of course in receiving critical feedback. Regarding the 3D program diagram, I should mention that a graph doesn't necessarily have a geometric form. This means however, that there could be infinite number of ways you could draw a graph, so to say. This means that, given a set of vertices, as 3D points you could actually visualize graph links as geometric edges (lines for instance) between them. In other words, you can just provide the DiscoGraph component with a set of vertices (of course the same number of vertices as you have when you build a graph) and get a drawing however you like, and of course these points can be on different height levels. Anyhow, if you specify a bit more what you are looking for, I might consider adding a new component and make an update.

      

  • Petar Pejic

    Hi, well I am not sure realy how it should work. I was thinking maybe to introduce a value for height or volume of each space. Next, maybe the situation is that one space is behind the other, and they both have the same view parameter, hence, one will be placed above the other. It would be interestin to have a slider between 0 and 1, where 0 would be 2d organnization and 1 would be a full 3d organization, so a user can change the 'amount of 3d representation'

    These are all just ideas, which i think it could be usefull to have included. However, i think more parameters should be included as well.
    I hope to hear your thoughts if it would be usefull, as well as if you would add something.
    Once again, thank you for sharing
  • Pirouz Nourian

    Hi Petar, Thanks for the ideas. For making a 3D configuration to be implemented in the tools, I need to work on a systematic way that I can implement as a "generic method"; something like a recipe, with a guaranteed result. For giving a space a height value, as I said before, you could put the corresponding vertices on different height levels and that doesn't confuse our graph drawing algorithm (DiscoGraph). You might also find SpiderWeb tools useful in your work. 

    Regarding new parameters, I should mention that we have been working on these tools for almost six months just to simplify them and reduce the number of required parameters to avoid unnecessary confusions. However, if you think in any of the components it would be better to have some control on an output with an input parameter or you need an output which is apparently available but not put out,let us know and we will consider it for the next versions.  

  • Petar Pejic

    Dear pirouz,
    I didn't even think to suggest extra work and effort from your side, you have already provided a great tool. My thoughts were directed in a sense if 3d organization would be possible, as well as if there some already known method (in your pdf i have found that you already knew some methods for 2d diagrams, and than you elaborated on those.)
    Further, I found your script applicable on my current design project, and my wuestions about potential 3d organization was aimed parallel with my conceptual idea of the design.
    If 3D organization of space would be possible, I wanted to hear from you if you have any ideas / experiance with it. As I already said, my idea was to introduce more parameters, which would affect just 3d diagram. However, more I dwell on that idea, I see it would be just simple elevating of 2D parts. Maybe approach where each space would have 'gravity' value, or 'spring magnitude' and they all start separated in 3d space, and than with each itteration they get closer to 'ideal' organization. That is just a thought.
    Thank you for your kind reply
    Regards,
    Petar
  • Frano Bazalo

    Fantastic set of components, great job. Would it be possible to include outputs on the some of the components such as 'discograph' so the circles and the node relationships are accessible? The circles are easy enough to recreate but would be nice if the component wasn't a dead end so this data can be used further. Cheers

  • Samane

    Dear Frano,

    Thanks for your comments and sharing your ideas. Good points, We will consider them for the next release.

    Cheers,

  • Pirouz Nourian

    Hi Petar, Thanks for you comments. In fact we also want to do certain things in 3D and we have some preliminary ideas, however, they are not yet generic enough. In any case, we are considering a 3D graph drawing algorithm for the next release (probably as an option in the disco-graph component). In the meantime, note that you can already make a graph representation of a 3D configuration using the node-link graph component. For this component, it doesn't matter if the nodes and links are all on the same plane or not. 

    Keep in touch.

  • jorge sainz de aja

    Hi:

    I installed the package, it creates a folder in C: called SpaceSyntax....., I copied the grasshopper components to the special folder program. but it dosen´t appear any tab or component

    also opened the gh example file and the grasshopper doesn´t recognise the sapce syntax components

    I reviewed the components for if those are blocked or whatever. I use Rhino 5 (X64) and the last grasshopper 0.90064

    Any solution?

  • yonghwan seo

    Hi

    I was trying to bake the justified graph.but, it can not do that.

    How can i bake the graph or legend Component?

    Do you have any solution?

    Cheers..

  • Pirouz Nourian

    Hi Yonghwan, we can introduce a colored mesh output for the next release. The current component just previews the graphs, and you cannot bake it. But, it is not difficult for us to add this feature. So, you can wait for the next release. In the meantime, I might post a temporary solution here if my schedule allows. Thanks for suggesting this feature!

  • Pirouz Nourian

  • JuanCarlos Venegas Del Valle

    Hi, great job and great idea¡ I only had a probem i can´t organize rectangles and i would really like to get results as pdf. Thanks.

  • Pirouz Nourian

    Hi Juan Carlos, Thanks for your compliments. If you mean the rectangles we show in a video about Plan Layout process, those methods are not yet included in this version of the plugin; as one of the algorithms is not finalized. For printing the results, we will probably add some functions to the  next release. For the time being, you may use the option to capture view-ports of Rhino itself. I hope this helps. 

  • yonghwan seo

    Hi

    I was using your Space Syntax plug-in very well.

    But, I had a problem i perfectly can't understand the four elements, integration value, control value, Entrophy value, Choice value in your Plug in.  

    Can I ask for a more detailed description of The four elements on syntax theory?

    Regards

  • Pirouz Nourian

    Hi Yonghwan, Help descriptions of the components contain some information. For further information on the intuitive meaning of the measures, you can have a look at our papers and the references cited in them:

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

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

    You can also google the names of the measure + Space Syntax and you will find papers on the subjects. 

    I hope these help.

  • Pirouz Nourian

  • Pirouz Nourian

  • Frano Bazalo

    Pirouz, the seminar video looks great. When will you be uploading the new release? Look forward to it.

  • Ángel Romo Sandoval

    Congratulations for the work, Pirouz and Samaneh! Your work has encouraged me to work hard. Since I discovered Grasshopper a few months ago I have been learning at a time I have created a generative algorithm to create program diagrams like your plug-in but simpler (I have just started learning Vb.net so I have used components of grasshopper, kangaroo and spiderweb). I finished today and I can´t wait to start with the floor plan generator. (I am discovering computer engineering and I am delighted).

    I would like to know your opinion about the best way to create the floor plan generator, I am a little lost, I don´t know if to use voronoi, rectangles o something like this (sure you know it):http://graphics.tudelft.nl/~rval/papers/lopes.GAMEON10.pdf

    If I find an interest algorithm do not hesitate that I will share it here. Obviously I am not the badass but I would like to help in this exciting issue.

    Here is the video of program diagram generator

  • Ewa Jakub

    Hi,

    I've been trying to use Space Syntax and I keep getting the following error in the GraphFromNodes&Links component: Solution exception:Method not found: 'Boolean Rhino.Geometry.Line.EpsilonEquals(Rhino.Geometry.Line, Double).

    Any idea what the issue is?

    Regards,

    Ewa

  • Pirouz Nourian

    Hi all, my apologies for losing track of the posts here. Re Frano's post; we are hoping to release the new version in May. We will do our best to add the option for Space Syntax calculations with various radii (R3, Rn). Sorry I just deleted a post by mistake...

  • Pirouz Nourian

    Hi Angel, Thanks for your compliments on our work. Glad to see you find this work inspiring. Very interesting paper, I need to check their algorithm. The problem of plan layout can be formulated in many ways. In any case, the geometric possibilities for a plan corresponding to a graph are endless, unless you target a specif class of plans, e.g. a plan composed of rectangular cells. In that case, it is possible to enumerate possibilities. The force-directed graph drawing algorithms, like the one we have implemented and the one you have made are not guaranteed to converge and their results are not unique in the sense that there might be many local optima/states of equilibrium that they can reach to. However, they are quite useful in many practical applications. Voronoi diagrams can also be a class of geometric "dual" cell configurations that can satisfy the connectivity graphs. I will post a small definition for using them shortly.    

  • Ángel Romo Sandoval

    Hi Pirouz, hi Sam,

    I admit that when I uploaded the algorithm I though that it works correctly but later I discovered a problem with bigger diagrams. Since that day I tried to fix it but it is taking me too much time, so here is my file, if Sam o somebody wants to work over it and can improve it, welcome! I am learning python but it will probably take me a lot of time because I have no programming knowledge.

    2-It would be better that the stiffness (kangaroo component) of the lines that connect no-neigbourds nodes changed in function of the distance between this nodes. It could be solve with a loop. Until now, I fix this problem applying a very high stiffness in the repulsion kangaroo component during the simulation and after I reduce it slowly.

    In the file there is an explanation more detailed.

    floorplanator.3dm

    floorplanator.gh

  • Sam Florance

    Excellent, thanks a lot Angel.  I will be sure to share any results I have with you.  I am not very good with grasshopper yet, but I do have the advantage of having a some time to work on it.

  • Sam Florance

    Hi Pirouz,

    Excellent set of components.  I am wondering about the attraction strength and the repulsion strength for the Force Directed Drawing component.  What do the input values dictate?  I have been inputting 13 values with many connections and I notice that if I play with the repulsion strength the space organizes a little better.  Could you tell me what these to variables mean?

    Thank you for your time,

    Sam Florance

  • Pirouz Nourian

    Hi Sam, Thanks for your compliments. I am qouting from our paper in eCAADe 2013 on this component. 

    "This tool contains our force-directed graph-drawing algorithm and makes a “kissing disk” drawing of the bubble diagram. This algorithm works by a set of attractive and repulsive forces (as in Equation 9) acting recursively on graph vertices, seeks a ‘relax’ situation for a graph, and reaches to a graph drawing. This tool is quite intuitive and shows in real-time bubble diagrams neatly according to the specified areas and the connectivity graph.

    Equation 9

    Attraction: 〖AF〗_ij=ka ∆x_ij  for all linked (i,j) 

    Repulsion: 〖RF〗_ij=kr /x_ij   for all (i,j)

     

    The attraction/repulsion strength inputs are denoted as ka and k

    in the above equations. If some configuration is very messy, you need to have a high repulsion first to untangle it. I have not tried Angel's method but it is very similar to the method we have scripted for this component. 

    I hope this helps. 

    Best regards, 

    Pirouz

  • Pirouz Nourian

    Hi Angel, 

    Thanks for sharing your model; It's a good example that shows how the Force Directed graph drawing component of our toolbox works, especially for those interested to tweak. However I could not manage to open the file because of conflicts of missing Spider Web components (perhaps you are using a version other than the last one?). 

    Keep in touch!

  • Pirouz Nourian

    Hi Ewa, 

    Excuse my late response. I have seen the same problem before it has to do with an inundate Rhino. Could you please go to Rhino/Options/Check for Updates and make sure your Rhino is updated?  

    Best regards,

    Pirouz

  • Sam Florance

    Hi Angel and Pirouz,

    If you are interested then feel free to take a look at the script I have been working on, I would appreciate any comments.  I believe it could be a useful tool for studying what the Space Syntax Kissing Disk Diagram does automatically, or perhaps studying the many possible equilibrium's of more complex relationships.  Thanks for your help by sharing your script's and components, I referenced them quite a bit with making this one.

    Sam

    Program%20diagram%20script.gh

  • Ángel Romo Sandoval

    Sorry I haven´t seen the comments last days because I am travelling.

    I´ve download your file, Sam and, at first glance, congratulations!  

    In a few days , when I came back I´m going to share new files (to resolve the spyderweb problem) and additional interesting thoughts.

    Keep in touch!

  • Richard Schaffranek

    To add to the discussion:

    I changed a bit on the floorplanator file, its now based on the latest release of spiderWeb. Manly the part where to calculate the repulsion / attraction forces.

    The idea is that to store these values in the edge costs of the graph this makes the file cleaner and faster.

    Remark: if the starting attraction graph is not clean (no intersections of edges) this script will not solve the problem... I have to admit I don't know how to solve it with Kangaroo.

    Have fun...

    floorplanator.gh

  • Ángel Romo Sandoval

    Sam, I like your algorithm a lot!! My algorithm is worse so I think that it´s no sense to upload it again with new versions of spyderweb or whatever be. I am trying to solve a problem with the spyderweb in order to open the file of Richard (I don´t know why I can´t install one of the .dll of spyderweb files).


    I share here a prototype of Sam´s algorithm with the "hoopsnake" component. I am trying to create an algorithm for other shapes instead of circles. I know that is dirty and it has a lot of bugs but I think that it is very interesting.

    2014_04_23_FPGhoopsnake.gh

    2014_04_23_FPGhoopsnake.3dm

  • Richard Schaffranek

    Could you specify the problem? Maybe discuss that in the SpiderWeb group...

  • Ángel Romo Sandoval

    I solved it. Richard, thanks a lot for your improvement. Your idea of storing the values in the edge costs it´s very clear, I like it! Also I've learnt a lot more about spyderweb looking your algorithm.
    The problem of the starting attraction that only can be solve with a loop, as Pirouz said, "If some configuration is very messy, you need to have a high repulsion first to untangle it".

    Thanks, Richard, I'm having fun, hehe

  • Pirouz Nourian

    Richard, Angel and Sam, thank you  for the interesting discussions. Developments in the direction of rectangular drawing (replacing the circles with rectangles of certain areas and proportions) would be very interesting.

    BTW, we are working on some new stuffs... have a look at these: https://sites.google.com/site/pirouznourian/syntactic-design

    Wish us luck and fewer bugs... :)

  • Richard Schaffranek

    Hi Pirouz

    A student of mine is working on a KD-Tree subdivision ensuring square meters and connectivity (if possible ...) from a bubble diagram, will ask to share it when he is finished with it.

    Whats the idea behind the isovist bubble? Any comments on that?

    Richard 

  • Pirouz Nourian

    Hi Richard, sounds great! A Geomatics student of mine is also busy with kd-trees for another reason... heard about it just yesterday.

    About isovist bubbles: I'm working on a generic syntactic design method, without many geometric constraints. This lead to a question as this: What would be the shape of an imaginary bubble that wants to maintain its size (area) and visibility from a point, given some obstacles. 

    It needs a proper justification; we're busy writing on it for a paper. Would be good to hear your critique/idea about this.

     

  • Azad Hadji K

    Hi pirouz, I have difficulties to install this plug-in. it has an exe file and I try to install it but nothing happening after. any idea might help me please? thanks mate.

  • Pirouz Nourian

    Hi Azad, the exe file puts the GHA file and the examples where you specify or by default somewhere in your computer. You can repeat the installation and specify a location you will remember. Afterwards, you just need to drag and drop the GHA file into your GH canvas or put it in the components folder of your grasshopper. 

  • Azad Hadji K

    Hi and thanks Pirouz, that comment solved the issue. cheers mate.

  • Fateme Jafari

    Hi, I installed space-syntax and I tried to follow the video to learn it. but I had problem in the first step. when I connect the curve to the "graph from nodes and links" object it turns red and shows an error. could you please help me?