Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PSAT active task #289

Closed
wants to merge 23 commits into from
Closed

Conversation

julientherier
Copy link
Contributor

This pull-request adds a new active task: PSAT (Paced Serial Addition Test).
It is a test that supports both auditory (PASAT) and visual (PVSAT) versions.

Paced Auditory Serial Addition Test (PASAT) is a neuropsychological test used to assess capacity and rate of information processing and sustained and divided attention. Wikipedia

This task is well documented in the scientific literature [Fos et al., 2000, Nagels et al., 2005], and is mainly used to mesure the MSFC score in Multiple Sclerosis.

Practically speaking, this task generates a series of single digits (e.g. 60), at the specific frequency (e.g. 1 new digit every 2 or 3 seconds). The user must add the newly presented digit to the one prior to it.

You can test this new task directly with the ORKCatalog application.

Please feel free to comment code and scientific aspect of this PSAT task.

Task in action:

screen shot 2015-06-15 at 16 13 16

screen shot 2015-06-15 at 16 16 02

@@ -216,6 +216,16 @@
"REACTION_TIME_TASK_ATTEMPTS_FORMAT" = "Attempt %D of %D";
"REACTION_TIME_TASK_ACTIVE_STEP_TITLE" = "Quickly shake the device when the blue circle appears";

/* PVSAT active task. */
"PVSAT_TITLE" = "PVSAT";
"PVSAT_INTRO_TEXT" = "The Paced Visual Serial Addition Test mesures your visual information processing speed and calculation ability.";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"mesures" is misspelled

_answerCaptionLabel.textAlignment = NSTextAlignmentCenter;
_answerCaptionLabel.translatesAutoresizingMaskIntoConstraints = NO;
_digitLabel = [ORKTapCountLabel new];
_digitLabel.textColor= [self tintColor];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a space before =.

@YuanZhu-apple YuanZhu-apple self-assigned this Jun 14, 2015
@YuanZhu-apple
Copy link
Member

@julientherier Are you developing this for an app for MS, or just a new task that’s being added outside the context of an app?

"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-76@2x.png",
"scale" : "2x"
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you make a separate PR to add these app icons? They are not quite relevant to PVSAT task.

@julientherier
Copy link
Contributor Author

@YuanZhu-apple yes, the goal is to build an app for MS based on several new tasks.
But the PVSAT/PASAT task can be useful in many clinical studies, far beyond the MS disease only.

@julientherier julientherier changed the title PVSAT active task PSAT active task Jun 15, 2015
@YuanZhu-apple
Copy link
Member

Below is my questions:

  1. As mentioned in the paper, the number has size 7cm * 5 cm with 48cm reading distance.
    Let's assume the reading distance for iPhone is 24cm, accordingly, the number on screen should be 3.5cm * 2.5cm approximately.
  2. In my understanding, PVSAT simply uses visual to presentation number instead of auditory, the participant still speaks the addition result out.
    Would the use of button tapping instead of speaking increase the difficulty of this test? Explore other approach to reduce the difficulty?
  3. Would it be helpful to analog the face to face test, by prompting a voice instruction after user has a few consecutive “no response” ?
    For example, “Jump back in with the next two numbers you see.”
  4. In the paper, each number displays exact 450 msec. Would it be helpful to expose a display duration parameter in the API interface to allow customization?

@julientherier
Copy link
Contributor Author

Thank you for taking time to review this PR.

  1. I think the number on screen is at the right size. Indeed, PSAT task should use experimental controls rather than normative data to make interpretation. So the most important will be to compare data between groups in ResearchKit-based apps using the PSAT task. And if we want to compare data, interface as to be comparable on every device - else a user would have better results on an iPad Air than iPhone4S probably. The smallest height we get is 320pt (iPhone4/5 in landscape mode - see below) and it is the baseline I used to determine addition step label, number label and keyboard view sizes.
    img_2353
  2. It could be great to use speech recognition API, but unfortunately no one is available natively yet. BTW, probably an iPad/iPhone user is able to use keyboard, or otherwise can be assist by someone to answer additions verbally. Usually, "interference effects associated with the verbal response masking the aural presentation may be contributing to the PASAT's sensitivity to neurological impairments", whereas both PVSAT and PASAT assess speed of information processing (cognitive functioning). Asking the user to tap on the keyboard invert this interference which can now be assessed using the PVSAT, not the PASAT.
  3. I don't think so cause it could lead some participants to employ the “alternate answer” strategy of adding two numbers, skipping one, adding two numbers, skipping one, etc. But it makes me believe the task result should track the Dyads (represent consecutive correct answers) to assess this chunking strategy. I will implement this in the next commit.
  4. You're totally right. I've read some papers where the stimulus duration was 1 seconds, so it is definitely a variable. I will implement this in the next commit.

@julientherier
Copy link
Contributor Author

We can now choose stimulus duration as well as track dyad to overcome the “alternate answer” strategy.

@YuanZhu-apple
Copy link
Member

Thanks for your quick turnaround.

Some UI feedback:
Progress bar has been used in other active tasks to inform user current progress.
How about use it to replace the "addition 5/60" text line?
I feel it would be less distracting comparing to text.

Also I feel the color of the number ought to be black instead of app's tint color.
User may think it is a system borderless button.

progress

@julientherier
Copy link
Contributor Author

I fixed these 2 problems.
Perhaps it would be great to have some kind of ResearchKit HIG?
I read the Coding Guidelines, but a HIG documentation would also bring value for developing active tasks.

@YuanZhu-apple
Copy link
Member

Maybe a guide How to build a new active task guide could cover HIG and task building topics?

@YuanZhu-apple
Copy link
Member

Updated UI looks good.
Except a minor issue I found:

  • the number label should holds its space when the number is not showing.

ios simulator screen shot jun 19 2015 12 03 03 pm
ios simulator screen shot jun 19 2015 12 03 02 pm


/// The PAVSAT (Paced Auditory and Visual Series Addition Test).
ORKPSATVersionPAVSAT
} ORK_ENUM_AVAILABLE;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we make a bitmask instead? It seems basic versions can overlap.

ORKPSATVersionAudio  = (1 << 1),
ORKPSATVersionVisual = (1 << 2),

version = ORKPSATVersionAudio | ORKPSATVersionVisual;

And bitmasks should use the NS_OPTIONS macro.

Name Version could be confusing as incremental test versions.
Consider to naming it ORKPSATOption or ORKPSATStimuliOption?

@julientherier
Copy link
Contributor Author

@YuanZhu-apple I'll be able to improve it on Friday, sorry for the delay.

NSString *answerButtonTitle = nil;
for (NSUInteger i = ORKPSATMinimumAnswer; i <= ORKPSATMaximumAnswer; i++) {
answerButtonTitle = [NSString stringWithFormat:@"PSAT_BUTTON_TITLE_%li", i];
answerButton = [self answerButtonWithTitle:ORKLocalizedString(answerButtonTitle, nil)];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This method may save some effort in localization:

[NSNumberFormatter 
        localizedStringFromNumber:[NSNumber numberWithInt:number]
                      numberStyle:NSNumberFormatterNoStyle];

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right, I'll use the same method for the digit series too.
Thanks a lot for this clue.

@julientherier
Copy link
Contributor Author

@YuanZhu-apple I tried with an iPhone using an Arabic language and I think it's OK. Please could you confirm that?
The phonepsat.pngassets are not localized: do you think it could be a problem?

@YuanZhu-apple
Copy link
Member

@julientherier I confirm that the localized number works. phonepsat.png is fine.
Some internal discussion around this task is going on. Stay tuned.

@julientherier
Copy link
Contributor Author

@YuanZhu-apple any news about this PR for the past month?

@YuanZhu-apple
Copy link
Member

@julientherier Did you get a chance to send an email to researchkit@apple.com ?
Never mind. I saw your email.

@julientherier julientherier mentioned this pull request Aug 13, 2015
@YuanZhu-apple
Copy link
Member

@julientherier Can you update this PR? I am about to merge it.
Thanks!

@YuanZhu-apple
Copy link
Member

Merged in 445d8af

@julientherier
Copy link
Contributor Author

@YuanZhu-apple sorry I'm out of office for some days. Do you need more work for this PR?

@YuanZhu-apple
Copy link
Member

@julientherier That's OK. If find anything wrong from my merge, let me know.

@vtourraine vtourraine deleted the pvsat-active-task branch January 7, 2016 13:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants