Index: /prdatasets/Contents.m
===================================================================
--- /prdatasets/Contents.m	(revision 141)
+++ /prdatasets/Contents.m	(revision 142)
@@ -1,40 +1,80 @@
 % PRDATASETS: Pattern Recognition Datasets in PRTools format
-% Version 3.0 22-Dec-2019
+% Version 3.0.1 6-Jan-2020
 %
 %Feature based labeled datasets
 %------------------------------
-%name      objects  feats  classes
-%x80          45      8       3    radial distances of characters
-%arrhythmia  420    278       2    presence or absence of cardia arrhythmia
-%auto_mpg 	 398      6       2    car/miles-per-gallon
-%biomed      194      5       2    various patient indicators
-%breast      683      9       2    Wisconsion breast cancer dataset
-%car        1728      6       4    Car evaluation database
-%cbands    12000     30      24    chromosome banding patterns
-%chromo     1143      8      24    chromosome blob features
-%diabetes    768      8       2    Pima Indians Diabetes Database
-%ecoli       272      7       3    protein localisation sites
-%glass       214      9       4    glass types from chemical components
-%heart       297     13       2    heart disease dataset
-%hepatitis   112     19       2    hepatitis database
-%imox        192      8       4    radial distances of characters
-%ionosphere  351     34       2    radar data
-%iris        150      4       3    Fisher's Iris dataset
-%liver       345      6       2    liver disorder
-%malaysia    291      8      20    segment features in utility symbols
-%satellite  6435     36       6    spectral data
-%sonar       208     60       2    rock / metal sonar features
-%soybean1    266     35      19    large Soybeans
-%soybean2    136     35       4    small Soybeans
-%twonorm    7400     20       2    Leo Breiman's two normal example.
-%ringnorm   7400     20       2    Leo Breiman's ringnorm example.
-%wine        178     13       3    wine recognition
-%mfeat_fac  2000    216      10    face features in digits dataset
-%mfeat_fou  2000     76      10    Fourier features in digits dataset
-%mfeat_kar  2000     64      10    Karhunen Loeve features in digits dataset
-%mfeat_pix  2000    240      10    pixel features in digits dataset
-%mfeat_zer  2000     53      10    Zernike moments in digits dataset
-%mfeat_mor  2000      6      10    morphological features in digits dataset
-%mfeat      2000    649      10    combined features of the mfeat datasets
+%name          objects  feats classes
+%abalone          4177      8   28  Abalone Age Estimation
+%adult           45222     14    2  Census Income Original
+%annealing         898      9    5  Steel Annealing Data
+%arcene            200  10000    2  Arcene Mass Spectra
+%arrhythmia        452    275   13  Arrhythmia normal
+%audiology         226     63   24  Standardized Audiology
+%australian_sl     690     14    2  Statlog Australian Credit
+%auto_mpg          398      6    2  Auto MPG
+%balance_scale     625      4    5  Balance Scale
+%balloons           76      4    2  Balloons
+%biomed            194      5    2  Biomedical Data
+%breast            683      9    2  Breast Wisconsin
+%car              1728      6    4  Car Evaluation
+%cbands          12000     30   24  Chromosome Bands
+%census         142521     41    2  Census Income KDD
+%chromo           1143      8   24  Chromosome Features
+%cmc              1473      9    3  Contraceptive Method Choice
+%connect4        67557     42    3  Connect-4 Dataset
+%credit            690     15    2  Credit Approval Dataset
+%cylinderbands     540     39    2  Cylinder Bands Dataset
+%diabetes          768      8    2  Diabetes Dataset
+%ecoli             336      7    8  Ecoli Dataset
+%flowcyto          612    254    3  Flow Cytometry 1
+%german_num_sl    1000     24    2  Statlog German Credit Num
+%german_sl        1000     20    2  Statlog German Credit
+%glass             214      9    4  Glass Identification Dataset
+%haberman          306      3    2  Haberman''s Survival
+%heart             297     13    2  Heart Cleveland
+%heart_sl          270     13    2  Statlog Heart
+%hepatitis         112     19    2  Hepatitis Data Set
+%imox              192      8    4  IMOX Characters
+%imsegment        2310     19    7  Image Segmentation
+%imsegment_sl     2310     19    7  Statlog Image Segmentation
+%ionosphere        351     34    2  Ionosphere Dataset
+%iris              150      4    3  Iris Dataset
+%isolet           7797    617   26  Isolet
+%letter          20000     16   16  Letter Recognition
+%liver             345      6    2  Liver disorder dataset
+%magic04         19020     10    2  Magic Gamma Telescope
+%malaysia          291      8   20  Malaysia Data
+%mammograph        961      5    2  Mammographic Mass
+%mfeat            2000    649   10  MFEAT Combined Features
+%mfeat_fac        2000    216   10  MFEAT Face Features
+%mfeat_fou        2000     76   10  MFEAT Fourier Features
+%mfeat_kar        2000     64   10  MFEAT KL Features
+%mfeat_mor        2000      6   10  MFEAT Morphological Features
+%mfeat_pix        2000    240   10  MFEAT Pixel Features
+%mfeat_zer        2000     47   10  MFEAT Zernike Moments
+%musk1             476    166    2  Musk version 1
+%musk2            6598    166    2  Musk version 2
+%optdigits        5620     64   10  Optical Digit Recognition
+%pageblocks       5473     10    5  Page Blocks
+%pendigits       10992     16   10  Pen Based Handwritten Digits
+%ringnorm         7400     20    2  Ringnorm Data
+%satellite        6435     36    6  Satellite dataset
+%satellite_sl     6435     36    6  Statlog Satellite
+%shuttle_sl      58000      9    7  Statlog Shuttle
+%sonar             208     60    2  Sonar dataset
+%soybean1          266     35   19  Large soybean dataset
+%soybean2          136     35    4  Small soybean dataset
+%spambase         4601     57    2  Spambase
+%spectf             80     44    2  Spectf Heart
+%spectrometer      531    101    9  Low Resolution Spectrometer
+%teachassist       151      5    3  Teaching Assistant Evaluation
+%tic_tac_toe       958      9    2  Tic Tac Toe
+%twonorm          7400     20    2  Twonorm Data
+%waveform1        5000     21    3  Simple Waveform Data
+%waveform2        5000     40    3  Advanced Waveform Data
+%wine              178     13    3  Wine Recognition
+%x80                45      8    3  80X Characters
+%yeast            1484      8   10  Protein Localization
+%zoo               101     16    7  Animal Recognition
 %
 %Multi-band images (pixels are objects, bands are features)
@@ -43,12 +83,16 @@
 %emim      128*128    8      1  A seto of 5 8-band EM images
 %lena      256*256    3      1  full-color image
-%texturel  5*128*128  7      5  texture features for 5 different texture images
+%texturel  5*128*128  7      5  texture features of 5 different images
 %texturet  256*256    7      5  composite texture image
 %
 %Image datasets (pixels are features, images are objects)
 %--------------------------------------------------------
-%name   images  pixels  classes
-%kimia     216   64*64    18  resampled Kimia dataset of silhouettes
-%mnist8  70000    8*8     10  normalized MNIST digits
-%nist16   2000   16*16    10  normalized NIST digits
-%nist32   5000   32*32    10  resemapled MNIST digits
+%name     images  pixels  classes
+%kimia       216   64*64    18  resampled Kimia dataset of silhouettes
+%mnist     70000   28*28    10  MNIST8 Reduced Digits
+%mnist8    70000    8*8     10  MNIST digits
+%nist16     2000   16*16    10  normalized NIST digits
+%nist32     5000   32*32    10  resemapled MNIST digits
+%
+%Most datasets are based on the <a
+%href="http://archive.ics.uci.edu/ml/datasets/SPECTF+Heart">UCI Machine Learning Repository.</a>
Index: /prdatasets/abalone.m
===================================================================
--- /prdatasets/abalone.m	(revision 142)
+++ /prdatasets/abalone.m	(revision 142)
@@ -0,0 +1,27 @@
+%ABALONE Predict the age of abalone from physical measurements
+%PRTools dataset import from UCI, 4177 objects, 8 features, 28 classes
+%
+%  A = ABALONE
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Abalone">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains a number of categorical features with N > 2
+%categories. They may be converted to N new real features by CAT2REAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = abalone
+
+a = pr_download_uci('abalone');
+f = textscan('Length	Diam	Height	Whole	Shucked	Viscera	Shell	Rings','%s');
+a = setfeatlab(a,f{1});
+a = setname(a,'Abalone Age Estimation');
+
+
Index: /prdatasets/adult.m
===================================================================
--- /prdatasets/adult.m	(revision 142)
+++ /prdatasets/adult.m	(revision 142)
@@ -0,0 +1,57 @@
+%ADULT Income exceeding $50K/yr based on census data
+%PRTools UCI dataset import, 32561+16281 objects, 14 mixed features, 2 classes
+%
+%  [TRAIN,TEST] = ADULT(VAL)
+%   TRAIN_TEST  = ADULT(VAL)
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Adult">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains a number of categorical features with N > 2
+%categories. They may be converted to N new real features by CAT2REAL.
+%
+%Dataset has missing values. By default all objects with missing values are
+%removed. Use VAL=NaN to avoid this. For other options see MISVAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL, MISVAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function varargout = adult(val)
+
+if nargin<1
+	val = 'remove';
+end
+
+varargout = cell(1,nargout);
+[varargout{:}] = pr_loadmatfile;
+if isempty(varargout{1})
+  % no matfiles found, create them
+  % define settings
+  f = textscan('age workclass fnlwgt education education-num martial-status occupation relationship race sex capital-gain capital-loss hours-per-week native-country','%s');
+  opt.labfeat     = 15;
+  opt.featnames   = f(1);
+  opt1.nheadlines = 0;
+  opt2.nheadlines = 1;
+  opt.matfile     = false; % we save the datasets below
+  opt.dsetname    = 'Census Income Original';
+
+  % download, parse
+  [a,b] = pr_download_uci('adult',{'adult.data','adult.test'},{opt1,opt2,opt});
+  % classnames of b are wrong
+  a = remclass(a);
+  b = remclass(b);
+  b = setlablist(b,getlablist(a));
+  a = setname(a,'Census Income Original');
+  b = setname(b,'Census Income Original');
+  % save separate and combined files
+  [varargout{:}] = pr_savematfile(a,b);
+  
+end
+
+varargout = varargout*misval(val);
+
Index: /prdatasets/annealing.m
===================================================================
--- /prdatasets/annealing.m	(revision 142)
+++ /prdatasets/annealing.m	(revision 142)
@@ -0,0 +1,40 @@
+%ANNEALING Steel annealing data
+%PRTools UCI dataset import, 798+100 objects, 38 features, 2 classes
+%
+%  [TRAIN,TEST] = ANNEALING(VAL)
+%   TRAIN_TEST  = ANNEALING(VAL)
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Annealing">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains a number of categorical features with N > 2
+%categories. They may be converted to N new real features by CAT2REAL.
+%
+%Dataset has missing values. By default all features with missing values are
+%removed. Use VAL=NaN to avoid this. For other options see MISVAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL, MISVAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function varargout = annealing(val)
+
+if nargin<1
+	val = 'f-remove';
+end
+
+varargout = cell(1,nargout);
+[varargout{:}] = pr_loadmatfile;
+if isempty(varargout{1})
+  opt.format   = 'cccnncccncccccccccccccccccccccccnnncncc';
+  opt.dsetname = 'Steel Annealing Data';
+  [varargout{:}] =  pr_download_uci('annealing',{'anneal.data','anneal.test'},opt);
+end
+varargout = varargout*misval(val);
+
+
+
Index: /prdatasets/arcene.m
===================================================================
--- /prdatasets/arcene.m	(revision 142)
+++ /prdatasets/arcene.m	(revision 142)
@@ -0,0 +1,37 @@
+%ARCENE Cancer recognition based on mass spectra
+%PRTools UCI dataset import, 100+100+700 objects, 10000 features, 2 classes
+%
+%  [TRAIN,VALID,TEST] = ARCENE
+%   TRAIN_VALID  = ARCENE
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Arcene">related website</a>.
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%The training set (100 objects) and the validation set (100 objects) are
+%labeled. The test set (700 objects) is unlabeled. The order of the 
+%original feature (spectral bands) is randomized. Moreover, the set is
+%merged with a large number of random features. See the dataset <a href="http://archive.ics.uci.edu/ml/datasets/Arcene">website</a>.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function [a,b,c] = arcene
+
+datfiles = {'ARCENE/arcene_train.data','ARCENE/arcene_valid.data','ARCENE/arcene_test.data'};
+labfiles = {'ARCENE/arcene_train.labels','arcene_valid.labels',0};
+% use old call
+[a,b,c] = pr_download_uci('Arcene',datfiles,[],[],[3,3,18],[],[],' ',labfiles);
+c = setlablist(c,[]);
+
+if nargout < 2
+  a = [a;b]; 
+  a = setname(a,'Arcene Mass Spectra'); 
+end
+
+
+
Index: /prdatasets/audiology.m
===================================================================
--- /prdatasets/audiology.m	(revision 142)
+++ /prdatasets/audiology.m	(revision 142)
@@ -0,0 +1,38 @@
+%AUDIOLOGY Standardized audiology dataset
+%PRTools dataset import from UCI, 200+26 objects, 70 nominal features, 6 classes
+%
+%  [TRAIN,TEST] = AUDIOLOGY(VAL)
+%   TRAIN_TEST  = AUDIOLOGY(VAL)
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Audiology+%28Standardized%29">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains a number of categorical features with N > 2
+%categories. They may be converted to N new real features by CAT2REAL.
+%
+%Dataset has missing values. By default all features with missing values are
+%removed. Use VAL=NaN to avoid this. For other options see MISVAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL, MISVAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function varargout = audiology(val)
+
+if nargin<1
+	val = 'f-remove';
+end
+
+varargout = cell(1,nargout);
+[varargout{:}] = pr_loadmatfile;
+if isempty(varargout{1})
+  % no matfiles found, create them
+  opt.dsetname = 'Standardized Audiology';
+  [varargout{:}] = pr_download_uci('Audiology+(Standardized)',{'audiology.standardized.data','audiology.standardized.test'},opt);
+end
+varargout = varargout*misval(val);
+
Index: /prdatasets/australian_sl.m
===================================================================
--- /prdatasets/australian_sl.m	(revision 142)
+++ /prdatasets/australian_sl.m	(revision 142)
@@ -0,0 +1,35 @@
+%AUSTRALIAN_SL Statlog (Australian Credit Approval) Data Set 
+%PRTools dataset import from UCI, 690 objects, 14 features, 2 classes
+%
+%  A = AUSTRALIAN_SL
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Statlog+(Australian+Credit+Approval)">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains a number of categorical features with N > 2
+%categories. They may be converted to N new real features by CAT2REAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = australian_sl
+
+a = pr_download_uci('Statlog+(Australian+Credit+Approval)','australian.dat',[],[],[],[],[],' ');
+a(:,[1 8 9 11]) = a(:,[1 8 9 11]) + 1;
+domains = {char('a','b'), ...
+           char('p','g','gg'), ...
+           char('ff','d','i','k','j','aa','m','c','w','e','q','r','cc','x'), ....
+           char('ff','dd','j','bb','v','n','o','h','z'), ...
+           char('f','t'), ...
+           char('f','t'), ...
+           char('f','t'), ...
+           char('s','g','p')};
+a = setfeatdom(a,domains,[1,4,5,6,8,9,11,12]);
+a = setname(a,'Statlog Australian Credit');
+
+
Index: /prdatasets/balance_scale.m
===================================================================
--- /prdatasets/balance_scale.m	(revision 142)
+++ /prdatasets/balance_scale.m	(revision 142)
@@ -0,0 +1,25 @@
+%BALANCE_SCALE Balance scale weight & distance database
+%PRTools UCI dataset import, 625 objects, 4 mixed features, 5 classes
+%
+%  A = BALANCE_SCALE
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Balance+Scale">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains one categorical features with 3 categories.
+%It may be converted to 3 new real features by CAT2REAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = balance_scale
+
+a = pr_download_uci('Balance+Scale','balance-scale.data');
+a = setname(a,'Balance Scale');
+
+
Index: /prdatasets/balloons.m
===================================================================
--- /prdatasets/balloons.m	(revision 142)
+++ /prdatasets/balloons.m	(revision 142)
@@ -0,0 +1,23 @@
+%BALLOONS Psychology experiment conditions
+%PRTools UCI dataset import, 20+20+16+16 objects, 4 categorical features, 2 classes
+%
+%  [A1,A2,A3,A4] = BALLOONS
+%   A1_4 = BALLOONS
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Balloons">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+% 
+%All categorical features are binary and might be used as such in
+%routines expecting continuous features.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%DATASETS
+
+function [a1,a2,a3,a4] = balloons
+
+[a1,a2,a3,a4] = pr_download_uci('balloons',{'adult+stretch.data','adult-stretch.data','yellow-small+adult-stretch.data','yellow-small.data'});
+
+if nargout < 2, a1 = [a1;a2;a3;a4];  a1 = setname(a1,'Balloons'); end
Index: /prdatasets/biomed.m
===================================================================
--- /prdatasets/biomed.m	(revision 141)
+++ /prdatasets/biomed.m	(revision 142)
@@ -32,5 +32,5 @@
   opt.desc = 'The purpose of the analysis is to develop a screening procedure to detect carriers and to describe its effectiveness. ';
   opt.link = 'http://lib.stat.cmu.edu/datasets/';
-  opt.dsetname = 'Biomed';
+  opt.dsetname = 'Biomedical Data';
   a = pr_download('http://prtools.tudelft.nl/prdatasets/biomed.dat',[],opt);
 end
Index: /prdatasets/car.m
===================================================================
--- /prdatasets/car.m	(revision 141)
+++ /prdatasets/car.m	(revision 142)
@@ -25,5 +25,5 @@
   opt.desc = 'The purpose of the analysis is to develop a screening procedure to detect carriers and to describe its effectiveness. ';
   opt.link = 'http://lib.stat.cmu.edu/datasets/';
-  opt.dsetname = 'Car dataset';
+  opt.dsetname = 'Car Evaluation';
   a = pr_download('http://prtools.tudelft.nl/prdatasets/car.data',[],opt);
 end
Index: /prdatasets/census.m
===================================================================
--- /prdatasets/census.m	(revision 142)
+++ /prdatasets/census.m	(revision 142)
@@ -0,0 +1,43 @@
+%CENSUS Weighted census income data
+%PRTools UCI dataset import, 199523+99762 objects, 41 mixed features, 2 classes
+%
+%  [TRAIN,TEST] = CENSUS(VAL)
+%   TRAIN_TEST  = CENSUS(VAL)
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Census-Income+(KDD)">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains a number of categorical features with N > 2
+%categories. They may be converted to N new real features by CAT2REAL.
+%
+%Dataset has missing values. By default all objects with missing values are
+%removed. Use VAL=NaN to avoid this. For other options see MISVAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL, MISVAL,ADULT
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function varargout = census(val)
+
+if nargin<1
+	val = 'remove';
+end
+
+varargout = cell(1,nargout);
+[varargout{:}] = pr_loadmatfile;
+if isempty(varargout{1})
+  opt.format = 'ncnncnccccccccccnnncccccncccccncccccncnnnc';
+  opt1.size  = 6;
+  opt2.size  = 3;
+  opt.dsetname = 'Census Income KDD';
+  % no matfiles found, create them
+  [varargout{:}] = pr_download_uci('Census-Income+(KDD)',{'census-income.data.gz','census-income.test.gz'},{opt1,opt2,opt});
+end
+varargout = varargout*misval(val);
+
+
+
Index: /prdatasets/check_prdatasets.m
===================================================================
--- /prdatasets/check_prdatasets.m	(revision 142)
+++ /prdatasets/check_prdatasets.m	(revision 142)
@@ -0,0 +1,29 @@
+datasetdir = fileparts(which('isolet'));
+files = cellstr(ls([datasetdir '/*.m']));
+nocheck = {'pr_dataset','pr_download','pr_download_uci', ...
+  'pr_callername','pr_cell2dset','pr_getdata', ...
+  'mfeat_all', 'pr_readdataset','pr_dset_align', ...
+  'pr_loadmatfile','check_prdatasets','Contents', ...
+  'pr_readdataset', 'pr_savematfile'};
+
+global ASK
+ASK = false;
+  
+for n=36:numel(files)
+  [dummy,file] = fileparts(files{n});
+  if isempty(strmatch(file,nocheck,'exact'))
+    disp(file)
+    a = feval(file)
+    a = setprior(a,getprior(a,0));
+    %disp(prcrossval(setprior(a,getprior(a,0)),nmc,2))
+    if getsize(a,3) > 1
+      disp(prcrossval(a,remclass*nmc,2,[],testd))
+    end
+  end
+end
+
+
+  
+  
+  
+  
Index: /prdatasets/cmc.m
===================================================================
--- /prdatasets/cmc.m	(revision 142)
+++ /prdatasets/cmc.m	(revision 142)
@@ -0,0 +1,26 @@
+%CMC Contraceptive Method Choice
+%PRTools dataset import from UCI, 690 objects, 15 mixed features, 2 classes
+%
+%  A = CMC
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Contraceptive+Method+Choice">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains one categorical features with 4 categories.
+%It may be converted to 4 new real features by CAT2REAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = cmc
+
+a = pr_download_uci('Contraceptive+Method+Choice','cmc.data');
+a = setfeatdom(a,{char({'1','2','3','4'})},7);
+a = setname(a,'Contraceptive Method Choice');
+
+
Index: /prdatasets/connect4.m
===================================================================
--- /prdatasets/connect4.m	(revision 142)
+++ /prdatasets/connect4.m	(revision 142)
@@ -0,0 +1,27 @@
+%CONNECT4 Connect-4 game positions
+%PRTools dataset import from UCI, 67557 objects, 42 categorical features, 3 classes
+%
+%  A = CONNECT4
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Connect-4">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains a number of categorical features with N > 2
+%categories. They may be converted to N new real features by CAT2REAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = connect4
+
+% UCI data is Z-compressed. No Matlab command foud for uncompressing.
+% Load uncompressed data from 37steps.
+a = pr_download_uci('Connect-4','http://37steps.com/data/prdatasets/connect-4.data',[],[],6);
+a = setname(a,'Connect-4 Dataset');
+
+
Index: /prdatasets/credit.m
===================================================================
--- /prdatasets/credit.m	(revision 142)
+++ /prdatasets/credit.m	(revision 142)
@@ -0,0 +1,27 @@
+%CREDIT Credit card approval data
+%PRTools dataset import from UCI, 690 objects, 15 mixed features, 2 classes
+%
+%  A = CREDIT
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Credit+Approval">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains a number of categorical features with N > 2
+%categories. They may be converted to N new real features by CAT2REAL.
+%
+%There are missing values, coded by NaNs. They may be handled by MISVAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, MISVAL, CAT2REAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = credit
+
+form = '%s%n%n%s%s%s%s%n%s%s%n%s%s%n%n%s';
+form = 'cnnccccnccnccnnc';
+a = pr_download_uci('Credit+Approval','crx.data',form);
+a = setname(a,'Credit Approval Dataset');
Index: /prdatasets/cylinderbands.m
===================================================================
--- /prdatasets/cylinderbands.m	(revision 142)
+++ /prdatasets/cylinderbands.m	(revision 142)
@@ -0,0 +1,27 @@
+%CYLINDERBANDS mitigating process delays in rotogravure printing
+%PRTools dataset import from UCI, 541 objects, 39 features, 2 classes
+%
+%  A = CYLINDERBANDS
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Cylinder+Bands">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains a number of categorical features with N > 2
+%categories. They may be converted to N new real features by CAT2REAL.
+%
+%There are missing values, coded by NaNs. They may be handled by MISVAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, MISVAL, CAT2REAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = cylinderbands
+
+% UCI dataset is irregulary formatted.
+% Load modified data from 37steps.
+a = pr_download_uci('Cylinder+Bands','http://37steps.com/data/prdatasets/cylinderbands.dat');
+a = setname(a,'Cylinder Bands Dataset');
Index: /prdatasets/diabetes.m
===================================================================
--- /prdatasets/diabetes.m	(revision 141)
+++ /prdatasets/diabetes.m	(revision 142)
@@ -20,5 +20,5 @@
   opt.link  = 'ftp://ftp.ics.uci.edu/pub/machine-learning-databases/pima-indians-diabetes/';
   opt.desc  = 'The Pima Indians Diabetes Database from UCI.';
-  opt.dsetname = 'Diabetes';
+  opt.dsetname = 'Diabetes Dataset';
   a = pr_download('http://prtools.tudelft.nl/prdatasets/diabetes.dat',[],opt);
 end
Index: /prdatasets/ecoli.m
===================================================================
--- /prdatasets/ecoli.m	(revision 141)
+++ /prdatasets/ecoli.m	(revision 142)
@@ -20,5 +20,5 @@
   opt.desc='The Ecoli database from UCI. Goal is to Predict the localization site of protein in a cell, by Kenta Nakai Institue of Molecular and Cellular Biology Osaka, University.';
   opt.link = 'ftp://ftp.ics.uci.edu/pub/machine-learning-databases/ecoli/';
-  opt.dsetname = 'Ecoli';
+  opt.dsetname = 'Ecoli Dataset';
   a = pr_download('http://prtools.tudelft.nl/prdatasets/ecoli.dat',[],opt);
 end
Index: /prdatasets/flowcyto.m
===================================================================
--- /prdatasets/flowcyto.m	(revision 142)
+++ /prdatasets/flowcyto.m	(revision 142)
@@ -0,0 +1,60 @@
+%FLOWCYTO Load 4 flow-cytometry datasets.
+%
+%   A = FLOWCYTO(N)
+%
+% These datasets are based on 612 FL3-A DNA flowcytometer histograms
+% from breast cancer tissues in 256 resolution. The initial data have been 
+% acquired by M. Nap and N. van Rodijnen of the Atrium Medical Center in 
+% Heerlen, The Netherlands, during 2000-2004, using tubes 3-6 of a DACO 
+% Galaxy flowcytometer (N = 1-4). Histograms are labeled in 3 classes: 
+% aneuploid (335 patients), diploid (131) and tetraploid (146). The first
+% and the last bin (1 and 256) are set to 0, as they contsin noise. After
+% that histograms are normalized (sum to one) resulting in a dataset with
+% 254 features.
+% 
+% The four datasets are aligned for the same patients, but are based on
+% different measurements.
+%
+% SEE ALSO
+% PRTOOLS, DATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+
+function a = flowcyto(n)
+
+if nargin < 1 || isempty(n)
+  n = 1;
+end
+
+if any(n<1) || any(n>4)
+  error('Dataset number should be larger than 0 and smaller than 5')
+end
+
+d = pr_getdata('http://37steps.com/data/prdatasets/FlowCyto_sort.mat',5);
+
+a = cell(1,numel(n));
+for j=1:numel(n)
+  x = prdataset(d{n(j)});
+  x = setname(x(:,2:255),['Flow Cytometry ' num2str(n(j))]);
+  desc = ['These datasets are based on 612 FL3-A DNA flowcytometer histograms' ...
+  'from breast cancer tissues in 256 resolution. The initial data have been' ...
+  'acquired by M. Nap and N. van Rodijnen of the Atrium Medical Center in' ...
+  'Heerlen, The Netherlands, during 2000-2004, using tubes 3-6 of a DACO' ...
+  'Galaxy flowcytometer (N = 1-4). Histograms are labeled in 3 classes:' ...
+  'aneuploid (335 patients), diploid (131) and tetraploid (146). The first' ...
+  'and the last bin (1 and 256) are set to 0, as they contsin noise. After' ...
+  'that histograms are normalized (sum to one) resulting in a dataset with' ...
+  '254 features.'];
+  ref = {['']};
+  x = setprior(x,getprior(x,0));
+  x = setuser(x,desc,'desc');
+  x = setuser(x,ref,'ref');
+  a{j} = x;
+end
+
+if numel(a) == 1
+  a = a{1};
+end
+
+
Index: /prdatasets/german_num_sl.m
===================================================================
--- /prdatasets/german_num_sl.m	(revision 142)
+++ /prdatasets/german_num_sl.m	(revision 142)
@@ -0,0 +1,24 @@
+%GERMAN_NUM_SL Statlog (German Credit Approval, numeric) Data Set 
+%PRTools dataset import from UCI, 1000 objects, 24 features, 2 classes
+%
+%  A = GERMAN_NUM_SL
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Statlog+(German+Credit+Data)">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This is the numeric version of an originally categorical dataset, see
+%STATLOG_GERMAN_NUM
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL, GERMAN_SL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = german_num_sl
+
+a = pr_download_uci('Statlog+(German+Credit+Data)','german.data-numeric',[],[],[],[],[],' ');
+a = setname(a,'Statlog German Credit Num');
+
Index: /prdatasets/german_sl.m
===================================================================
--- /prdatasets/german_sl.m	(revision 142)
+++ /prdatasets/german_sl.m	(revision 142)
@@ -0,0 +1,25 @@
+%GERMAN_SL Statlog (German Credit Approval, original) Data Set 
+%PRTools dataset import from UCI, 1000 objects, 20 features, 2 classes
+%
+%  A = GERMAN_SL
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Statlog+(German+Credit+Data)">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains a number of categorical features with N > 2
+%categories. They may be converted to N new real features by CAT2REAL.
+%There is a numeric version of this dataset: STATLOG_GERMAN_NUM
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL, GERMAN_NUM_SL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = german_sl
+
+a = pr_download_uci('Statlog+(German+Credit+Data)','german.data',[],[],[],[],[],' ');
+a = setname(a,'Statlog German Credit');
+
Index: /prdatasets/haberman.m
===================================================================
--- /prdatasets/haberman.m	(revision 142)
+++ /prdatasets/haberman.m	(revision 142)
@@ -0,0 +1,21 @@
+%HABERMAN Survival of patients after surgery for breast cancer
+%PRTools dataset import from UCI, 306 objects, 3 features, 2 classes
+%
+%  A = HABERMAN
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Haberman's+Survival">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = haberman
+
+a = pr_download_uci('Haberman''s+Survival','haberman.data');
+a = setname(a,['Haberman''''s Survival']);
+
Index: /prdatasets/heart_sl.m
===================================================================
--- /prdatasets/heart_sl.m	(revision 142)
+++ /prdatasets/heart_sl.m	(revision 142)
@@ -0,0 +1,22 @@
+%HEART_SL Statlog (Heart) Data Set 
+%PRTools dataset import from UCI, 270 objects, 13 features, 2 classes
+%
+%  A = HEART_SL
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Statlog+(Heart)">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = heart_sl
+
+a = pr_download_uci('Statlog+(Heart)','heart.dat',[],[],[],[],[],' ');
+a = setname(a,'Statlog Heart');
+
+
Index: /prdatasets/imox.m
===================================================================
--- /prdatasets/imox.m	(revision 141)
+++ /prdatasets/imox.m	(revision 142)
@@ -7,4 +7,14 @@
 % measured form the corners along the diagnoals and from the edge midpoints
 % along the horizontal and vertical central axes.
+%
+% REFERENCES
+% 1. R. Dubes and A.K. Jain, Clustering techniques: The user's dilemma,
+% Pattern Recognition, Volume 8, Issue 4, October 1976, Pages 247-260.
+% 2. A.K. Jain, R.C. Dubes, C.C. Chen, Bootstrap Techniques for Error Estimation
+% IEEE Trans. Pattern Anal. and Mach. Intel., 9(5), pp. 628-633, 1987.
+% 3. W.F. Schmidt, D.F. Levelt, and R.P.W. Duin, An experimental comparison
+% of neural classifiers with traditional classifiers, in: E.S. Gelsema, 
+% L.N. Kanal (eds.), Pattern Recognition in Practice IV, Elsevier,
+% 1994, 391-402. 
 %
 % See also DATASETS, PRDATASETS, X80
@@ -17,5 +27,5 @@
 
 a = pr_getdata;
-a = setname(a,'IMOX Dataset');
+a = setname(a,'IMOX Characters');
 a = setlablist(a,char('I','M','O','X'));
 a = setfeatlab(a,char(...
Index: /prdatasets/imsegment.m
===================================================================
--- /prdatasets/imsegment.m	(revision 142)
+++ /prdatasets/imsegment.m	(revision 142)
@@ -0,0 +1,23 @@
+%IMSEGMENT Survival of patients after surgery for breast cancer
+%PRTools dataset import from UCI, 210+2100 objects, 19 features, 7 classes
+%
+%  [TRAIN,TEST] = IMSEGMENT
+%   TRAIN_TEST  = IMSEGMENT
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Image+Segmentation">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function [a,b] = imsegment
+
+[a,b] = pr_download_uci('Image+Segmentation',{'segmentation.data','segmentation.test'},[],[],[],[5 5],[],[],1);
+a = setname(a,'Image Segmentation');
+b = setname(b,'Image Segmentation');
+if nargout < 2, a = [a;b]; end
Index: /prdatasets/imsegment_sl.m
===================================================================
--- /prdatasets/imsegment_sl.m	(revision 142)
+++ /prdatasets/imsegment_sl.m	(revision 142)
@@ -0,0 +1,22 @@
+%IMSEGMENT_SL Statlog (Image Segmentation) Data Set  
+%PRTools dataset import from UCI, 2310 objects, 19 features, 7 classes
+%
+%  A = IMSEGMENT_SL
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Statlog+(Image+Segmentation)">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset is very similar to the IMSEGMENT dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, IMSEGMENT
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = imsegment_sl
+
+a = pr_download_uci('Statlog+(Image+Segmentation)','segment.dat',[],[],[],[],[],' ');
+a = setname(a,'Statlog Image Segmentation');
Index: /prdatasets/isolet.m
===================================================================
--- /prdatasets/isolet.m	(revision 142)
+++ /prdatasets/isolet.m	(revision 142)
@@ -0,0 +1,25 @@
+%ISOLET Spoken letter names
+%PRTools dataset import from UCI, 6238+1559 objects, 617 categorical features, 26 classes
+%
+%  [TRAIN,TEST] = ISOLET
+%   TRAIN_TEST  = ISOLET
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/ISOLET">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+
+function [a,b] = isolet
+
+% UCI data is Z-compressed. No Matlab command found for uncompressing.
+% Load zipped data from 37steps.
+url1 = 'http://37steps.com/data/prdatasets/isolet1+2+3+4.zip';
+url2 = 'http://37steps.com/data/prdatasets/isolet5.zip';
+[a,b] = pr_download_uci('ISOLET',{url1,url2});
+a = setname(a,'Isolet');
+b = setname(b,'Isolet');
+if nargout < 2, a = [a;b]; end
+
Index: /prdatasets/letter.m
===================================================================
--- /prdatasets/letter.m	(revision 142)
+++ /prdatasets/letter.m	(revision 142)
@@ -0,0 +1,19 @@
+%LETTER Predict the age of abalone from physical measurements
+%PRTools dataset import from UCI, 4177 objects, 8 features, 28 classes
+%
+%  A = LETTER
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Letter+Recognition">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+
+function a = letter
+
+a = pr_download_uci('Letter+Recognition','letter-recognition.data');
+a = setname(a,'Letter Recognition');
+
+
Index: /prdatasets/magic04.m
===================================================================
--- /prdatasets/magic04.m	(revision 142)
+++ /prdatasets/magic04.m	(revision 142)
@@ -0,0 +1,21 @@
+%MAGIC04 MAGIC gamma telescope data 2004
+%PRTools dataset import from UCI, 19020 objects, 10 features, 2 classes
+%
+%  A = MAGIC04
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/MAGIC+Gamma+Telescope">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = magic04
+
+a = pr_download_uci('MAGIC+Gamma+Telescope','magic04.data');
+a = setname(a,'Magic Gamma Telescope');
+
Index: /prdatasets/mammograph.m
===================================================================
--- /prdatasets/mammograph.m	(revision 142)
+++ /prdatasets/mammograph.m	(revision 142)
@@ -0,0 +1,23 @@
+%MAMMOGRAPH Discrimination of benign and malignant mammographic masses
+%PRTools dataset import from UCI, 961 objects, 5 features, 2 classes
+%
+%  A = MAMMOGRAPH
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Mammographic+Mass">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%There are missing values, coded by NaNs. They may be handled by MISVAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, MISVAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = mammograph
+
+a = pr_download_uci('Mammographic+Mass','mammographic_masses.data');
+a = setname(a,'Mammographic Mass');
+
Index: /prdatasets/mnist.m
===================================================================
--- /prdatasets/mnist.m	(revision 142)
+++ /prdatasets/mnist.m	(revision 142)
@@ -0,0 +1,36 @@
+%MNIST The MNIST database as a PRTools dataset
+%
+%  [TRAIN,TEST] = MNIST
+%   TRAIN_TEST  = MNIST
+%
+% The MNIST database as supplied by Yann LeCun in PRTools format. It
+% contains of 10 classes of handwritten digits of 28 x 28 pixels.
+% The trainset has 60000 digits and the testset 1000.
+%
+% SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://yann.lecun.com/exdb/mnist/">Original Website</a>
+% PRTOOLS, DATASETS, SHOW
+
+
+function varargout = mnist
+
+varargout = cell(1,nargout);
+[varargout{:}] = pr_loadmatfile;
+
+if isempty(varargout{1})
+  
+  a = pr_getdata(['http://37steps.com/data/prdatafiles/MNIST_train.zip'],42,'mnist_train','',1);
+  b = pr_getdata(['http://37steps.com/data/prdatafiles/MNIST_test.zip'],[],'mnist_test','',0);
+  % Note that these are datafiles
+  user.desc = ['This is the trainset of MNIST.'];
+  user.link = ['http://yann.lecun.com/exdb/mnist/'];
+  a = setuser(a,user)*datasetm; % convert to dataset
+  user.desc = ['This is the testset of MNIST.'];
+  user.link = ['http://yann.lecun.com/exdb/mnist/'];
+  b = setuser(b,user)*datasetm; % convert to dataset
+  a = setname(a,'MNIST');
+  b = setname(b,'MNIST');
+  
+  % save separate and combined files
+  [varargout{:}] = pr_savematfile(a,b);
+  
+end
Index: /prdatasets/musk1.m
===================================================================
--- /prdatasets/musk1.m	(revision 142)
+++ /prdatasets/musk1.m	(revision 142)
@@ -0,0 +1,28 @@
+%MUSK1 Prediction of molecules to be musks or non-musks
+%PRTools dataset import from UCI, 476 objects, 166 features, 2 classes
+%
+%  A = MUSK1
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Musk+(Version+1)">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%A is a multiple-instance dataset. The objects are the instances. They
+%group in 92 bags. There are two labels: (1) the Bag Label and (2) the Bag
+%Index. Use the CHANGELABLIST command to change from labeling system. See
+%also MULTI_LABELING
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%DATASETS, MULTI_LABELING, CHANGELABLIST
+
+function a = musk1
+
+% UCI data is Z-compressed. No Matlab command foud for uncompressing.
+% Load zipped data from 37steps.
+a = pr_download_uci('Musk+(Version+1)','http://37steps.com/data/prdatasets/musk1.zip');
+a = setlablistnames(a,'Bag Label',1);
+a = feat2lab(a,1,'Bag Index');
+a(:,2) = [];
+a = setname(a,'Musk version 1');
Index: /prdatasets/musk2.m
===================================================================
--- /prdatasets/musk2.m	(revision 142)
+++ /prdatasets/musk2.m	(revision 142)
@@ -0,0 +1,28 @@
+%MUSK2 Prediction of molecules to be musks or non-musks
+%PRTools dataset import from UCI, 6598 objects, 166 features, 2 classes
+%
+%  A = MUSK2
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Musk+(Version+2)">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%A is a multiple-instance dataset. The objects are the instances. They
+%group in 102 bags. There are two labels: (1) the Bag Label and (2) the Bag
+%Index. Use the CHANGELABLIST command to change from labeling system. See
+%also MULTI_LABELING
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%DATASETS, MULTI_LABELING, CHANGELABLIST
+
+function a = musk2
+
+% UCI data is Z-compressed. No Matlab command foud for uncompressing.
+% Load zipped data from 37steps.
+a = pr_download_uci('Musk+(Version+2)','http://37steps.com/data/prdatasets/musk2.zip',[],[],5);
+a = setlablistnames(a,'Bag Label',1);
+a = feat2lab(a,1,'Bag Index');
+a(:,2) = [];
+a = setname(a,'Musk version 2');
Index: /prdatasets/optdigits.m
===================================================================
--- /prdatasets/optdigits.m	(revision 142)
+++ /prdatasets/optdigits.m	(revision 142)
@@ -0,0 +1,26 @@
+%OPTDIGITS Optical Recognition of Handwritten Digits
+%PRTools UCI dataset import, 3823+1797 objects, 64 integer features, 10 classes
+%
+%  [TRAIN,TEST] = OPTDIGITS
+%   TRAIN_TEST  = OPTDIGITS
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function [a,b] = optdigits
+
+[a,b] = pr_download_uci('Optical+Recognition+of+Handwritten+Digits',{'optdigits.tra','optdigits.tes'});
+a = setname(a,'Optical Digit Recognition');
+b = setname(b,'Optical Digits');
+if nargout < 2, a = [a;b]; end
+
+
+
Index: /prdatasets/pageblocks.m
===================================================================
--- /prdatasets/pageblocks.m	(revision 142)
+++ /prdatasets/pageblocks.m	(revision 142)
@@ -0,0 +1,19 @@
+%PAGEBLOCKS Page layout blocks
+%PRTools dataset import from UCI, 5473 objects, 10 features, 5 classes
+%
+%  A = PAGEBLOCKS
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Page+Blocks+Classification">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+
+function a = pageblocks
+
+% UCI data is Z-compressed. No Matlab command foud for uncompressing.
+% Load zipped data from 37steps.
+a = pr_download_uci('Page+Blocks+Classification','http://37steps.com/data/prdatasets/page-blocks.zip',[],[],[],[],[],' ');
+a = setname(a,'Page Blocks');
Index: /prdatasets/pendigits.m
===================================================================
--- /prdatasets/pendigits.m	(revision 142)
+++ /prdatasets/pendigits.m	(revision 142)
@@ -0,0 +1,20 @@
+%PENDIGITS Pen-based recognition of handwritten digits
+%PRTools dataset import from UCI, 7494+3498 objects, 16 features, 10 classes
+%
+%  [TRAIN,TEST] = PENDIGITS
+%   TRAIN_TEST  = PENDIGITS
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Pen-Based+Recognition+of+Handwritten+Digits">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+
+function [a,b] = pendigits
+
+[a,b] = pr_download_uci('Pen-Based+Recognition+of+Handwritten+Digits',{'pendigits.tra','pendigits.tes'});
+a = setname(a,'Pen Based Handwritten Digits');
+b = setname(b,'Pen Based Handwritten Digits');
+if nargout < 2, a = [a;b]; end
Index: /prdatasets/pr_datfiles.m
===================================================================
--- /prdatasets/pr_datfiles.m	(revision 142)
+++ /prdatasets/pr_datfiles.m	(revision 142)
@@ -0,0 +1,23 @@
+%PR_DATFILES Full names of dat-files
+
+function datfiles = pr_datfiles(comname)
+
+if nargin < 1
+  comname = callername;
+end
+dirname = fileparts(which(comname));
+datdir = fullfile(dirname,'data');
+files = dir([fullfile(datdir,comname) '*.dat']);
+n = numel(files);
+datfiles = cell(1,n);
+[datfiles{:}] = deal(files.name);
+for i=1:n
+  datfiles{i} = fullfile(datdir,datfiles{i});
+end
+if n==1
+  datfiles = datfiles{1};
+end
+
+
+
+
Index: /prdatasets/pr_download_uci.m
===================================================================
--- /prdatasets/pr_download_uci.m	(revision 141)
+++ /prdatasets/pr_download_uci.m	(revision 142)
@@ -78,5 +78,5 @@
 
 %% if matfiles available, use them
-[varargout{:}] = loadmatfile(comname);
+[varargout{:}] = pr_loadmatfile(comname);
 if ~isempty(varargout{1}), return; end
 
@@ -102,10 +102,12 @@
     dataname = comname;
   end
-  opt{j}.dsetname = dataname;
+%   opt{j}.dsetname = dataname;
   savemat = ~isfield(opt{j},'matfile') || opt{j}.matfile;
   opt{j}.matfile  = false;
+  opt{j}.delimeter= ',';
+  opt{j} = fielddef(opt{j},'dsetname',callername);
   a = pr_download(data.url,fullfile(datadir,dataname),opt{j});
   a = setuser(a,data,'user'); % store dataset info
-  a = setname(a,dataname);    % set dataset name
+%   a = setname(a,dataname);    % set dataset name
   if ~isfield(opt{j},'labfeat') || isempty(opt{j}.labfeat)
     a = feat2lab(a,size(a,2));
@@ -120,8 +122,8 @@
 if numel(ucinames) > 1
   % multiple datasets loaded, alignment might be needed
-  [varargout{:}] = dset_align(varargout{:});
+  [varargout{:}] = pr_dset_align(varargout{:});
   a = vertcat(varargout{:});
   a = setuser(a,data,'user'); % store dataset info
-  a = setname(a,comname);    % set dataset name
+  opt{end} = fielddef(opt{end},'dsetname',callername);
   if ~isfield(opt{end},'matfile') || opt{end}.matfile
     save(fullfile(datadir,comname),'a');
@@ -167,5 +169,5 @@
     dataname = prname;
   end
-  filenames{j} = fullfile(thisdir,dataname);
+  filenames{j} = fullfile(fullfile(thisdir,'data'),dataname);
   if exist([filenames{j} '.mat'],'file') == 2
     % if mat-file is available, use it
@@ -174,5 +176,5 @@
     a = getfield(s,f{1});
   else
-    if ~exist('data')
+    if ~exist('data','var')
       % get UCI info
       data = parselink(name);
@@ -218,5 +220,5 @@
 if anynew && numel(ucinames) > 1
   % multiple datasets loaded, alignment might be needed
-  [varargout{:}] = dset_align(varargout{:});
+  [varargout{:}] = pr_dset_align(varargout{:});
   for j=1:numel(ucinames)
     a = varargout{j};
@@ -273,4 +275,8 @@
 data.type = type;
 
+function s = fielddef(s,field,x)
+  if ~isfield(s,field)
+    s.(field) = x;
+  end
 
 function name = callername(n)
Index: /prdatasets/pr_dset_align.m
===================================================================
--- /prdatasets/pr_dset_align.m	(revision 142)
+++ /prdatasets/pr_dset_align.m	(revision 142)
@@ -0,0 +1,35 @@
+%PR_DSET_ALIGN Align dataset w.r.t. categorical data
+%
+%   [A,B, ...} = PR_DSET_ALIGN(A,B, ...)
+%
+% Align datasets (partially) based on categorical data. Without a call to
+% this routine they might be coded differently.
+%
+% SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>
+% DATASETS, SETFEATDOM, FEATTYPES, DSET2CELL, CELL2DSET
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function varargout = pr_dset_align(varargin)
+
+varargout = cell(1,nargin);
+
+a = varargin{1};
+isdataset(a);
+m = zeros(1,nargin);
+m(1) = size(a,1);
+
+for j=2:nargin
+  b = varargin{j};
+  a = [a;b];
+  m(j) = size(b,1);
+end
+
+n = 1;
+for j=1:nargin
+  b = a(n:sum(m(1:j)),:);
+  varargout{j} = setname(b,getname(varargin{j}));
+  n = n+m(j);
+end
+
+
Index: /prdatasets/pr_getdata.m
===================================================================
--- /prdatasets/pr_getdata.m	(revision 141)
+++ /prdatasets/pr_getdata.m	(revision 142)
@@ -7,5 +7,5 @@
 % By default DSET is COMMAND.mat with COMMAND the name of the calling
 % m-file. If this is not available in the directory of COMMAND the URL will
-% be downloaded. If ASK = true (default), the user is asked for approval. 
+% be downloaded. If ASK = true, the user is asked for approval. 
 % If given, SIZE (in MByte) is displayed in the request.
 %
@@ -49,5 +49,5 @@
   url = ['http://prtools.tudelft.nl/prdatasets/' name '.mat'];
 end
-[dummy,uname,ext] = fileparts(url);
+[~,uname,ext] = fileparts(url);
 
 if isempty(name)
@@ -91,6 +91,4 @@
     out = [];
   end
-else
-  a = dset;
 end
   
@@ -120,5 +118,5 @@
 
 % make sure we check for a matfile
-[dummy,dummy,ext] = fileparts(dset);
+[~,~,ext] = fileparts(dset);
 if isempty(ext)
   dsetmat = [dset '.mat'];
@@ -145,5 +143,5 @@
   end
 elseif exist(dset,'dir') == 7
-  [dummy,dfile] = fileparts(dset);
+  [~,dfile] = fileparts(dset);
   if exist(fullfile(dset,[dfile '.mat']),'file') == 2
     out = prdatafile(dset);
Index: /prdatasets/pr_savematfile.m
===================================================================
--- /prdatasets/pr_savematfile.m	(revision 141)
+++ /prdatasets/pr_savematfile.m	(revision 142)
@@ -18,5 +18,4 @@
   if nargout == 1
     a = vertcat(varargin{:});
-    a = setname(a,name);
     save(matfile,'a');
     varargout{1} = a;
@@ -27,5 +26,4 @@
   else
     a = vertcat(varargin{:});
-    a = setname(a,name);
     save(matfile,'a');
     for i=1:nargin
Index: /prdatasets/pr_showdsets.m
===================================================================
--- /prdatasets/pr_showdsets.m	(revision 141)
+++ /prdatasets/pr_showdsets.m	(revision 142)
@@ -1,5 +1,5 @@
 %PR_SHOWDSETS Show datasets and store results in DSET
 
-forget = {'Contents','mfeat_all'};
+forget = {'Contents','mfeat_all','check_','pr_'};
 commands = struct2cell(dir('*.m'));
 commands = commands(1,:);
@@ -10,13 +10,14 @@
   commands{j} = commands{j}(1:end-2);
 end
+J = [];
 for i=1:numel(forget)
-  J = strcmp(forget{i},commands);
-  commands(J) = [];
+  J = [J strmatch(forget{i},commands)];
 end
+commands(J) = [];
   
 for j=1:numel(commands)
   a = feval(commands{j});
   [m,k,c] = getsize(a);
-  fprintf('%6i %4i %4i %15s %s\n',m,k,c,commands{j},getname(a));
+  fprintf('%c%-14s %6i %6i %4i  %s\n','%',commands{j},m,k,c,getname(a));
 end
 
Index: /prdatasets/satellite_sl.m
===================================================================
--- /prdatasets/satellite_sl.m	(revision 142)
+++ /prdatasets/satellite_sl.m	(revision 142)
@@ -0,0 +1,25 @@
+%SATELLITE_SL Statlog (Landsat Satellite) Data Set 
+%PRTools dataset import from UCI, 4435+2000 objects, 36 features, 6 classes
+%
+%  [TRAIN,TEST] = SATELLITE_SL
+%   TRAIN_TEST  = SATELLITE_SL
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Statlog+(Landsat+Satellite)">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset is identical to the SATELLITE dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SATELLITE
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function [a,b] = satellite_sl
+
+[a,b] = pr_download_uci('Statlog+(Landsat+Satellite)',{'sat.trn','sat.tst'},[],[],[],[],[],' ');
+a = setname(a,'Statlog Satellite');
+b = setname(b,'Statlog Satellite');
+if nargout < 2, a = [a;b]; end
Index: /prdatasets/shuttle_sl.m
===================================================================
--- /prdatasets/shuttle_sl.m	(revision 142)
+++ /prdatasets/shuttle_sl.m	(revision 142)
@@ -0,0 +1,26 @@
+%SHUTTLE_SL Statlog (Shuttle) Data Set  
+%PRTools dataset import from UCI, 43500+14500 objects, 9 features, 7 classes
+%
+%  [TRAIN,TEST] = SHUTTLE_SL
+%   TRAIN_TEST  = SHUTTLE_SL
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Statlog+(Shuttle)">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function [a,b] = shuttle_sl
+
+url1 = 'http://37steps.com/data/prdatasets/shuttle.zip';
+url2 = 'http://37steps.com/data/prdatasets/shuttle.tst';
+opt.dsetname = 'Statlog Shuttle';
+[a,b] = pr_download_uci('Statlog+(Shuttle)',{url1,url2},[],[],[],[],[],' ');
+a = setname(a,'Statlog Shuttle');
+b = setname(b,'Statlog Shuttle');
+if nargout < 2, a = [a;b]; end
Index: /prdatasets/spambase.m
===================================================================
--- /prdatasets/spambase.m	(revision 142)
+++ /prdatasets/spambase.m	(revision 142)
@@ -0,0 +1,23 @@
+%SPAMBASE spam e-mail database 
+%PRTools dataset import from UCI, 4601 objects, 57 features, 2 classes
+%
+%  A = SPAMBASE
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Spambase">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%There are no missing values found in the dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = spambase
+
+a = pr_download_uci('spambase');
+a = setname(a,'Spambase');
+
Index: /prdatasets/spectf.m
===================================================================
--- /prdatasets/spectf.m	(revision 142)
+++ /prdatasets/spectf.m	(revision 142)
@@ -0,0 +1,26 @@
+%SPECTF Single Proton Emission Computed Tomography  heart data
+%PRTools UCI dataset import, 80+187 objects, 44 features, 2 classes
+%
+%  [TRAIN,TEST] = SPECTF
+%   TRAIN_TEST  = SPECTF
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/SPECTF+Heart">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS 
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function [a,b] = spectf
+
+[a,b] = pr_download_uci('SPECTF+Heart',{'SPECTF.train','SPECTF.test'},[],[],[],[],[],[],1);
+a = setname(a,'Spectf Heart');
+b = setname(b,'Spectf Heart');
+if nargout < 2, end
+
+
+
Index: /prdatasets/spectrometer.m
===================================================================
--- /prdatasets/spectrometer.m	(revision 142)
+++ /prdatasets/spectrometer.m	(revision 142)
@@ -0,0 +1,44 @@
+%SPECTROMETER Part of the IRAS Low Resolution Spectrometer Database
+%PRTools UCI dataset import, 531 objects, 101 integer features, 10 classes
+%
+%  A = SPECTROMETER
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Low+Resolution+Spectrometer">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%Refer to the dataset documentation before using this routine. The  
+%attributes 1 and 2 are removed (LRS name and LRS class). Consequently
+%featues 1-8 contain header information, feature 9-52 the blue band and
+%feature 53-101 the red band. 
+%
+%Just the basic classes are used as class labels (floor of attribute_2/10).
+%There are five classes with a very few objects (1 2 6 7 and 6 objects).
+%Remove them by A = REMCLASS(A,N) with, e.g., N = 7.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, REMCLASS
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = spectrometer
+
+a = pr_download_uci('Low+Resolution+Spectrometer','lrs.data');
+if size(a,1) ~= 531
+  % no proper mat-file yet, construct it from irregular dat-file
+  userdata = getuser(a,'data');
+  fid = fopen(pr_datfiles);
+  s = fread(fid);
+  s([s==40 | s==41 | s==10]) = [];
+  t = textscan(char(s'),['%s' repmat('%n',1,102)]);
+  a = prdataset([t{3:end}],ceil(t{2}/10));
+  a = setname(a,'Low Resolution Spectrometer');
+  a = setuser(a,userdata,'data');
+  pr_savematfile(a);
+  fclose(fid);
+end
+
+
+
Index: /prdatasets/teachassist.m
===================================================================
--- /prdatasets/teachassist.m	(revision 142)
+++ /prdatasets/teachassist.m	(revision 142)
@@ -0,0 +1,34 @@
+% %TEACHASSIST Teaching Assistant Evaluation
+%PRTools dataset import from UCI, 151 objects, 5 features, 3 classes
+%
+%  A = TEACHASSIST
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Teaching+Assistant+Evaluation">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains a number of categorical features with N > 2
+%categories. They may be converted to N new real features by CAT2REAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = teachassist
+
+a = pr_loadmatfile;
+
+if isempty(a)
+  a = pr_download_uci('Teaching+Assistant+Evaluation','tae.data');
+  a = setfeatdom(a,{char([65:89]')},2);
+  a = setfeatdom(a,{char([65:90]')},3);
+  a = setlablist(a,char('low','medium','high'));
+  a = setname(a,'Teaching Assistant Evaluation');
+  a = pr_savematfile(a);
+end
+
+
+
Index: /prdatasets/tic_tac_toe.m
===================================================================
--- /prdatasets/tic_tac_toe.m	(revision 142)
+++ /prdatasets/tic_tac_toe.m	(revision 142)
@@ -0,0 +1,26 @@
+%TIC_TAC_TOE Teaching Assistant Evaluation
+%PRTools dataset import from UCI, 958 objects, 9 features, 2 classes
+%
+%  A = TIC_TAC_TOE
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Tic-Tac-Toe+Endgame">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%This dataset contains a number of categorical features with N > 2
+%categories. They may be converted to N new real features by CAT2REAL.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = tic_tac_toe
+
+a = pr_download_uci('Tic-Tac-Toe+Endgame','tic-tac-toe.data');
+a = setname(a,'Tic Tac Toe');
+
+
+
Index: /prdatasets/waveform1.m
===================================================================
--- /prdatasets/waveform1.m	(revision 142)
+++ /prdatasets/waveform1.m	(revision 142)
@@ -0,0 +1,25 @@
+%WAVEFORM1 Waveform Database Generator (Version 1) Data Set
+%PRTools dataset import from UCI, 5000 objects, 21 features, 3 classes
+%
+%  A = WAVEFORM1
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Waveform+Database+Generator+(Version+1)">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%REFERENCE
+%Breiman,L., Friedman,J.H., Olshen,R.A., & Stone,C.J. (1984).
+%Classification and Regression Trees. Wadsworth International
+%Group: Belmont, California. (see pages 43-49). 
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+
+function a = waveform1
+
+% UCI data is Z-compressed. No Matlab command found for uncompressing.
+% Load zipped data from PRTools.
+url = 'http://37steps.com/data/prdatasets/waveform.zip';
+a = pr_download_uci('Waveform+Database+Generator+(Version+1)',url);
+a = setname(a,'Simple Waveform Data');
Index: /prdatasets/waveform2.m
===================================================================
--- /prdatasets/waveform2.m	(revision 142)
+++ /prdatasets/waveform2.m	(revision 142)
@@ -0,0 +1,26 @@
+%WAVEFORM2 Waveform Database Generator (Version 2) Data Set
+%PRTools dataset import from UCI, 5000 objects, 40 features, 3 classes
+%
+%  A = WAVEFORM2
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Waveform+Database+Generator+(Version+2)">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%REFERENCE
+%Breiman,L., Friedman,J.H., Olshen,R.A., & Stone,C.J. (1984).
+%Classification and Regression Trees. Wadsworth International
+%Group: Belmont, California. (see pages 43-49). 
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+
+function [a,b] = waveform2
+
+% UCI data is Z-compressed. No Matlab command found for uncompressing.
+% Load zipped data from PRTools.
+url = 'http://37steps.com/data/prdatasets/waveform-+noise.zip';
+a = pr_download_uci('Waveform+Database+Generator+(Version+2)',url);
+a = setname(a,'Advanced Waveform Data');
+
Index: /prdatasets/wine.m
===================================================================
--- /prdatasets/wine.m	(revision 141)
+++ /prdatasets/wine.m	(revision 142)
@@ -18,4 +18,5 @@
   opt.delimeter = ',';
   opt.desc      = 'These data are the results of a chemical analysis of wines grown in the same region in Italy but derived from three different cultivars.  The analysis determined the quantities of 13 constituents found in each of the three types of wines.';
+  opt.link      = 'https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.names';
   opt.labfeat   = 1;
   opt.featnames = char(...
@@ -34,5 +35,5 @@
         'proline');
   opt.classnames = {'cultivar 1','cultivar 2','cultivar 3'};
-  opt.dsetname   = 'Wine recognition data';
+  opt.dsetname   = 'Wine Recognition';
   a = pr_download('http://prtools.tudelft.nl/prdatasets/wine.dat',[],opt);
 end
Index: /prdatasets/x80.m
===================================================================
--- /prdatasets/x80.m	(revision 141)
+++ /prdatasets/x80.m	(revision 142)
@@ -15,4 +15,8 @@
 % 2. A.K. Jain, R.C. Dubes, C.C. Chen, Bootstrap Techniques for Error Estimation
 % IEEE Trans. Pattern Anal. and Mach. Intel., 9(5), pp. 628-633, 1987.
+% 3. W.F. Schmidt, D.F. Levelt, and R.P.W. Duin, An experimental comparison
+% of neural classifiers with traditional classifiers, in: E.S. Gelsema, 
+% L.N. Kanal (eds.), Pattern Recognition in Practice IV, Elsevier,
+% 1994, 391-402. 
 %
 % See also DATASETS, PRDATASETS, IMOX
@@ -25,5 +29,5 @@
 
 a = pr_getdata('http://prtools.tudelft.nl/prdatasets/80x.mat');
-a = setname(a,'80X Dataset');
+a = setname(a,'80X Characters');
 a = setlablist(a,char('8','0','X'));
 a = setfeatlab(a,char(...
Index: /prdatasets/yeast.m
===================================================================
--- /prdatasets/yeast.m	(revision 142)
+++ /prdatasets/yeast.m	(revision 142)
@@ -0,0 +1,25 @@
+%YEAST Predicting the Cellular Localization Sites of Proteins
+%PRTools dataset import from UCI, 1484 objects, 8 features, 10 classes
+%
+%  A = YEAST
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Yeast">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%The sequence names are stored as a second label list (see ADDLABELS) under
+%the name 'sequence'.
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, SETFEATDOM, FEATTYPES, CAT2REAL
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = yeast
+
+a = pr_download_uci('yeast',[],[],[],[],[],[],' ');
+a = feat2lab(a,1,'sequence');
+a = setname(a,'Protein Localization');
+
Index: /prdatasets/zoo.m
===================================================================
--- /prdatasets/zoo.m	(revision 142)
+++ /prdatasets/zoo.m	(revision 142)
@@ -0,0 +1,33 @@
+%ZOO Animal recognition by boolean features
+%PRTools UCI dataset import, 101 objects, 16 features, 7 classes
+%
+%  A = ZOO
+%
+%DESCRIPTION
+%This command downloads one of the UCI data sets, converts it into PRTools
+%format and stores it locally for future use. Consult the <a href="http://archive.ics.uci.edu/ml/datasets/Zoo">related website</a>
+%for further information. Please make the appropriate references in
+%publications that make use of this dataset.
+%
+%The animal names can be retrieved by GETIDENT(A,'animal').
+%The feature names can be retrieved by GETFEATLAB(A).
+%
+%SEE ALSO <a href="http://37steps.com/prtools">PRTools Guide</a>, <a href="http://archive.ics.uci.edu/ml/">UCI Website</a>
+%PRTOOLS, DATASETS, GETIDENT, GETFEATLAB
+
+% Copyright: R.P.W. Duin, r.p.w.duin@37steps.com
+
+function a = zoo
+
+a = pr_download_uci('Zoo');
+
+f = dset2cell(a,1);
+a = setident(a(:,2:end),f,'animal');
+
+featlab = {'hair','feathers','eggs','milk','airborne','aquatic', ...
+  'predator','toothed','backbone','breathes','venomous','fins','legs', ...
+  'tail','domestic','catsize'};
+a = setfeatlab(a,featlab);
+a = setname(a,'Animal Recognition');
+a = setuser(a,'A simple artificial database containing 17 Boolean-valued animal attributes','desc');
+a = setuser(a,'https://archive.ics.uci.edu/ml/machine-learning-databases/zoo/zoo.names','link');
