BiSarfraz
BiSarfraz

Reputation: 479

How to extract a highly linked node from a network

I want to extract a node with highest degree centrality from the network. I don't want to extract a node with max links only. I want to extract the node along with the nodes adjacent to it.

Below is the code. In this code, I have loaded a network using nw extensions.

    extensions [nw]

    turtles-own [ explored? ]

    to setup
      ca
      crt 25
      ask turtles [fd random 15]
      load-graph
      extract_deg
    end


    to load-graph
      let filename user-file
      if (filename != false) [
        nw:load-graphml filename [
          set shape "circle"
          set size 1
        ]
        nw:set-context turtles links
      ]
    end


    to extract_deg
      let n turtles with [my-links = max [count link-neighbors] of turtles]
      ask n [show other turtles network:in-link-radius 1 turtles]
    end

    to layout
      ask turtles [ set size sqrt count my-links ]
      layout-spring turtles links 0.5 2 1 
      ask turtles [
      facexy 0 0
      fd (distancexy 0 0) / 100 ]
    end

Upvotes: 2

Views: 149

Answers (1)

JenB
JenB

Reputation: 17678

The code below will choose one of the nodes with largest degree (just remove one-of if you want all of them), turn it red and make its network neighbours green.

You don't need the expression [my-links = max [count link-neighbors] of turtles], standard NetLogo includes the very useful with-max primitive. However, I think your construction would have worked if you had counted my-links (like let n turtles with [count my-links = max [count link-neighbors] of turtles]). Then you have some syntax errors in the next line (the extension is nw and you don't need the turtles.

to extract_deg
  let maxk-set one-of turtles with-max [count my-links]
  ask maxk-set
  [ set color red
    ask other nw:turtles-in-radius 1 [set color green]
  ]
end

Upvotes: 2

Related Questions