This is an old revision of the document!


Macros

29-09-2012 15:44

Andrej,

rad bi napisal makro za izračun uteži RCA (vrsta normalizacije):

RCA[c,p] = (a[c,p]/sum{v:a[c,v]})/(sum{u:a[c,p]}/sum{u,v:a[u,v]})

ki sem jih našel na strani 317 v http://www.chidalgo.com/Papers/HausmannHidalgoJOEG_2011.pdf

Problem je v sum{u,v:a[u,v]}, ki je eno samo izračunano število. V bistvu sta dva problema:

  • izračun vrednosti tega izraza - v Pajku v Vectors manjka skalarni produkt a*b = sum{v:a[v]*b[v]} ali pa v Vector

vsota členov danega vektorja; prav bi prišla oba.

  • Pajek nima podatkovne strukture Number .

Na podoben problem sem naletel še v več drugih primerih, kjer je v makroju potrebno navesti npr. število točk ali število povezav. Vidim dve rešitvi:

  • dodati podatkovno strukturo Number
  • vpeljati sistemske spremenljivke. Npr.
     $edges       - število neusmerjenih povezav
     $vertices    - število točk
     $arcs        - število usmerjenih povezav
     $loops
     $multiple
     $core        - sredičnost omrežja
     $criterion   - vrednost kriterijske funkcije
     ...

ki jih nastavlja ukaz Info ali drugi ukazi, ki vračajo številske vrednosti

     $product     - vrednost skalarnega produkta
     $max         - najveèja vrednost v vektorju
     $sum         - vsota vrednosti v vektorju

Potem bi v Pajkovih ukazih, ko moramo podati nek podatek, lahko navedli tudi ime sistemske spremenljivke. Spremenljivka $input (v makroju) bi lahko pomenila zahtevo, da podatek vnese uporabnik.

01-10-2012 01:21

Sem malo premislil in 'sproduciral' naslednjo resitev: uporabimo kar vektor - dolzine 1, skalar.

Tudi v redu - bolj R-ovska rešitev. Ni potrebna dodatna podatkovna struktura. Operacije pokrivajo kar v redu najnujnejše. Najbrž lahko razliko Max - Min določim z Vectors/Subtract in lahko tudi uporabim funkcije Vector/Transform/Abs,Log,Exp.

S tem se izognemo podvajanju, kar je pravzaprav kar elegantna rešitev. Moram še poskusiti.

Pri Vectors bi bilo dobro dodati še operacijo skalarni produkt.

Ostaja še vprašanje, kako podtakniti makrojem posamezna izračunana števila iz Info ali drugih operacij. Najbrž

    Vector / Create Scalar / Number

določi velikost vektorja, a do vseh zanimivih vrednosti tako ne pridemo.

To, da ni potrebno količin določati interaktivno, postane pomembno pri avtomatizaciji obdelav večjega števila datotek. Na primer, zadnjič me je Mimo spraševal, kako bi naredil štetje rodovniških vzorcev v nekaj sto rodovnikih. Stvar gre s kombinacijo Pajka in R-ja. Načelna rešitev je na http://zvonka.fmf.uni-lj.si/netbook/doku.php?id=notes:runr

Najlepša hvala za RCA in lp, Vlado

Vse obstojece operacije nad vektorjem lahko uporabljamo tudi za skalar.

Potrebno pa je bilo dodati tri operacije:

1. pretvorba poljubnega vektorja v skalar:

 Vector / Create Scalar / [Min,Max,Number,Sum,Arithmetic Mean,Median,Standard Deviation]

2. za operacije nad dobljenim skalarjem in vektorjem ('normalizacije' vektorja glede na skalar), se lahko uporabi kar obstojece operacije nad dvema vektorjema v menuju Vectors, s tem, da se operacije posplosi - obstojece operacije se lahko uporabijo tudi nad vektorjem in skalarjem (prej sta morala biti oba vektorja enake dimenzike):

 Vectors / [Add,Subtract,Multiply,Divide,Min,Max]

3. operacije nad skalarjem in omrezjem - 'normalizacija' vrednosti na povezavah glede na dani skalar

 Operations / Network+Scalar / Line Values / [Add,Subtract,Multiply,Divide,Min,Max]

Za rca.mcr (pripet) se rabi:

  • weighted degree (input in output)
  • inverzne vrednosti za oba zgornja vektorja
  • Vector # Network / Input - povezave normaliziramo z vhodnimi stopnjami
  • Vector # Network / Output - povezave normaliziramo se z izhodnimi stopnjami
  • vsota enega od vektorjev (vhodne ali izhodne utezene stopnje) nam da skupno vsoto vrednosti vseh povezav - Vector/Create Scalar/Sum dobljeni skalar uporabimo za normalizacijo omrezja: Operations / Network+Scalar / Line Values / Multiply by Scalar

Mislim, da bi se s temi dodatki moralo dati narediti tudi vecino drugih stvari.

Pajek z opisanimi dodatki je na voljo na: http://mrvar.fdv.uni-lj.si/aa/pajek32-4ga.exe ; rca.mcr je pripet.

01-10-2012 10:41

Pri Vectors bi bilo dobro dodati še operacijo skalarni produkt.

   Vectors/Multiply zmnozi po komponentah
   Vector/Create Scalar/Sum pa sesteje

Tako je. Sem bil preveč pod vtisom, da je skalarni produkt osnovna operacija. Glede na to, da ga ne potrebujemo prav pogosto, je to čisto v redu rešitev.

14-02-2018 21:54

Primer 1. makro biCon (bibliographic coupling z normalizacijo)
podatek: omrežje acyclic02.net
V bistvu naj ta makro ne bi ničesar spraševal - prva količina
je velikost omrežja (22), ostale so konstante (1 oziroma -1).
Kako bi se to dalo povedati?

Pripet je biCon1.log. Naredil sem zamenjavo: V 2 CONSTANTVEC 1.0000 (3994) → V 2 CONSTANTVEC 1.0000 N (za dimenzijo vzame velikost trenutnega omrezja). Ce se zelimo znebiti vseh vprasanj za konstante (-1 in 1), je treba bicon1.log Pognati kot “Macro / Repeat Session” in ne “Macro / Play”. Potem nic ne sprasuje.

Primer 2. makro mostCited (določi citiranost del iz del danega
podomrežja)
podatki: First net: acyclic02.net
          Second net: island.net
Tu ne vzame drugega omrežja in ga je potrebno izbirati med
izvajanjem makroja.

Pri uporabi macro-jev lahko trenutno za vhodni parameter vzamemo samo en objekt istega tipa (omrezje, razbitje, vektor…). Tako, da je v tem primeru resitev, da tudi obe vhodni omrezji preberemo na zacetku macroja. Pripet je mostCited1.mcr.

biCon1.log mostCited1.mcr

15-02-2018 21:32

   Mogoče bi bilo dobro problem spraševanja rešiti na nivoju
   sintakse parametrov v ukazu. Npr. če je vrednost v oklepajih,
   Pajek vpraša; če pa ni, vzame to vrednost. Ob priliki bi
   bilo dobro dodati tudi uporabo drugega ali tretjega registra.
   Ali so kje opisane možnosti, kot je N za število vozlišč, itd.
   Sem iskal po starih mailih, a ne najdem.

Pri ukazih, ki zgenerirajo omrezje, razbitje ali vektor na novo, se lahko uporabi N, C, ali V. To so npr. ukazi:

Slucajna omrezja
Create Complete Network
Create Empty Network
Create Constant Partition
Create Identity Partition
Create Constant Permutation
Create Random Permutation
Create Complete Cluster
Create Random Cluster
Create Constant Vector

Zadnja verzija navodil za uporabo macrojev je tule http://mrvar.fdv.uni-lj.si/pajek/macro.htm a ta teh podrobnosti se ne vsebuje. Si bo treba enkrat vzeti cas in dopolniti. Pravtako ze nekaj casa odlasam z moznostjo vkljucitve drugega (tretjega) registra.

[27-02-2018 09:22]

Pajek version 5.04 brings extension to run Pajek commands via command line:

Macro / Run Command (F12)

Explanation: By selecting this option the list of all Pajek commands executed so far is provided. We can select one command, edit its input parameters and finally run the command with updated input parameters.

Example: When searching for Louvain communities we get different number of communities depending on resolution parameter we use. If we search for communities with resolution parameter 1.0000, the following command is generated:

C 4 MODULARITYML 1 20 50 1 20 1.0000000000 0.500000

If the obtained number of communities is too high (or too low) we can run the same command again simply by setting the resolution parameter to some lower value, e.g 0.25. Therefore we modify the command like:

C 4 MODULARITYML 1 20 50 1 20 0.2500000000 0.500000

and run it.

Some other usages include:

  • Searching for islands with different limits for minimum and maximum islands size.
  • Generating different types of (large) random networks with different parameters
  • Searching for main paths with different values of tolerance
  • Exporting to EPS/SVG: Often we have to 'tune' the final picture by changing different options in Export / Options and exporting to EPS/SVG several times in a row. If Macro / Run Command window is open, we can overwrite the last EPS/SVG figure with a single mouse click.

Since some menu (sub)options are deeply nested, executing the same commands (with different input parameters) several times is much faster if we use the command line mode.

notes/net/mcr.1519767740.txt.gz · Last modified: 2018/02/27 22:42 by vlado
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki