def PostHits(): mtc = MTurkConnection(aws_access_key_id=ACCESS_ID, aws_secret_access_key=SECRET_KEY, host=HOST) q = ExternalQuestion( external_url="https://paulscotti.github.io/mturk/ContLTMBlocked90", frame_height=675) keywords = [ 'memory', 'psychology', 'game', 'attention', 'experiment', 'research' ] title = 'Memorize the colors of objects! (Psychology Experiment, 1.5 hours)' experimentName = 'Cont_LTM_90' description = 'Research study involving color memory.' pay = 9.00 qualifications = mtqu.Qualifications() qualifications.add( mtqu.PercentAssignmentsApprovedRequirement('GreaterThanOrEqualTo', 98)) qualifications.add( mtqu.NumberHitsApprovedRequirement('GreaterThanOrEqualTo', 1000)) qualifications.add(mtqu.LocaleRequirement("EqualTo", "US")) qualifications.add( mtqu.Requirement( '38XLDN1M8DBWG1FPHU43ZCVTZ4T3DT', 'DoesNotExist', '', 'DiscoverPreviewAndAccept')) # No prior workers of ours qualifications.add( mtqu.Requirement('2F1QJWKUDD8XADTFD2Q0G6UTO95ALH', 'Exists', '', 'DiscoverPreviewAndAccept')) # Masters only theHIT = mtc.create_hit( question=q, lifetime=2 * 60 * 60, # 2 hours max_assignments=1, #needs to be less than 10 else additional fees title=title, description=description, keywords=keywords, qualifications=qualifications, reward=pay, duration=180 * 60, #3 hours (HIT won't be accepted if they go over time) approval_delay=1 * 60 * 60, # 1 hours annotation=experimentName) assert (theHIT.status == True) print theHIT print theHIT[0].HITId
def PostHits_loop(): # To post a HIT, first connect to Turk using our access codes: # The ACCESS_ID and SECRET_KEY are loaded before this function is called # (e.g., from alvarezlab import * ); mtc = MTurkConnection(aws_access_key_id=ACCESS_ID, aws_secret_access_key=SECRET_KEY, host=HOST) for x in range(startHSet, endHSet + 1): HSet = x urlForHIT = "https://scorsese.wjh.harvard.edu/turk/experiments/cfm/Search10/index_cmtrial_Search10.html?HSetNum=%d" % HSet # Now lets setup a structure for our external HIT. We need the URL we want to be # shown within the Turk window and also how tall we want the Turk iframe to be: q = ExternalQuestion(external_url=urlForHIT, frame_height=frameHeight) # And any qualifications we want people to have: qualifications = mtqu.Qualifications() qualifications.add( mtqu.PercentAssignmentsApprovedRequirement( 'GreaterThanOrEqualTo', percentAssignmentsApprovedRequirement)) qualifications.add(mtqu.LocaleRequirement("EqualTo", localeRequirement)) if (qualificationID != "NONE"): qualifications.add( mtqu.Requirement(qualificationID, "EqualTo", 1, notifyWorkerOfQualification)) # Post: theHIT = mtc.create_hit( question=q, lifetime=minToSec(minutesBeforeHitExpires), max_assignments=numAssignmentsToPost, title=titleForWorkers, description=descriptionForWorkers, keywords=keywordsForWorkers, qualifications=qualifications, reward=pay, duration=minToSec(minutesForUsersToFinish), approval_delay=minToSec(minutesBeforeAutoApproved), annotation=projectNameForRequesters) # get more info about the hit hit = mtc.get_hit(theHIT[0].HITId) # Print out the HIT's ID if all went well: # pprint(vars(hit[0])) # print "Experiment info:" # print HOST print "preview hit in HSet ", HSet, ": " # print urlForHIT, "\n" # print "HITId" # print theHIT[0].HITId, "\n" print PREVIEW + "?groupId=" + hit[0].HITGroupId, "\n"
def standard_quals(debug): """Construct qualifications for MTurk task. Args: debug (bool): if True, use a special qualification that only we possess. """ quals = mtqu.Qualifications() if debug: quals.add(mtqu.Requirement("3B9TX86P8NTZUJU62N2SLJ1DZCERL5", "EqualTo", 100, required_to_preview=True)) else: quals.add(mtqu.LocaleRequirement("EqualTo", "US", required_to_preview=True)) quals.add(mtqu.PercentAssignmentsApprovedRequirement("GreaterThan", 95)) quals.add(mtqu.NumberHitsApprovedRequirement("GreaterThan", 10)) return quals
def ManualReward(): mtc = MTurkConnection(aws_access_key_id=ACCESS_ID, aws_secret_access_key=SECRET_KEY, host=HOST) q = ExternalQuestion( external_url="https://paulscotti.github.io/mturk/RewardPage", frame_height=675) keywords = ['compensation', 'experiment', 'research'] title = 'Compensation for Cont_LTM color experiment' experimentName = 'Cont_LTM_Reward' description = 'Compensating a previous worker of the Cont_LTM study.' pay = 10.27 #for adding new people #mtc.assign_qualification('35GMP5037Q9KDB285EZ1DGC38JE39C','A1N1EF0MIRSEZZ'); qualifications = mtqu.Qualifications() qualifications.add( mtqu.Requirement('35GMP5037Q9KDB285EZ1DGC38JE39C', 'Exists', '', 'DiscoverPreviewAndAccept')) rewardHIT = mtc.create_hit( question=q, lifetime=12 * 60 * 60, #12 hours max_assignments=1, #needs to be less than 10 else additional fees title=title, description=description, keywords=keywords, qualifications=qualifications, reward=pay, duration=10 * 60, #10 minutes (HIT won't be accepted if they go over time) approval_delay=12 * 60 * 60, # 12 hours annotation=experimentName) assert (rewardHIT.status == True) print rewardHIT print rewardHIT[0].HITId
'global/MTurkPreview.html', 'minutes_allotted_per_assignment': 40, 'expiration_hours': 1, # 1 day #'grant_qualification_id': '3LQV637WQB4JX22NPA62LG08IF76BE', #sandbox 'grant_qualification_id': '3X03PXFE93BZZPK7U8HT29SECH8OFF', # real mturk (kristianlopezvargas) #'grant_qualification_id': '3SL0IB85URSUSM2RNGYM7CLMXT3JRV', # real mturk (kecolab) 'qualification_requirements': [ qualification.LocaleRequirement("EqualTo", "US"), qualification.PercentAssignmentsApprovedRequirement( "GreaterThanOrEqualTo", 30), qualification.NumberHitsApprovedRequirement("GreaterThanOrEqualTo", 1), qualification.Requirement( '3X03PXFE93BZZPK7U8HT29SECH8OFF', 'DoesNotExist'), # change for sandbox or real mturk ] } # if you set a property in SESSION_CONFIG_DEFAULTS, it will be inherited by all configs # in SESSION_CONFIGS, except those that explicitly override it. # the session config can be accessed from methods in your apps as self.session.config, # e.g. self.session.config['participation_fee'] SESSION_CONFIG_DEFAULTS = { 'real_world_currency_per_point': 0.01, 'participation_fee': 4.00, 'num_bots': 6, 'doc': "", 'mturk_hit_settings': mturk_hit_settings,
'app_sequence': ['cf_update', 'cf_predict', 'cf_survey'], 'participation_fee': 2.00, 'mturk_hit_settings': { 'keywords': ['easy', 'bonus', 'choice', 'study', 'economics'], 'title': '40 Minutes STANFORD UNIVERSITY Economics Study - Earn BONUS of $1.5~$6', 'description': 'We are conducting an academic survey on individual decision making. You will be asked a number of questions on how likely some events happen.', 'frame_height': 800, 'preview_template': 'global/MTurkPreview.html', 'minutes_allotted_per_assignment': 120, 'expiration_hours': 7*24, # 7 days 'grant_qualification_id': '3SFGOZQ0QP9FTMWL37V9SYPG2VPC6V',# to prevent retakes 'qualification_requirements': [ qualification.LocaleRequirement("EqualTo", "US"), qualification.PercentAssignmentsApprovedRequirement("GreaterThanOrEqualTo", 97), qualification.NumberHitsApprovedRequirement("GreaterThanOrEqualTo", 2000), qualification.Requirement('3SFGOZQ0QP9FTMWL37V9SYPG2VPC6V', 'DoesNotExist') ] }, }, { 'name': 'cf_iia_strategy', 'display_name': "Belief Updating (strategy)", 'num_demo_participants': 9, 'app_sequence': ['cf_strategy', 'cf_predict', 'cf_survey'], 'participation_fee': 2.00, 'mturk_hit_settings': { 'keywords': ['easy', 'bonus', 'choice', 'study', 'economics'], 'title': '40 Minutes STANFORD UNIVERSITY Economics Study - Earn BONUS of $1.5~$6', 'description': 'We are conducting an academic survey on individual decision making. You will be asked a number of questions on how likely some events happen.', 'frame_height': 800, 'preview_template': 'global/MTurkPreview2.html',
'minutes_allotted_per_assignment': 40, 'expiration_hours': 1, # 1 day # 'grant_qualification_id': '3LQV637WQB4JX22NPA62LG08IF76BE', #sandbox # real mturk (kristianlopezvargas) 'grant_qualification_id': '3X03PXFE93BZZPK7U8HT29SECH8OFF', # 'grant_qualification_id': '3SL0IB85URSUSM2RNGYM7CLMXT3JRV', # real mturk (kecolab) 'qualification_requirements': [ qualification.LocaleRequirement("EqualTo", "US"), qualification.PercentAssignmentsApprovedRequirement( "GreaterThanOrEqualTo", 30), qualification.NumberHitsApprovedRequirement("GreaterThanOrEqualTo", 1), # change for sandbox or real mturk qualification.Requirement('3X03PXFE93BZZPK7U8HT29SECH8OFF', 'DoesNotExist'), ] } # if you set a property in SESSION_CONFIG_DEFAULTS, it will be inherited by all configs # in SESSION_CONFIGS, except those that explicitly override it. # the session config can be accessed from methods in your apps as self.session.config, # e.g. self.session.config['participation_fee'] SESSION_CONFIG_DEFAULTS = { 'real_world_currency_per_point': 0.01, 'participation_fee': 4.00, 'num_bots': 6, 'doc': "", 'mturk_hit_settings': mturk_hit_settings, 'USE_POINTS': False
'global/MTurkPreview.html', 'minutes_allotted_per_assignment': 30, 'expiration_hours': 6, # 'grant_qualification_id': '', # sandbox 'grant_qualification_id': '', # to prevent retakes 'qualification_requirements': [ # qualification.LocaleRequirement("EqualTo", "US"), qualification.PercentAssignmentsApprovedRequirement( "GreaterThanOrEqualTo", 70), qualification.NumberHitsApprovedRequirement("GreaterThanOrEqualTo", 30), # qualification.Requirement('', 'DoesNotExist') # sandbox qualification.Requirement('', 'DoesNotExist') ] } # if you set a property in SESSION_CONFIG_DEFAULTS, it will be inherited by all configs # in SESSION_CONFIGS, except those that explicitly override it. # the session config can be accessed from methods in your apps as self.session.config, # e.g. self.session.config['participation_fee'] SESSION_CONFIG_DEFAULTS = { 'real_world_currency_per_point': 0.01, 'participation_fee': 0.00, 'doc': "", 'mturk_hit_settings': mturk_hit_settings, }