====== JoC relational constraint ======
[[paper:central:private:ana|Centrality analysis]]
[[:notes:clu:counties|US counties - clustering]]
Remove multiple lines in **WA**. What is their source?
In **Ct** remove bidirectional arcs with sum.
===== Clustering with relational constraints =====
[read WA]
[read partition DC]
Partition/Create Constant Partition [37690 5]
[select constant partition as Second]
[select DC partition as First]
Partitions/Fuse Partitions
Operations/Network+Partition/Extract Subnetworks [1-*]
Network/Create New Network/Transform/Remove/Multiple Lines/Single Line
[run biblio macro normal]
Network/2-Mode Network/Transpose 2-Mode
[select normalized network as Second]
[select transposed network as First]
Networks/Multiply Networks [Yes]
Network/Create Partition/Degree/All
Operations/Network+Partition/Extract Subnetworks [1-*]
Network/Create New Network/Transform/Arcs->Edges/Bidirected Only/Min Value
Network/Create New Network/Transform/Remove/Loops
[save as Ct.net]
max ct = 2.28680
dist = 2.5 - ct
Network/Create New Network/Transform/Line Values/Add Constant [-2.5]
Network/Create New Network/Transform/Line Values/Multiply by [-1]
Network/Create Hierarchy/Clustering with Relational Constraints/Options [Max Tolerant]
Network/Create Hierarchy/Clustering with Relational Constraints/Run
[[:notes:clu:counties#clustering_with_relational_constraints]]
===== Read clustering in R =====
[[notes:clu:cluster|Clustering in R]]
> setwd("C:/Users/Batagelj/work/Python/WoS/joc")
> Pajek2R <- function(cling){
+ tree <- as.integer(read.csv(cling,header=FALSE,skip=1)$V1)
+ N <- length(tree); n <- (N+1) %/% 2
+ merge <- matrix(0,nrow=(n-1),ncol=2)
+ for(i in 1:n) if(tree[i]>0){
+ k <- tree[i]-n
+ if(merge[k,1]==0) merge[k,1] <- -i else merge[k,2] <- -i
+ }
+ for(i in (n+1):N) if(tree[i]>0){
+ k <- tree[i]-n; j <- i-n
+ if(merge[k,1]==0) merge[k,1] <- j else merge[k,2] <- j
+ }
+ return(list(merge=merge,n=n))
+ }
>
> orDendro <- function(m,i){if(i<0) return(-i)
+ return(c(orDendro(m,m[i,1]),orDendro(m,m[i,2])))}
>
> orSize <- function(m,i){if(i<0) return(1)
+ s[i] <<- orSize(m,m[i,1])+orSize(m,m[i,2])
+ return(s[i])}
> source("D:\\Data\\counties\\pajek\\varCutree.R")
> n <- 5354; nm <- n-1; np <- n+1
> RM <- Pajek2R("CtMax.clu")
> HM <- read.csv("CtMaxH.vec",header=FALSE,skip=np)[[1]]
> RM$height <- HM
> RM$method <- "Maximum/Tolerant"
> RM$dist.method <- "Euclidean"
> RM$labels <- read.csv("Ct.net",header=FALSE,skip=1,sep=" ",colClasses="character",nrows=n)$V2
> class(RM) <- "hclust"
> RM$call <- "Pajek.data"
> for(i in (nm-100):nm) cat(i,RM$merge[i,],"\n")