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"