JiscMail Logo
Email discussion lists for the UK Education and Research communities

Help for SPM Archives


SPM Archives

SPM Archives


SPM@JISCMAIL.AC.UK


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

SPM Home

SPM Home

SPM  June 2009

SPM June 2009

Options

Subscribe or Unsubscribe

Subscribe or Unsubscribe

Log In

Log In

Get Password

Get Password

Subject:

Re: SPM8 EEG inverse: Matrix is singular, close to singular or badly

From:

Vladimir Litvak <[log in to unmask]>

Reply-To:

Vladimir Litvak <[log in to unmask]>

Date:

Fri, 19 Jun 2009 18:16:46 +0100

Content-Type:

multipart/mixed

Parts/Attachments:

Parts/Attachments

text/plain (421 lines) , spm_eeg_filter.m (1 lines)

Dear Diane,

I got the file and it's very helpful. There are several separate
problems that we should resolve carefully step by step.

1) Your channel labels seem like those of a Biosemi system but there
is no 64-channel Biosemi system we are familiar with. Do you have a
system with more channels of which you are only using half or is it a
really 64 channel system? In the latter case we'll need some
additional info to support it.
2) The other examples you showed me had 10-20 labels. How did you
assign them? Was it with montage?
3) The problem is that the set of labels in that file is not
recognized by SPM as EEG labels. As a result the channels are not
classified as EEG channels and they are not filtered. So if you want
to change the labels to 10-20 you should do it earlier in your
processing stream. At least you should set the EEG channel types
manually in 'Prepare' and save the file before filtering.
4) There was a problem that went unnoticed for quite a long time, that
the SPM filtering function also did baseline-correction for epoched
data and for that it looked for negative time points. Your time axis
starts at 0.5 sec so there was a problem. I removed that baseline
correction that didn't belong there anyway so you can use the attached
version. Then filtering works.
5) Even after all this if I average the file there doesn't seem to be
any ERP. So if there should be an ERP in this data perhaps you have
some problem with your triggers.
6) Your sampling rate of 2048Hz is too high for most purposes. This
really slows SPM down. Perhaps you should downsample your file to just
a few hundred Hz as one of the first steps.

I think it'd help if you could write in more details about your EEG
system, the experimental paradigm, how you define your trials , what
processing steps you have before merging and what is the purpose of
your analysis. Then we could come up with a sequence of steps that
would be suitable for your purposes.

Best,

Vladimir




>>
>> On Fri, Jun 19, 2009 at 11:01 AM, Diane Whitmer<[log in to unmask]>
>> wrote:
>> > Vladimir,
>> > The problem of losing my data is arising at the time of filtering.
>> > Are the filter functions supposed to work on epoched data? If so, is
>> > there
>> > anything special I should do to get the filtering to work? e.g. I am
>> > trying
>> > to high pass above 2 Hz using the gui. My sampling rate is 2048 Hz and
>> > my
>> > epochs are 3.5 seconds in length.
>> > Thank you,
>> > Diane
>> >
>> >
>> > On Thu, Jun 18, 2009 at 1:47 PM, Vladimir Litvak
>> > <[log in to unmask]>
>> > wrote:
>> >>
>> >> Display->M/EEG
>> >>
>> >> On Thu, Jun 18, 2009 at 12:37 PM, Diane
>> >> Whitmer<[log in to unmask]>
>> >> wrote:
>> >> > Hi Vladimir,
>> >> > How do I access the Reviewing tool?
>> >> > When I look under Prepare > Review, I cannot find the EEG traces.
>> >> > Thanks,
>> >> > Diane
>> >> >
>> >> >
>> >> >
>> >> > On Thu, Jun 18, 2009 at 12:57 PM, Vladimir Litvak
>> >> > <[log in to unmask]> wrote:
>> >> >>
>> >> >> Dear Diane,
>> >> >>
>> >> >> The file you sent me contains just zeros in the data so it's not
>> >> >> surprising that SPM can't do much with it. Also the montage you
>> >> >> applied is just an identity matrix so it doesn't do anything, but
>> >> >> that's not the reason why the data is invalid. You should use the
>> >> >> reviewing tool to see at which stage in the processing your data
>> >> >> disappears.
>> >> >>
>> >> >> Best,
>> >> >>
>> >> >> Vladimir
>> >> >>
>> >> >> On Thu, Jun 18, 2009 at 11:42 AM, Diane
>> >> >> Whitmer<[log in to unmask]>
>> >> >> wrote:
>> >> >> > Hi Vladimir,
>> >> >> > I changed the montage to average reference, and then averaged my
>> >> >> > trials.
>> >> >> > The same error message appears when I try to run the Inverse
>> >> >> > Solution.
>> >> >> > I just sent both the .dat and the .mat via yousendit.
>> >> >> > Please let me know if you are able to figure out the source of the
>> >> >> > errors. I
>> >> >> > *very much* appreciate your help.
>> >> >> > Sincerely,
>> >> >> > Diane
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > On Wed, Jun 17, 2009 at 12:29 PM, Vladimir Litvak
>> >> >> > <[log in to unmask]> wrote:
>> >> >> >>
>> >> >> >> Dear Diane,
>> >> >> >>
>> >> >> >> Your new montage is quite good, but you should decide what you
>> >> >> >> want
>> >> >> >> to
>> >> >> >> do about the 'EXG1' channel. Presently it appears in the montage,
>> >> >> >> but
>> >> >> >> is actually set to zero. I understand this is your reference. I
>> >> >> >> saw
>> >> >> >> in
>> >> >> >> the history that you are using SPM's default channel locations.
>> >> >> >> SPM
>> >> >> >> wouldn't have a location for EXG1 and wouldn't mark it as 'EEG'
>> >> >> >> by
>> >> >> >> default. So you have two options:
>> >> >> >>
>> >> >> >> 1) If you want to use it as an extra EEG channel you need to
>> >> >> >> either
>> >> >> >> change its name to some 10-20 name and assign default channel
>> >> >> >> types
>> >> >> >> and default locations again or at least change its type to 'EEG'
>> >> >> >> in
>> >> >> >> the 'prepare' interface and load a locations file where this
>> >> >> >> channel
>> >> >> >> appears. Then you should make a montage like what you did just
>> >> >> >> with
>> >> >> >> 65
>> >> >> >> channels including EXG1 so
>> >> >> >> tra = eye(65) - ones(65)/65;
>> >> >> >>
>> >> >> >> 2) If you can live without it, you can use the montage you sent
>> >> >> >> me,
>> >> >> >> or
>> >> >> >> even simpler just don't include EXG1 in the montage at all. You
>> >> >> >> can
>> >> >> >> either keep it in the file as a non-EEG channel or not keep it,
>> >> >> >> for
>> >> >> >> source reconstruction it doesn't matter.
>> >> >> >>
>> >> >> >> Once you convert the data to average reference, try the source
>> >> >> >> reconstruction again. If there is still a problem, average your
>> >> >> >> data
>> >> >> >> and see if for averaged data you get the same error message. If
>> >> >> >> so
>> >> >> >> send it to me, the file will be much smaller. If you only get the
>> >> >> >> error for epoched data, but not for averaged let me know and
>> >> >> >> we'll
>> >> >> >> think of a way for you to send me the epoched file.
>> >> >> >>
>> >> >> >> Best,
>> >> >> >>
>> >> >> >> Vladimir
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> On Wed, Jun 17, 2009 at 11:12 AM, Diane
>> >> >> >> Whitmer<[log in to unmask]>
>> >> >> >> wrote:
>> >> >> >> > Vladimir,
>> >> >> >> > I tried to send the .dat file, but it was over 100MB and
>> >> >> >> > therefore
>> >> >> >> > cannot be
>> >> >> >> > sent via yousendit without a subscription. Do you have another
>> >> >> >> > suggestion?
>> >> >> >> > Thanks,
>> >> >> >> > Diane
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > On Tue, Jun 16, 2009 at 9:38 PM, Vladimir Litvak
>> >> >> >> > <[log in to unmask]>
>> >> >> >> > wrote:
>> >> >> >> >>
>> >> >> >> >> Dear Diane,
>> >> >> >> >>
>> >> >> >> >> The error might have something to do with the fact that the
>> >> >> >> >> montage
>> >> >> >> >> matrix you used is wrong. To do what you intended you'd need
>> >> >> >> >> the
>> >> >> >> >> transpose of what you specified, but as I mentioned to be on
>> >> >> >> >> the
>> >> >> >> >> safe
>> >> >> >> >> side it'd be better to convert the data to average reference.
>> >> >> >> >> In
>> >> >> >> >> your
>> >> >> >> >> case of a 64 channel system you'd need something like:
>> >> >> >> >>
>> >> >> >> >> tra = eye(64) - ones(64)/64;
>> >> >> >> >>
>> >> >> >> >> for the EEG channels (or if you have 65, the same with 65).
>> >> >> >> >>
>> >> >> >> >> Best,
>> >> >> >> >>
>> >> >> >> >> Vladimir
>> >> >> >> >>
>> >> >> >> >> On Tue, Jun 16, 2009 at 12:37 PM, Diane
>> >> >> >> >> Whitmer<[log in to unmask]>
>> >> >> >> >> wrote:
>> >> >> >> >> > Dear SPMers,
>> >> >> >> >> >
>> >> >> >> >> > I am using SPM8 with EEG data. When I try to compute the
>> >> >> >> >> > Inverse
>> >> >> >> >> > solution, I
>> >> >> >> >> > get the following error message:
>> >> >> >> >> >
>> >> >> >> >> > Warning: Matrix is singular, close to singular or badly
>> >> >> >> >> > scaled.
>> >> >> >> >> > Results may be inaccurate. RCOND = NaN.
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> > Does anyone have suggestions for how to debug this?
>> >> >> >> >> >
>> >> >> >> >> > A subset of these data previously worked for computing an
>> >> >> >> >> > Inverse
>> >> >> >> >> > Solution.
>> >> >> >> >> > One difference with my current dataset is that I have
>> >> >> >> >> > re-referenced
>> >> >> >> >> > to
>> >> >> >> >> > one
>> >> >> >> >> > of the EEG channels (because it's not clear that SPM selects
>> >> >> >> >> > a
>> >> >> >> >> > reference
>> >> >> >> >> > channel when importing from Biosemi). This may or may not be
>> >> >> >> >> > related
>> >> >> >> >> > to
>> >> >> >> >> > the
>> >> >> >> >> > problem I'm having.
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> > Thank you,
>> >> >> >> >> > --
>> >> >> >> >> > Diane Whitmer, Ph.D.
>> >> >> >> >> > Researcher in Applied Neuroscience
>> >> >> >> >> >
>> >> >> >> >> > C. de l' Observatori Fabra s/n
>> >> >> >> >> > 08035 - Barcelona - Spain
>> >> >> >> >> > tel. +34 93 254 03 68
>> >> >> >> >> > fax. +34 93 212 64 45
>> >> >> >> >> > skype. dwhitmer
>> >> >> >> >> > email. [log in to unmask]
>> >> >> >> >> > ______________________________________
>> >> >> >> >> > STARLAB, Living Science http://www.starlab.es
>> >> >> >> >> >
>> >> >> >> >> > This e-mail and the attached files contain confidential
>> >> >> >> >> > information
>> >> >> >> >> > and
>> >> >> >> >> > are
>> >> >> >> >> > of exclusive use for the addressee. The disclosure, copy and
>> >> >> >> >> > distribution of
>> >> >> >> >> > the present message and its attachments are prohibited. If
>> >> >> >> >> > you
>> >> >> >> >> > are
>> >> >> >> >> > not
>> >> >> >> >> > the
>> >> >> >> >> > intended recipient and you receive this communication, we
>> >> >> >> >> > inform
>> >> >> >> >> > you
>> >> >> >> >> > that it
>> >> >> >> >> > is forbidden by law to read, copy or use it. Please notify
>> >> >> >> >> > us
>> >> >> >> >> > at
>> >> >> >> >> > [log in to unmask] and proceed immediately to delete it.
>> >> >> >> >> >
>> >> >> >> >
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > --
>> >> >> >> > Diane Whitmer, Ph.D.
>> >> >> >> > Researcher in Applied Neuroscience
>> >> >> >> >
>> >> >> >> > C. de l' Observatori Fabra s/n
>> >> >> >> > 08035 - Barcelona - Spain
>> >> >> >> > tel. +34 93 254 03 68
>> >> >> >> > fax. +34 93 212 64 45
>> >> >> >> > skype. dwhitmer
>> >> >> >> > email. [log in to unmask]
>> >> >> >> > ______________________________________
>> >> >> >> > STARLAB, Living Science http://www.starlab.es
>> >> >> >> >
>> >> >> >> > This e-mail and the attached files contain confidential
>> >> >> >> > information
>> >> >> >> > and
>> >> >> >> > are
>> >> >> >> > of exclusive use for the addressee. The disclosure, copy and
>> >> >> >> > distribution of
>> >> >> >> > the present message and its attachments are prohibited. If you
>> >> >> >> > are
>> >> >> >> > not
>> >> >> >> > the
>> >> >> >> > intended recipient and you receive this communication, we
>> >> >> >> > inform
>> >> >> >> > you
>> >> >> >> > that it
>> >> >> >> > is forbidden by law to read, copy or use it. Please notify us
>> >> >> >> > at
>> >> >> >> > [log in to unmask] and proceed immediately to delete it.
>> >> >> >> >
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > --
>> >> >> > Diane Whitmer, Ph.D.
>> >> >> > Researcher in Applied Neuroscience
>> >> >> >
>> >> >> > C. de l' Observatori Fabra s/n
>> >> >> > 08035 - Barcelona - Spain
>> >> >> > tel. +34 93 254 03 68
>> >> >> > fax. +34 93 212 64 45
>> >> >> > skype. dwhitmer
>> >> >> > email. [log in to unmask]
>> >> >> > ______________________________________
>> >> >> > STARLAB, Living Science http://www.starlab.es
>> >> >> >
>> >> >> > This e-mail and the attached files contain confidential
>> >> >> > information
>> >> >> > and
>> >> >> > are
>> >> >> > of exclusive use for the addressee. The disclosure, copy and
>> >> >> > distribution of
>> >> >> > the present message and its attachments are prohibited. If you are
>> >> >> > not
>> >> >> > the
>> >> >> > intended recipient and you receive this communication, we inform
>> >> >> > you
>> >> >> > that it
>> >> >> > is forbidden by law to read, copy or use it. Please notify us at
>> >> >> > [log in to unmask] and proceed immediately to delete it.
>> >> >> >
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > Diane Whitmer, Ph.D.
>> >> > Researcher in Applied Neuroscience
>> >> >
>> >> > C. de l' Observatori Fabra s/n
>> >> > 08035 - Barcelona - Spain
>> >> > tel. +34 93 254 03 68
>> >> > fax. +34 93 212 64 45
>> >> > skype. dwhitmer
>> >> > email. [log in to unmask]
>> >> > ______________________________________
>> >> > STARLAB, Living Science http://www.starlab.es
>> >> >
>> >> > This e-mail and the attached files contain confidential information
>> >> > and
>> >> > are
>> >> > of exclusive use for the addressee. The disclosure, copy and
>> >> > distribution of
>> >> > the present message and its attachments are prohibited. If you are
>> >> > not
>> >> > the
>> >> > intended recipient and you receive this communication, we inform you
>> >> > that it
>> >> > is forbidden by law to read, copy or use it. Please notify us at
>> >> > [log in to unmask] and proceed immediately to delete it.
>> >> >
>> >
>> >
>> >
>> > --
>> > Diane Whitmer, Ph.D.
>> > Researcher in Applied Neuroscience
>> >
>> > C. de l' Observatori Fabra s/n
>> > 08035 - Barcelona - Spain
>> > tel. +34 93 254 03 68
>> > fax. +34 93 212 64 45
>> > skype. dwhitmer
>> > email. [log in to unmask]
>> > ______________________________________
>> > STARLAB, Living Science http://www.starlab.es
>> >
>> > This e-mail and the attached files contain confidential information and
>> > are
>> > of exclusive use for the addressee. The disclosure, copy and
>> > distribution of
>> > the present message and its attachments are prohibited. If you are not
>> > the
>> > intended recipient and you receive this communication, we inform you
>> > that it
>> > is forbidden by law to read, copy or use it. Please notify us at
>> > [log in to unmask] and proceed immediately to delete it.
>> >
>
>
>
> --
> Diane Whitmer, Ph.D.
> Researcher in Applied Neuroscience
>
> C. de l' Observatori Fabra s/n
> 08035 - Barcelona - Spain
> tel. +34 93 254 03 68
> fax. +34 93 212 64 45
> skype. dwhitmer
> email. [log in to unmask]
> ______________________________________
> STARLAB, Living Science http://www.starlab.es
>
> This e-mail and the attached files contain confidential information and are
> of exclusive use for the addressee. The disclosure, copy and distribution of
> the present message and its attachments are prohibited. If you are not the
> intended recipient and you receive this communication, we inform you that it
> is forbidden by law to read, copy or use it. Please notify us at
> [log in to unmask] and proceed immediately to delete it.
>



function D = spm_eeg_filter(S) % Filter M/EEG data % FORMAT D = spm_eeg_filter(S) % % S - input structure (optional) % (optional) fields of S: % S.D - MEEG object or filename of M/EEG mat-file % S.filter - struct with the following fields: % type - type of filter, currently only 'butterworth' % band - filterband [low|high|bandpass|stop] % PHz - cutoff frequency [Hz] % parameter - filter coefficients % % D - MEEG object (also written to disk) %__________________________________________________________________________ % % This function filters M/EEG data and requires the signal processing % toolbox from The MathWorks: % http://www.mathworks.com/products/signal/ % (functions butter.m and filtfilt.m) %__________________________________________________________________________ % Copyright (C) 2008 Wellcome Trust Centre for Neuroimaging % Stefan Kiebel % $Id: spm_eeg_filter.m 3213 2009-06-19 16:49:42Z vladimir $ SVNrev = '$Rev: 3213 $'; %-Startup %-------------------------------------------------------------------------- spm('FnBanner', mfilename, SVNrev); spm('FigName','M/EEG filter'); spm('Pointer', 'Watch'); %-Test for the presence of required Matlab toolbox %-------------------------------------------------------------------------- if ~license('test','signal_toolbox') error('M/EEG filtering requires the Signal Processing Toolbox.'); end %-Get MEEG object %-------------------------------------------------------------------------- try D = S.D; catch [D, sts] = spm_select(1, 'mat', 'Select M/EEG mat file'); if ~sts, D = []; return; end S.D = D; end D = spm_eeg_load(D); %-Get parameters %-------------------------------------------------------------------------- try filter.type = S.filter.type; catch filter.type = spm_input('filter type', '+1', 'b', 'butterworth'); S.filter.type = filter.type; end switch filter.type case 'butterworth' try filter.order = S.filter.order; catch filter.order = 5; S.filter.order = filter.order; end try filter.para = S.filter.para; catch filter.para = []; S.filter.para = filter.para; end otherwise error('Unknown filter type.'); end try filter.band = S.filter.band; catch filter.band = cell2mat(... spm_input('filterband', '+1', 'm',... 'lowpass|highpass|bandpass|stopband',... {'low','high','bandpass','stop'})); S.filter.band = filter.band; end try filter.PHz = S.filter.PHz; catch switch lower(filter.band) case {'low','high'} str = 'Cutoff [Hz]'; YPos = -1; while 1 if YPos == -1 YPos = '+1'; end [PHz, YPos] = spm_input(str, YPos, 'r'); if PHz > 0 && PHz < D.fsample/2, break, end str = 'Cutoff must be > 0 & < half sample rate'; end case {'bandpass','stop'} str = 'band [Hz]'; YPos = -1; while 1 if YPos == -1 YPos = '+1'; end [PHz, YPos] = spm_input(str, YPos, 'r', [], 2); if PHz(1) > 0 && PHz(1) < D.fsample/2 && PHz(1) < PHz(2), break, end str = 'Cutoff 1 must be > 0 & < half sample rate and Cutoff 1 must be < Cutoff 2'; end otherwise error('unknown filter band.') end filter.PHz = PHz; S.filter.PHz = filter.PHz; end switch filter.type case 'butterworth' if isempty(filter.para) [B, A] = butter(filter.order, filter.PHz/(D.fsample/2), filter.band); filter.para{1} = B; filter.para{2} = A; end otherwise error('Unknown filter type.'); end %- %-------------------------------------------------------------------------- % generate new meeg object with new filenames Dnew = clone(D, ['f' fnamedat(D)], [D.nchannels D.nsamples D.ntrials]); % determine channels for filtering Fchannels = unique([D.meegchannels, D.eogchannels]); if strcmp(D.type, 'continuous') % continouous data spm_progress_bar('Init', nchannels(D), 'Channels filtered'); drawnow; if nchannels(D) > 100, Ibar = floor(linspace(1, nchannels(D),100)); else Ibar = [1:nchannels(D)]; end % work on blocks of channels % determine blocksize % determine block size, dependent on memory try % 2/3 of largest block of contiguous memory, for Windows platforms evalc('memsz=2/3*feature(''memstats'');'); catch memsz = 200*1024*1024; % 200 MB end datasz = nchannels(D)*nsamples(D)*8; % datapoints x 8 bytes per double value blknum = ceil(datasz/memsz); blksz = ceil(nchannels(D)/blknum); % now filter blocks of channels chncnt=1; for blk=1:blknum % load old meeg object blockwise into workspace blkchan=chncnt:(min(nchannels(D), chncnt+blksz-1)); if isempty(blkchan), break, end Dtemp=D(blkchan,:,1); chncnt=chncnt+blksz; %loop through channels for j = 1:numel(blkchan) if ismember(blkchan(j), Fchannels) Dtemp(j, :) = filtfilt(filter.para{1}, filter.para{2}, Dtemp(j,:)); end if ismember(j, Ibar), spm_progress_bar('Set', blkchan(j)); end end % write Dtemp to Dnew Dnew(blkchan,:,1)=Dtemp; clear Dtemp; end; else % single trial or epoched spm_progress_bar('Init', D.ntrials, 'Events filtered'); drawnow; if D.ntrials > 100, Ibar = floor(linspace(1, D.ntrials,100)); else Ibar = [1:D.ntrials]; end for i = 1:D.ntrials d = squeeze(D(:, :, i)); for j = 1:nchannels(D) if ismember(j, Fchannels) d(j,:) = filtfilt(filter.para{1}, filter.para{2}, double(d(j,:))); end end Dnew(:, 1:Dnew.nsamples, i) = d; if ismember(i, Ibar), spm_progress_bar('Set', i); end end end spm_progress_bar('Clear'); %-Save new evoked M/EEG dataset %-------------------------------------------------------------------------- D = Dnew; D = D.history(mfilename, S); save(D); %-Cleanup %-------------------------------------------------------------------------- spm('FigName','M/EEG filter: done'); spm('Pointer', 'Arrow');

Top of Message | Previous Page | Permalink

JiscMail Tools


RSS Feeds and Sharing


Advanced Options


Archives

April 2024
March 2024
February 2024
January 2024
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
2006
2005
2004
2003
2002
2001
2000
1999
1998


JiscMail is a Jisc service.

View our service policies at https://www.jiscmail.ac.uk/policyandsecurity/ and Jisc's privacy policy at https://www.jisc.ac.uk/website/privacy-notice

For help and support help@jisc.ac.uk

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager