Time-series data analysis in NIPY - SciPy...

30
Time-series data analysis in NIPY Ariel Rokem Helen Wills Neuroscience Institute Henry H. Wheeler Jr. Brain Imaging Center University of California, Berkeley

Transcript of Time-series data analysis in NIPY - SciPy...

Page 1: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Time-series data analysis in NIPY

Ariel Rokem

Helen Wills Neuroscience Institute Henry H. Wheeler Jr. Brain Imaging Center

University of California, Berkeley

Page 2: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

NIPY: Neuroimaging in Python

• NIPY (http://neuroimaging.scipy.org)

• A set of Python libraries for  neuroimaging analysis and visualization

• Public source code development: open to any interested developer

Page 3: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit
Page 4: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

fMRI

• functional Magnetic Resonance Imaging

• Measures blood flow to different locations in the brain, as a measure of local tissue metabolic demand

• Neural activity is coupled to metabolic demand

Page 5: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit
Page 6: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Typical sampling rate of a brain volume = 0.3 - 1 Hz

Page 7: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Samples

Sign

al in

tens

ity (

a.u.

)

Samples

Sign

al in

tens

ity (

a.u.

)

Page 8: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Time-series analysis

HydroClimpy

Page 9: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

The TimeSeries Scikit

• Made for calendar-based time-series, not experimental time-series (absolute vs. relative time)

• Low frequencies

Page 10: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

HydroClimpy

Page 11: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

The TimeSeries Scikit• Made for calendar-based time-series, not

experimental time-series (absolute vs. relative time)

• Low frequencies

• Carries a lot of functionality we don’t need

• date/time dtype: R.Kern and T.Oliphant

Page 12: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Design: nipy.timeseries

Algorithms: “The interesting part”

General-purposeInputs/outputs are numpy arrays

Testing

Time-series object

Analyzer Objects

Page 13: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Analyzer objects

• Each object implements a small set of related analysis routines

• Extraction of the relevant data

• Cacheing and book-keeping

• Consistent API

Page 14: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Design: nipy.timeseries

Algorithms: “The interesting part”

General-purposeInputs/outputs are numpy arrays

Testing

Time-series object

Analyzer Objects

Page 15: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Time

Am

plitu

de

Page 16: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Corr

elat

ion

Relative time

Page 17: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

In [101]: corrcoef = np.corrcoef(x,y)[0,1]

In [102]: corrcoef

Out[102]: 0.27115565081404325

In [103]: data = np.vstack([x,y])

In [104]: series = ts.UniformTimeSeries(data,sampling_rate=Fs)In [105]: series.series.data series.sampling_rate series.metadata series.time_unit series.sampling_interval series.t0 series.time

In [105]: series.data.shapeOut[105]: (2, 1024)

Page 18: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Coherency:

• Coherency(Sun et al. 2005) can be used as a measure of functional connectivity between two brain regions.

• In fMRI, different voxels have differences in the blood-signal impulse-response.

• Coherency looks at the correspondence in the frequency domain.

Page 19: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Coherencyxy(!) =fxy(!)!

fx(!) · fy(!)

Page 20: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Pow

er

Frequency

Page 21: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

In [106]: Ch = ts.CoherenceAnalyzer(series)

In [107]: Ch.Ch.coherence Ch.delay Ch.coherence_partial Ch.frequencies Ch.coherency Ch.method Ch.coherency_seed Ch.phase Ch.data Ch.reset Ch.sampling_rate Ch.spectrum Ch.time

Page 22: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Coherencexy(!) =|fxy(!)|2

fx(!) · fy(!)

Page 23: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Frequency

Cohe

renc

e

Page 24: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

In [106]: tsa = ts.algorithms

In [107]: tsa.coherence(data)

Page 25: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Phasexy = angle[fxy(!)] = tan!1![fxy(!)]"[fxy(!)]

Page 26: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Rela

tive

Phas

e

Frequency

Page 27: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Attentional control

Visual processing

Page 28: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

brainx = Fernando Perez + MPL + networkx

Page 29: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Future developments:• More algorithms:

• Granger causality

• Mutual information

• Visualization

• Non-uniform time-series

• Open source code development

• generic design

Page 30: Time-series data analysis in NIPY - SciPy Conferencesconference.scipy.org/static/wiki/rokem_timeseries.pdf · Time-series data analysis in NIPY ... series.metadata series.time_unit

Acknowledgements:NIPY developer teamFernando PerezMike Trumpis

Matlab Code:Felice SunEmi Nomura Thomas LauritzenAyelet LandauLavi SecundoAndy Kayser

Data:David BresslerMichael Silver

More information:Website: neuroimaging.scipy.orgCode: launchpad.net/nipyemail:[email protected]