Examples

Example 42.1. Network building example

In this example a small network, in which nodes represent vehicles and edges represent traffic accidents involvig the two connected vehicles.

# create table with network edges
table 'Network_data' :
    SOURCE TARGET WEIGHT
    4      3      1.000
    7      1      1.000
    7      5      1.000
    9      1      1.000
    9      3      1.000
    11     5      1.000
    11     6      1.000
    13     1      1.000
    13     4      1.000
    14     1      1.000
    14     3      1.000
    14     4      1.000
    22     1      1.000
    29     3      1.000
    31     9      1.000
    34     9      1.000
    34     15     1.000
    34     20     1.000
    34     21     1.000
    34     23     1.000
    34     30     1.000
    34     31     1.000

print('Table "Network_data" describing network structure created.')


# build te network
from biz.sc.gornik.reporeg import *
from biz.sc.mm.impl.dm.algorithm.socialnets import *

tabName = 'Network_data'
pd = PhysicalData(tabName)
save(tabName+'_pd', pd)
ld = LogicalData(pd)
save(tabName+'_ld', ld)

sna_fs = SnaBuildSettings()
sna_fs.setForceUndirected(1)
sna_fs.setLoadSorted(0)
sna_fs.setNormalizeWeights(0)
sna_fs.setLogicalData(ld)
sna_fs.setSource('SOURCE')
sna_fs.setTarget('TARGET')
sna_fs.setWeight('WEIGHT')
save(tabName+'_settings', sna_fs)

sna_task = SnaBuildTask()
sna_task.setPhysicalDataName(tabName+'_pd')
sna_task.setNetworkName(tabName+'_net')
sna_task.setSettingsName(tabName+'_settings')
save(tabName+'_task', sna_task)

execute(tabName+'_task')
print('Network object "Network_Data_net" created.')
	

Output:

Table "Network_data" describing network structure created.
Network object "Network_Data_net" created.	    
	

Example 42.2. Network analysis example

This example picks up where the preceeding one left off. A number of SNA algorithms is run on the network. Note that in order to run the algorithms an additional table with data about network node is firs loaded.

# create table with data descxribing network nodes
table 'Vehicle_data' :
    SOURCE      make        model_score     registration_number     VIN                     production_year     vehicle_description
    4           'Jaguar'    0.080           'TX2935'                'LEIXA60635T241613'     1998                'Jaguar (1998)'
    3           'Mercedes'  0.043           'IU0424'                'KTSAQ21205Y576662'     2011                'Mercedes (2011)'
    7           'Peugeot'   0.067           'XB8685'                'XADHY90200Y265000'     1997                'Peugeot (1997)'
    1           'Skoda'     0.406           'KW7448'                'MJDXY82945A280421'     1998                'Skoda (1998)'
    5           'Polonez'   0.003           'XK1556'                'INVQM31044M756528'     1995                'Polonez (1995)'
    9           'Honda'     0.076           'DI5060'                'KWORB06250C491435'     2004                'Honda (2004)'
    11          'Fiat'      0.048           'AI5474'                'OOIUZ71675E984401'     2008                'Fiat (2008)'
    6           'Citroen'   0.008           'NL0271'                'XEIYX77135B536382'     2011                'Citroen (2011)'
    13          'Chevrolet' 0.232           'ZM5943'                'ZXSOY46821M497759'     2006                'Chevrolet (2006)'
    14          'Rover'     0.042           'XN2077'                'WUXSY91269S692888'     2002                'Rover (2002)'
    22          'Lexus'     0.015           'OC7533'                'QBILN07133P029068'     1997                'Lexus (1997)'
    29          'Dacia'     0.018           'KD6622'                'VEFQN79717S001670'     1997                'Dacia (1997)'
    31          'Subaru'    0.066           'YJ3555'                'AFTOE16501A182650'     1998                'Subaru (1998)'
    34          'Dodge'     0.008           'NQ2063'                'PLSUW57257G925589'     1999                'Dodge (1999)'
    15          'Kia'       0.006           'JU7967'                'EEGUU04223T662015'     2007                'Kia (2007)'
    20          'Infinity'  0.009           'FZ9039'                'CAKHM59511L307219'     2006                'Infinity (2006)'
    21          'Infinity'  0.191           'EO1352'                'JWLQF22859P759668'     1996                'Infinity (1996)'
    23          'Mercedes'  0.005           'HO7694'                'PJLEY77706T147769'     2011                'Mercedes (2011)'
    30          'Lexus'     0.103           'IJ1221'                'RWJET64224A256367'     1999                'Lexus (1999)'


print('Table "Vehicle_data" describing network nodes created.')

# set up and execute the algorithms
from biz.sc.gornik.socialnets.algorithm import *

tabName = 'Network_data'

sna_fs = SnaSettings()
ld = load(tabName+'_ld')
sna_fs.setLogicalData(ld)
sna_fs.setVertexId('SOURCE')

lcf = LouvainCommunityFinderSettings()
sna_fs.algorithms.add(lcf)

cs = CommunityStatisticsSettings()
cs.communityColumn="LOUVAIN_COMMUNITY"
sna_fs.algorithms.add(cs)

rf = RoleFinderSettings()
rf.communityColumn="LOUVAIN_COMMUNITY"
sna_fs.algorithms.add(rf)

tr = TriadsSettings()
sna_fs.algorithms.add(tr)

leq = LocalEquivalenceSettings()
sna_fs.algorithms.add(leq)

pr = PagerankSettings()
sna_fs.algorithms.add(pr)

agg = AggregatorSettings()
sna_fs.algorithms.add(agg)

save('sna_fs', sna_fs)

pd_out = PhysicalData(tabName + '_SNA_RESULTS')
save(tabName+'_pd_out', pd_out)

sna_task = SnaTask()
sna_task.inputPhysicalDataName=tabName+'_pd'
sna_task.networkName=tabName+'_net'
sna_task.outputPhysicalDataName=tabName+'_pd_out'
sna_task.snaSettingsName = 'sna_fs'
save('sna_task', sna_task)

execute('sna_task')

print('Finished executing SNA algorithms')

# a new table with initial data and analysis results is created
sql :
    REPLACE TABLE Network_data_SNA_RESULTS_EXT AS
    SELECT
        *
    FROM
        Network_data_SNA_RESULTS
            LEFT JOIN
        Vehicle_data
            USING ( `SOURCE` )

print('Analysis results saved in table"Network_data_SNA_RESULTS_EXT"')	    
	

Output:

Table "Vehicle_data" describing network nodes created.
Finished executing SNA algorithms
Analysis results saved in table"Network_data_SNA_RESULTS_EXT"