A method of generating a signal processing algorithm for processing signals representing finger and thumb positions for identifying subjects exhibiting bradykinesia or tremor at a required discrimination confidence, said method comprising the steps of: 1 providing a plurality of patient position data sets, gathered in a time interval of at least 20 seconds, and a sampling ratio of at least 10 Hz to 60 Hz. each set representing a time series of three-dimensional position data of finger and thumb during tapping tests from each of a plurality of subjects exhibiting bradykinesia or tremor; 2 providing a plurality of control position data sets, each set representing time series of three-dimensional position data of finger and thumb during tapping tests from each of a plurality of control subjects; 3 processing said position data sets to produce patient acceleration data sets and control acceleration data sets representing time series of acceleration of the finger relative to the thumb for each corresponding tapping test; 4 providing a set of function blocks for construction of a Cartesian Genetic Programming, CGP, network; 5 providing a fitness function giving a measure of the success of said CGP network in discriminating between said control acceleration data set and said patient acceleration data set; 6 configuring an initial CGP network using said function blocks, said network accepting a plurality of input data comprising adjacent values in an acceleration data set and producing a single output value putatively indicative of the presence or absence of bradykinesia or tremor; 7 evolving said initial CGP network by sequential evolutionary mutation and selection towards increased fitness until said desired discrimination confidence is achieved. 1 providing a plurality of patient position data sets, gathered in a time interval of at least 20 seconds, and a sampling ratio of at least 10 Hz to 60 Hz. each set representing a time series of three-dimensional position data of finger and thumb during tapping tests from each of a plurality of subjects exhibiting bradykinesia or tremor; 2 providing a plurality of control position data sets, each set representing time series of three-dimensional position data of finger and thumb during tapping tests from each of a plurality of control subjects; 3 processing said position data sets to produce patient acceleration data sets and control acceleration data sets representing time series of acceleration of the finger relative to the thumb for each corresponding tapping test; 4 providing a set of function blocks for construction of a Cartesian Genetic Programming, CGP, network; 5 providing a fitness function giving a measure of the success of said CGP network in discriminating between said control acceleration data set and said patient acceleration data set; 6 configuring an initial CGP network using said function blocks, said network accepting a plurality of input data comprising adjacent values in an acceleration data set and producing a single output value putatively indicative of the presence or absence of bradykinesia or tremor; 7 evolving said initial CGP network by sequential evolutionary mutation and selection towards increased fitness until said desired discrimination confidence is achieved.