#define VPW_DATA_C
#include "vpw_wlist.c"
#define MASK 2
#define LSQ5 5
#define LSQ7 7
#define SL5 5
#define SL7 7
#define TARGET 15
#define NTRIALS5 (SL5*TARGET)
#define NTRIALS7 (SL7*TARGET)
#define NTRIALSPRACT (20)
#define NTRIALS (NTRIALSPRACT+NTRIALS5+NTRIALS7)
struct {
int subj;
enum { SMALL, LARGE } mask;
int lsq5p, lsq7p;
enum { PRACT, EXP } fase;
enum { five, seven } wlen;
int lsqs;
int sloc;
int fpos;
int stimno;
char stim[10];
char resp[40];
enum { E, C } corr;
} data[NTRIALS];
void initdata()
{
int i;
for (i = 0; i < NTRIALS; i++) {
data[i].subj = -1;
data[i].mask = -1;
data[i].lsq5p = -1;
data[i].lsq7p = -1;
data[i].fase = -1;
data[i].wlen = -1;
data[i].lsqs = -1;
data[i].sloc = -1;
data[i].fpos = -1;
data[i].stimno = -1;
data[i].stim[0] = '\0';
data[i].resp[0] = '\0';
data[i].corr = -1;
}
}
void writedata()
{
char fname[40];
sprintf(fname, "vpw%02d.dat", data[0].subj);
FILE *fp;
fp = fopen(fname, "a+");
if (fp == NULL) {
printf("error opening output file %s.\n", fname);
exit(EXIT_FAILURE);
}
int i;
for (i = 0; i < NTRIALS; i++) {
fprintf(fp, "%d ", data[i].subj);
fprintf(fp, "%d \t", data[i].mask);
fprintf(fp, "%d ", data[i].lsq5p);
fprintf(fp, "%d ", data[i].lsq7p);
fprintf(fp, "%d \t", data[i].fase);
fprintf(fp, "%03d ", i);
fprintf(fp, "%d ", data[i].wlen);
fprintf(fp, "%d ", data[i].lsqs);
fprintf(fp, "%+d ", data[i].sloc);
fprintf(fp, "%d ", data[i].fpos);
fprintf(fp, "%03d ", data[i].stimno);
fprintf(fp, "%d \t", data[i].corr);
fprintf(fp, "%10s ", data[i].stim);
fprintf(fp, "%s ", data[i].resp);
fprintf(fp, "\n");
}
fclose(fp);
}
#define RNDTEST 1
void randomize(int subj)
{
initdata();
int i, tmplist[NTRIALS];
if (RNDTEST) {
for (i = 0; i < NTRIALSPRACT; i++)
tmplist[i] = i;
for (i = NTRIALSPRACT; i < NTRIALS; i++)
tmplist[i] = i - NTRIALSPRACT;
} else {
ts_rlist(NTRIALSPRACT, 1, &tmplist[0]);
ts_rlist(NTRIALS - NTRIALSPRACT, 1, &tmplist[NTRIALSPRACT]);
}
for (i = 0; i < NTRIALS; i++) {
data[i].subj = subj;
data[i].mask = subj % MASK;
data[i].lsq5p = (subj / MASK) % LSQ5;
data[i].lsq7p = (subj / MASK / LSQ5) % LSQ7;
if (i < NTRIALSPRACT)
data[i].fase = PRACT;
else
data[i].fase = EXP;
if (data[i].fase == PRACT) {
data[i].stimno = tmplist[i];
strcpy(data[i].stim, wpract[data[i].stimno]);
data[i].wlen = 5;
data[i].lsqs = 0;
data[i].sloc = ts_rint(5) - 2;
} else {
if (tmplist[i] < NTRIALS5) {
data[i].stimno = tmplist[i];
strcpy(data[i].stim, w5[data[i].stimno]);
data[i].wlen = 5;
data[i].lsqs = data[i].stimno % 5;
data[i].sloc = (data[i].lsq5p + data[i].lsqs) % 5 - 2;
data[i].fpos = -data[i].sloc + 3;
} else {
data[i].stimno = tmplist[i] - NTRIALS5;
strcpy(data[i].stim, w7[data[i].stimno]);
data[i].wlen = 7;
data[i].lsqs = data[i].stimno % 7;
data[i].sloc = (data[i].lsq7p + data[i].lsqs) % 7 - 3;
data[i].fpos = -data[i].sloc + 4;
}
}
}
}
#ifndef VPW_TRIAL_C
int main()
{
readwords();
randomize(0);
writedata();
return 0;
}
END_OF_MAIN();
#endif