Inner composition alignment (IOTA) is a permutation-based association
measure to detect regulatory links from very short time series.
One time series is reodered with regards to the rank order of a
second one and it monotonicity is evaluated.

Installation and Usage

To install, copy the zip-file into your path and extract all *.R and
*.c files.

IOTA.R can be used without any further compilation.
It allows to calculate pairwise IOTA with different weighting
functions, time reversal or as a signed version (cf. example below).

To have a significance test and the estimation of partial IOTA
being included, compile the *.c files calling R CMD SHLIB *.c
instead of the standard C compiler. The dynamic libraries called by
iota_subroutines.R will be generated in that way.

Note: (1) This has been tested only on a Linux machine.
(2) The program iota_subroutines.R is not running stable
for large input at the moment.

Example

# load or simulate time series as an array of size m*n, with m number of variables
# and n number of time points
TS0 <- matrix(runif(70,0,1),7,10)
# normalize time series
# to estimate the weighted IOTA the time series must have values between zero and one
# depending on the time series different normalization must be used
TimeSeries <- (TS0-apply(TS0,1,min,na.rm=TRUE))/apply((TS0-apply(TS0,1,min,na.rm=TRUE)),1,max,na.rm=TRUE)
###################################################################
###################################################################
# load subroutines
source('IOTA.R')
# calculates pairwise IOTA as described in Hempel et al., PRL (2011) [1]
# possible options for method (weighting functions)
# 'both' (default): uniform and squared sloped
# 'slope': slope
# 'sqrt': squared slope
# 'am': arithmetric mean
# 'gm': geometric mean
# 'hm': harmonic mean
I <- IOTA(TimeSeries,method='sqrt')
# calculates pairwise IOTA based on reversed ordering as described in
# Hempel et al., EPJB (2013) [2]
# options are the same as for IOTA
Ir <- IOTA_reverse(TimeSeries,method='sqrt')
# calculates signed version of pairwise IOTA to indicate up-/downregulation as described
# in Hempel et al., EPJB (2013) [2]
# option 'both' does not work in this case
Is <- IOTAsigned(TimeSeries,method='sqrt')
###################################################################
###################################################################
# to run C subroutines files must be compiled to get a dynamic library using "R CMD SHLIB *.c"
source('iota_subroutines.R')
# number of realizations for significance test
rmax <- 1000
# significance level
alpha <- 0.99
# weighting: uniform (1) or squared slope (2)
w <- 2
# calculated pairwise and partial IOTA and performs a simple permutation-based significance
# test, only most likely connections are selected while the remaining matix entries are set
# to zero
I <- IOTA(TimeSeries,rmax,alpha,w)

References

Hempel, S., Koseska, A., Kurths, J., Nikoloski, Z.:
Inner Composition Alignment for Inferring Directed Networks
from Short Time Series, Phys. Rev. Lett., 107(5), 054101, 2011,
doi:10.1103/PhysRevLett.107.054101

Hempel, S., Koseska, A., Nikoloski, Z.:
Data-driven reconstruction of directed networks,
Europ. Phys. J. B, 86, 250, 2013,
doi:10.1140/epjb/e2013-31111-8

Please respect the copyrights! The content is protected
by the Creative
Commons License. If you use the provided programmes, text or figures,
you have to refer to the given publications and this web site
(tocsy.pik-potsdam.de)
as well.