OSCR

Blunted Reward Responsiveness During Social Feedback: Associations with Peer Victimization and Anhedonia in Socially Anxious Adolescents.

Code ↔ Paper

3 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 3 matches · 1 of them tie a paragraph to a whole file, not to given lines: a weak match, whose lines are not tinted
  1. [1] § Methods › Measures › fMRI Task › Island Getaway Task (Kujawa et al. ) ↔ IG_Task_Code.py, lines 633–720 · score 0.66 · Island Getaway, Big Island, game, matched, profile, player
  2. [2] § Methods › Data Analytic Plan › fMRI Preprocessing ↔ 2_watershedandANTS.sh, the whole file · a weak match · score 0.63 · Skull stripping, ANTs, MNI, transformation, brain
  3. [3] § Methods › Procedures ↔ IG_Task_Code.py, lines 633–720 · score 0.53 · Island Getaway, instructions, game, profile, filled

Paper

Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

Python · 877 lines · 39 KB · no license · 2 matches

  1. #!/usr/bin/env python
  2. # encoding: UTF-8
  3. if __name__ == '__main__':
  4. try:
  5. #!/usr/bin/env python
  6. # encoding: UTF-8
  7. # Silence warnings
  8. import psychopy.logging
  9. psychopy.logging.console.setLevel(psychopy.logging.CRITICAL)
  10. import schizoidpy
  11. from schizoidpy import StimGroup, TriggerKey
  12. from psychopy.visual import TextStim, ImageStim, Rect, Circle
  13. from psychopy.visual.ratingscale import RatingScale
  14. from psychopy.core import CountdownTimer
  15. from random import random, lognormvariate, expovariate, sample
  16. from collections import Counter
  17. from cgi import escape
  18. from sys import argv
  19. par = dict((('committed', 'Fri Feb 22 14:01:45 2019 -0500'), ('deployed', 'Sat Feb 23 10:07:36 2019'), ('task_version', '51f11b7f67a422727851368261d30dda20489dad'), ('image_dir', 'images/'), ('debug', False), ('eeg', False))); import socket; par["fmri_mode"] = socket.gethostname() == "vt000346844"; par["subject_portrait_path"] = "C:/subject.jpg" if socket.gethostname() in ["TRACLab-wr2", "TracLabWhisper2"] else "subject.jpg"; par["debug_log_dir"] = "output-fmri" if par["fmri_mode"] else "output-eeg" if socket.gethostname() in ["PSY-B4B80M2", "PSY-2S5XQP2"] else "output-age-15" if socket.gethostname() == "PsychA115WR" else "output"; par["output_path_fmt"] = "{}/survivor-{{subject}}.json".format(par["debug_log_dir"]); par["inpout32_addr"] = None if socket.gethostname() == "CAPLAB-Whisp2in" else 53328 if socket.gethostname() in ["StewsLab-PC", "TRACLab-wr2", "TracLabWhisper2"] else 57424 if socket.gethostname() in ["Kujawa-Task-D45KNSD2"] else 57360 if socket.gethostname() in ["PSYCH1457", "PSY-B4B80M2"] else 16376 if socket.gethostname() == "PSY-2S5XQP2" else 888; par["double_draw"] = socket.gethostname() == "CAPLAB-Whisp2in"; par["shrink_screen"] = socket.gethostname() in ["TRACLab-wr2", "TracLabWhisper2"]
  20. o = schizoidpy.Task(
  21. debug_log_dir = par['debug_log_dir'],
  22. send_actiview_trigger_codes = par['eeg'] and not par['fmri_mode'],
  23. inpout32_addr = par['inpout32_addr'],
  24. double_draw = par['double_draw'],
  25. button_radius = .12,
  26. okay_button_pos = (0, -.7),
  27. bg_color = 'black', fixation_cross_color = 'white')
  28. o.save('task_version', par['task_version'])
  29. # ------------------------------------------------------------
  30. # * Data
  31. # ------------------------------------------------------------
  32. portrait_dims = (144, 216)
  33. ages = map(str, [
  34. 15, 14, 17,
  35. 16, 13, 16,
  36. 15, 14, 17,
  37. 15, 13,
  38. 16, 17])
  39. if par['fmri_mode']:
  40. male_names = {'Steve', 'Cody', 'Kyle', 'Aiden', 'Jacob', 'Daniel', 'Nick'}
  41. extra_male_name = 'Rob'
  42. female_names = {'Addison', 'Holly', 'Rachel', 'Lauren', 'Jennifer', 'Molly', 'Jessica'}
  43. extra_female_name = 'Kelsey'
  44. male_portraits = {'klein-age15-m-{}.jpg'.format(i + 1) for i in range(7)}
  45. female_portraits = {'klein-age15-f-{}.jpg'.format(i + 1) for i in range(7)}
  46. schools = {'Kinnelon', 'Christiansburg', 'Lynn haven', 'princess Anne', 'Auburn', 'tallahassee', 'Pearl R. Miller', 'East Lake', 'Palm Harbor', 'Countryside', 'Jupiter', 'Bozeman', 'palm beach gardens'}
  47. interests = {
  48. 'fishing, reading, spending time with friends',
  49. 'rock climbing, nature',
  50. 'design and music',
  51. 'playing guitar and spending time with friends and family',
  52. 'art and reading',
  53. 'chess, spending time with friends',
  54. 'drawing and painting',
  55. 'cooking, meeting new people',
  56. 'singing, choreography',
  57. 'travel and swimming',
  58. 'volunteering, reading, Spanish',
  59. 'sculpting, working out',
  60. 'running, baking, hanging out with friends'}
  61. poll = [
  62. ['Who is your favorite fictional character?',
  63. ["Harry potter", "Katniss Everdeen", "Iron Man", "Jim from The Office", "Groot", "Luke skywalker", "Atticus finch", "Hannibal lector", "Captain jack sparrow", "Jane Eyre", "Sherlock holmes", "Daenerys Targaryen"]],
  64. ['If you could be any animal, what kind of animal would you be?',
  65. ["Golden retriever", "Cat", "Beta fish", "Hummingbird", "Mountain lion", "Panther", "Water snake", "Giraffe", "Wild horse", "Beagle", "Hedgehog"]],
  66. ['What is your favorite class in school school?',
  67. ["Math", "spanish", "English", "science", "Calculus", "Shop class", "Science class", "French", "English", "history"]],
  68. ['If you could live in any time period, which would it be?',
  69. ["The future", "The wild west", "The 1960s", "the 80s", "Paris in the 1920s", "medieval France", "the renaissance", "ancient Greece", "the golden age of film in Hollywood"]],
  70. ['If you suddenly won a million dollars, what would be the first thing you bought with the money?',
  71. ["A really fancy car", "A private island", "A mansion", "A beach house for my parents", "puppies", "designer clothes", "a farm", "a jet ski"]]]
  72. else:
  73. male_names = {'Brandon', 'Tyler', 'Matt', 'Zach', 'Connor', 'Eli', 'Isaiah'}
  74. extra_male_name = 'Peter'
  75. female_names = {'Taylor', 'Clare', 'Emma', 'Jennifer', 'Renee', 'Maya', 'Alysa'}
  76. extra_female_name = 'Sarah'
  77. male_portraits = {'vanderbilt-undergrad-eeg-m-{}.jpg'.format(i + 1) for i in range(7)}
  78. female_portraits = {'vanderbilt-undergrad-eeg-f-{}.jpg'.format(i + 1) for i in range(7)}
  79. schools = {'Centre College', 'Baylor University', 'Northwestern University', 'Ohio State University', 'Southern Methodist University', 'Purdue University', 'University of Northern Colorado', 'Florida International University', 'Valdosta State University', 'DeVry University', 'Stony Brook University', 'University of Oregon', 'University of Missouri'}
  80. interests = {
  81. 'College football, exploring my city',
  82. 'Learning foreign languages and traveling',
  83. 'Reading good books, cooking',
  84. 'Visiting national parks, jogging, baking',
  85. 'Lacrosse, poetry, hanging with friends',
  86. 'business, astronomy, traveling',
  87. 'exploring new places, spending time with family and friends',
  88. 'sketching, hiking',
  89. 'social justice, public policy',
  90. 'yoga, soccer',
  91. 'volunteering, traveling',
  92. 'dogs',
  93. 'photography, French'}
  94. polls = [
  95. ["What is your favorite movie?",
  96. {"Pulp Fiction", "Titanic", "Avengers: Infinity War", "Harry potter and the deathly hallows (part 1 and 2)", "Forrest Gump", "A clockwork orange", "the matrix", "la la land", "Black swan", "Pitch Perfect", "The Lion King", "Star Wars the force awakens"}],
  97. ["If money didn't matter, what would be your dream job?",
  98. {"Broadway singer", "Chef", "Travel agent", "food blogger", "Event planner", "Children's book illustrator", "Antique shop owner", "Architect", "Astronaut", "Chocolatier", "advice columnist"}],
  99. ["If you had a whole day to do whatever you wanted, what would you do?",
  100. {"Sleep", "Go for a run and then hang out with friends", "Go to the airport and get on a random flight to somewhere I've never been before", "Go visit my parents", "Sleep late and watch Netflix", "Go to a coffee shop and read", "Go to the beach", "Do yoga in the park and then cook dinner with friends", "Go to brunch with my friends", "Go on a hike somewhere new"}],
  101. ["What is your least favorite class?",
  102. {"Chem", "Biology", "Macro economics", "Physics II", "Medieval literature", "Early American art history", "Statistics", "History of cinema", "Calculus"}],
  103. ["If you could have dinner with any person, living or dead, who would it be?",
  104. {"Barack Obama", "Nelson Mandela", "spike lee", "Stephen king", "John Lennon", "Beyonce", "Kanye west", "Mark Zuckerberg"}]]
  105. round_descriptions = [
  106. dict(place = 'Kauai',
  107. background = 'Hanalei,_Kauai_HI.jpg',
  108. fluff = "Welcome to Kauai, the geologically oldest of the Hawaiian Islands! You are getting closer to the Big Island of Hawaii. Let's play another round."),
  109. dict(place = 'Oahu',
  110. background = 'Sunset_next_to_Waikiki_Beach,_Oahu,_Hawai,_USA1.jpg',
  111. fluff = "Welcome to Oahu, the third-largest of the Hawaiian Islands! You are getting closer and closer to the Big Island. Let's play another round."),
  112. dict(place = 'Molokai',
  113. background = 'Church_at_the_end_of_the_road.jpg',
  114. fluff = "Welcome to Molokai, an island built from two shield volcanoes and one step closer to the Big Island. Let's play again."),
  115. dict(place = 'Lanai',
  116. background = 'Full_moon_setting_over_Lanai.jpg',
  117. fluff = "Welcome to Lanai, a comma-shaped island that was once covered with pineapple plantations. You're the nearest you've come to the Big Island yet, but which of you will make it there? Let's play another round."),
  118. dict(place = 'Maui',
  119. background = 'Kipahulu_coast.jpg',
  120. fluff = "Welcome to Maui, the second-largest of the Hawaiian Islands! You're almost there! Let's play again to see who will make it to the Big Island of Hawaii.")]
  121. round_wait = 2
  122. # The format of EEG trigger codes is as follows:
  123. #
  124. # Bits 0–2: Encodes the type of event.
  125. events = dict(
  126. # We skip 0 because that's a control code.
  127. subject_votes_to_accept = 0b00000001,
  128. subject_votes_to_reject = 0b00000010,
  129. subject_votes_neutral = 0b00000011,
  130. subject_gets_accept_vote = 0b00000100,
  131. subject_gets_reject_vote = 0b00000101,
  132. subject_gets_neutral_vote = 0b00000110)
  133. # Bit 3: Encodes coplayer gender (0 male, 1 female).
  134. # Bits 4–6: Encodes the coplayer involved in the event. These
  135. # ID numbers are gender-specific (e.g., male coplayer 3 and
  136. # female coplayer 3 are different coplayers).
  137. # Bit 7: Always 0, avoiding confusion with codes 255 and 256
  138. # (which are more control codes).
  139. def trigger_code(coplayer, event):
  140. return (
  141. (coplayer['trigger_id'] << 4) |
  142. (coplayer['female'] << 3) |
  143. events[event])
  144. button_box = {
  145. # Maps fingers to their fMRI button-box codes.
  146. 'left pinkie': '1',
  147. 'left ring': '2',
  148. 'left middle': '3',
  149. 'left index': '4',
  150. 'left thumb': '5',
  151. 'right index': '6',
  152. 'right middle': '7',
  153. 'right ring': '8',
  154. 'right pinkie': '9',
  155. 'right thumb': '0'}
  156. fmri_start_scanning_key = '5'
  157. # ------------------------------------------------------------
  158. # * Helper functions
  159. # ------------------------------------------------------------
  160. def shuffled(x): return sample(x, len(x))
  161. def choice(x): return shuffled(x)[0]
  162. # random.choice doesn't work on sets.
  163. def image_path(image):
  164. return par['image_dir'] + image
  165. big_canvas = Rect(o.win,
  166. width = 1.5, height = 1.8,
  167. fillColor = 'white', opacity = .8)
  168. strip_canvas = Rect(o.win,
  169. width = 1.2, height = .3,
  170. fillColor = 'white', opacity = .8)
  171. background_imagestim = ImageStim(o.win,
  172. image_path('Niihau_sep_2007.jpg'),
  173. units = 'pix',
  174. size = [o.screen_width, o.screen_height])
  175. def background(image_name):
  176. background_imagestim.setImage(image_path(image_name))
  177. return o.showing(background_imagestim, big_canvas)
  178. def message(duration, string):
  179. # Temporarily replace big_canvas with strip_canvas.
  180. with o.hiding(big_canvas):
  181. o.wait_screen(duration,
  182. strip_canvas,
  183. o.text(0, 0, string, wrap = 1.2))
  184. def fake_message(dkey, keys, string):
  185. # Look like `message`, but actually wait for a keypress instead
  186. # of waiting a fixed time.
  187. with o.hiding(big_canvas):
  188. o.keypress_screen(dkey, keys,
  189. strip_canvas,
  190. o.text(0, 0, string, wrap = 1.2))
  191. blank_background = o.hiding(background_imagestim, big_canvas)
  192. def lag(duration):
  193. message(duration, lag_msg)
  194. lag_msg = u'Waiting for all players to finish…'
  195. def write(write_point):
  196. # Don't use o.save in case we're inside a `dkey_prefix`.
  197. o.data['write_point'] = write_point
  198. p = par['output_path_fmt'].format(**o.data)
  199. o.write(p, json_default = json_default)
  200. print 'Data written to', p
  201. def json_default(x):
  202. if x is Reject:
  203. return -1
  204. elif x is Neutral:
  205. return 0
  206. elif x is Accept:
  207. return 1
  208. else:
  209. raise TypeError
  210. def simplify_gender(gender):
  211. # When the text string `gender` clearly identifies a binary gender,
  212. # return "Male" or "Female". Otherwise, just normalize capitalization.
  213. g = gender.lower()
  214. if g in ['m', 'male', 'b', 'boy', 'man']:
  215. return 'Male'
  216. if g in ['f', 'female', 'g', 'girl', 'w', 'woman']:
  217. return 'Female'
  218. return gender[0].upper() + gender[1:].lower()
  219. #class TransformedRatingScale(RatingScale):
  220. #def __init__(self, *args, **kwargs):
  221. #self.transform = kwargs.pop('transform', None)
  222. #RatingScale.__init__(self, *args, **kwargs)
  223. #def getRating(self):
  224. #v = RatingScale.getRating(self)
  225. #if v is None or not self.transform:
  226. #return v
  227. #return self.transform(v)
  228. #def rating_scale(y, num_options, **kwargs):
  229. #rs = TransformedRatingScale(o.win, pos = (0, y),
  230. #low = 1, high = num_options,
  231. #textColor = 'black', lineColor = 'black',
  232. #marker = 'circle', markerColor = 'black',
  233. #stretch = 2,
  234. #respKeys =
  235. #[button_box[k] for k in (
  236. # 'left ring', 'left middle',
  237. # 'left index')[:num_options]]
  238. #if par['fmri_mode']
  239. #else [str(i) for i in range(1, num_options + 1)],
  240. #acceptKeys = button_box['right index']
  241. #if par['fmri_mode']
  242. #else 'return',
  243. #showValue = False, skipKeys = None, scale = None,
  244. #showAccept = False,
  245. #**kwargs)
  246. #return rs
  247. #def rating_scale_controls_text(num_options):
  248. #fmri_choice_controls = (
  249. #{5: 'left hand', 6: 'left hand or right index'}[num_options])
  250. #return o.text(0, -.7, wrap = 2, string =
  251. #'{} - Choose an option\n{} - Confirm'.format(
  252. #fmri_choice_controls if par['fmri_mode'] else 'number keys',
  253. #'right index' if par['fmri_mode'] else 'Enter'))
  254. # ------------------------------------------------------------
  255. # * Coplayers
  256. # ------------------------------------------------------------
  257. class VoteType(object):
  258. def __init__(self, letter):
  259. self.letter = letter
  260. def __str__(self):
  261. return self.letter
  262. Reject = VoteType('R')
  263. Reject.key = button_box['left index'] if par['fmri_mode'] else 'f'
  264. Neutral = VoteType('N')
  265. Accept = VoteType('A')
  266. Accept.key = button_box['right index'] if par['fmri_mode'] else 'j'
  267. coplayers = dict(
  268. mean3 = dict(expendable = False,
  269. votes = (Reject, Reject, Reject, Neutral, Reject, Reject)),
  270. mean2 = dict(expendable = False,
  271. votes = (Reject, Reject, Neutral, Reject, Reject, Neutral)),
  272. mean1 = dict(expendable = False,
  273. votes = (Neutral, Reject, Reject, Accept, Reject, Neutral)),
  274. indiff = dict(expendable = False,
  275. votes = (Neutral, Neutral, Neutral, Reject, Accept, Neutral)),
  276. nice1 = dict(expendable = False,
  277. votes = (Accept, Neutral, Accept, Accept, Neutral, Reject)),
  278. nice2 = dict(expendable = False,
  279. votes = (Accept, Accept, Accept, Neutral, Neutral, Accept)),
  280. nice3 = dict(expendable = False,
  281. votes = (Accept, Accept, Neutral, Accept, Accept, Accept)),
  282. xpendable_rna = dict(expendable = True,
  283. votes = (Reject, Neutral, Accept, Reject, Neutral, Accept)),
  284. xpendable_ran = dict(expendable = True,
  285. votes = (Reject, Accept, Neutral, Reject, Accept, Neutral)),
  286. xpendable_nra = dict(expendable = True,
  287. votes = (Neutral, Reject, Accept, Neutral, Reject, Accept)),
  288. xpendable_nar = dict(expendable = True,
  289. votes = (Neutral, Accept, Reject, Neutral, Accept, Reject)),
  290. xpendable_arn = dict(expendable = True,
  291. votes = (Accept, Reject, Neutral, Accept, Reject, Neutral)),
  292. xpendable_anr = dict(expendable = True,
  293. votes = (Accept, Neutral, Reject, Accept, Neutral, Reject)))
  294. for k, p in sorted(coplayers.items()):
  295. p['id'] = k
  296. p['poll_responses'] = len(p['votes']) * [None]
  297. coplayers = coplayers.values()
  298. # Enable this block to show the properties of the matrix of votes
  299. # among the non-expendable coplayers.
  300. if False:
  301. mat = [cp['votes']
  302. for x in ('mean3', 'mean2', 'mean1', 'indiff', 'nice1', 'nice2', 'nice3')
  303. for cp in coplayers
  304. if cp['id'] == x]
  305. print 'Totals'
  306. for votetype in Reject, Neutral, Accept:
  307. print votetype, sum(1 for row in mat for v in row if v is votetype)
  308. print ''
  309. print 'Columns'
  310. ncol = len(mat[0])
  311. for votetype in Reject, Neutral, Accept:
  312. print votetype, ' '.join(
  313. str(sum(1 for row in mat if row[i] == votetype))
  314. for i in range(ncol))
  315. print ''
  316. print 'Rows'
  317. from collections import Counter
  318. for row in mat:
  319. d = Counter(row)
  320. print 'R {}, N {}, A {}'.format(d[Reject], d[Neutral], d[Accept])
  321. exit()
  322. # Decide what order the expendables will be kicked out. We choose
  323. # a random order that will result in the subject getting an equal
  324. # number of each type of vote.
  325. while True:
  326. kickout_order = shuffled([p for p in coplayers if p['expendable']])
  327. counts = Counter([vote
  328. for i, cp in enumerate(kickout_order)
  329. for vote in cp['votes'][: i + 1]])
  330. if len(counts.keys()) == len('RNA') and len(set(counts.values())) == 1:
  331. break
  332. o.save('coplayer_kickout_order', [p['id'] for p in kickout_order])
  333. # Make the coplayers evenly split by gender within the expendable
  334. # and non-expendable groups.
  335. for i, p in enumerate(shuffled([p for p in coplayers if p['expendable']])):
  336. p['female'] = bool(i % 2)
  337. for i, p in enumerate(shuffled([p for p in coplayers if not p['expendable']])):
  338. p['female'] = bool(i % 2)
  339. # Because there's an odd number of non-expendable coplayers,
  340. # we're left with one more male than we have females. Later,
  341. # if we learn that the subject is male, we'll make one of
  342. # the male non-expendables female.
  343. def pronoun_nom(p): return 'she' if p['female'] else 'he'
  344. def pronoun_obj(p): return 'her' if p['female'] else 'him'
  345. def pronoun_gen(p): return 'her' if p['female'] else 'his'
  346. # Assign names and portraits.
  347. males = zip(shuffled(male_names), shuffled(male_portraits))
  348. females = zip(shuffled(female_names), shuffled(female_portraits))
  349. for p in coplayers:
  350. p['name'], p['portrait'] = females.pop() if p['female'] else males.pop()
  351. portrait_stim_cache = {}
  352. def portrait_stim(x, y, p, border_color = 'black'):
  353. img = par['subject_portrait_path'] if p is None else image_path(p['portrait'])
  354. k = x, y, border_color, img
  355. if k not in portrait_stim_cache:
  356. portrait_stim_cache[k] = StimGroup((
  357. ImageStim(o.win, pos = (x, y),
  358. image = img),
  359. Rect(o.win, pos = (x, y),
  360. width = (portrait_dims[0] + 3) / (.5 * o.screen_width),
  361. height = (portrait_dims[1] + 3) / (.5 * o.screen_height),
  362. lineColor = border_color, lineWidth = 3)))
  363. return portrait_stim_cache[k]
  364. # Assign fluff.
  365. for p, age, school, interest in zip(
  366. coplayers, shuffled(ages), shuffled(schools), shuffled(interests)):
  367. p['fluff'] = dict(
  368. Age = age, School = school, Interests = interest)
  369. o.save('coplayers', {p['id']: p for p in coplayers})
  370. # We don't copy the coplayer-objects because we want later edits
  371. # (such as the addition of poll responses) to be recorded.
  372. # ------------------------------------------------------------
  373. # * The likability-rating subroutine
  374. # ------------------------------------------------------------
  375. #def rate_likabilities(time):
  376. #num_options = 3
  377. #cps = shuffled(o.data['coplayers'].values())
  378. # We don't just say `shuffled(coplayers)` because we want
  379. # the subject to rate coplayers that have been kicked out.
  380. #o.save(('likability_rating', time, 'rating_order'),
  381. #[p['id'] for p in cps])
  382. #for p in cps:
  383. #o.scale_screen(('likability_rating', time, 'ratings', p['id']),
  384. #portrait_stim(-.5, .5, p),
  385. #o.text(0, 0, 'How much do you like {}?'.format(p['name'])),
  386. #rating_scale(y = -.2,
  387. #num_options = num_options,
  388. #labels = ['Not at all', 'Somewhat', 'Extremely']),
  389. #rating_scale_controls_text(num_options = num_options))
  390. # ------------------------------------------------------------
  391. # * The voting subroutine
  392. # ------------------------------------------------------------
  393. icon_dim = 200 # Pixels
  394. icon_thickness = 10 # Pixels
  395. def icon_frame(x, color):
  396. kw = dict(units = 'pix', fillColor = color, lineColor = color)
  397. return [
  398. Rect(o.win, icon_dim, icon_thickness,
  399. pos = (x, icon_dim/2 - icon_thickness/2), **kw),
  400. Rect(o.win, icon_dim, icon_thickness,
  401. pos = (x, -icon_dim/2 + icon_thickness/2), **kw),
  402. Rect(o.win, icon_thickness, icon_dim,
  403. pos = (x + icon_dim/2, 0), **kw),
  404. Rect(o.win, icon_thickness, icon_dim,
  405. pos = (x - icon_dim/2, 0), **kw)]
  406. def reject_icon(x = 0, y = 0):
  407. return ImageStim(o.win, pos = (x, y),
  408. image = image_path('thumbs-down.png'))
  409. Reject.icon_c = reject_icon()
  410. def accept_icon(x = 0, y = 0):
  411. return ImageStim(o.win, pos = (x, y),
  412. image = image_path('thumbs-up.png'))
  413. Accept.icon_c = accept_icon()
  414. def neutral_icon(x = 0, y = 0):
  415. return Rect(o.win, width = .25, height = .5, pos = (x, y),
  416. fillColor = 'yellow',
  417. lineColor = 'gray', lineWidth = 10)
  418. Neutral.icon_c = neutral_icon()
  419. #extended time limit
  420. voting_time_limit = 7 # In seconds
  421. mean_postfeedback_wait = 5 if par['fmri_mode'] else 1.5 # In seconds
  422. def voting(nround):
  423. practice = nround is None
  424. if practice:
  425. cps = [
  426. dict(id = 'practice_a',
  427. name = 'Player A', female = False,
  428. portrait = 'example-male.png',
  429. vote = Accept),
  430. dict(id = 'practice_b',
  431. name = 'Player B', female = True,
  432. portrait = 'example-female.png',
  433. vote = Reject)]
  434. else:
  435. cps = shuffled(coplayers)
  436. o.save('vote_order', [p['id'] for p in cps])
  437. if par['fmri_mode']:
  438. # Create a randomly ordered set of post-feedback waits with
  439. # mean equal to `mean_postfeedback_wait`.
  440. postfeedback_waits = [mean_postfeedback_wait + x
  441. for i in range(1, len(cps) // 2 + 1)
  442. for x in (-.25 * i, .25 * i)]
  443. if len(cps) % 2:
  444. postfeedback_waits.append(mean_postfeedback_wait)
  445. postfeedback_waits = shuffled(postfeedback_waits)
  446. o.save('postfeedback_waits', postfeedback_waits)
  447. else:
  448. # Make every post-feedback wait equal to the mean.
  449. postfeedback_waits = [mean_postfeedback_wait] * len(cps)
  450. if par['fmri_mode'] and not practice:
  451. fake_message('begin_fmri',
  452. fmri_start_scanning_key,
  453. lag_msg)
  454. with blank_background:
  455. if par['fmri_mode']:
  456. o.wait_screen(5,
  457. o.text(0, 0, color = 'white', string = "Use the buttons under your index fingers to vote. Voting will begin in a few seconds."))
  458. else:
  459. o.keypress_screen('start',
  460. {Accept.key: 'Keep', Reject.key: 'Kick\nOut'},
  461. o.text(0, 0, color = 'white', string = "Position your index fingers over the \"{Reject.key}\" and \"{Accept.key}\" keys. Then, press either one to begin voting.".format(**globals())))
  462. for i, p in enumerate(cps):
  463. # The subject votes.
  464. stimuli = [
  465. portrait_stim(-.5, .5, p, border_color = 'white'),
  466. o.html(.2, .8, vAlign = 'top', color = 'white', font_size = 14, string =
  467. # Show the coplayer's profile.
  468. '<b>{}</b><br><br>'.format(p['name']) +
  469. '<b>{}</b><br>'.format('Female' if p['female'] else 'Male') +
  470. ('' if practice else '<br>'.join(
  471. ['<b>{}:</b> {}'.format(k, escape(p['fluff'][k])) for k in
  472. ['Age', 'School', 'Interests']])))]
  473. voting_timer = CountdownTimer(voting_time_limit)
  474. o.keypress_screen(('subject_votes', p['id']),
  475. {
  476. voting_timer: TriggerKey('Neutral', None if practice else
  477. trigger_code(p, 'subject_votes_neutral')),
  478. Reject.key: TriggerKey('Kick\nOut', None if practice else
  479. trigger_code(p, 'subject_votes_to_reject')),
  480. Accept.key: TriggerKey('Keep', None if practice else
  481. trigger_code(p, 'subject_votes_to_accept'))},
  482. o.text(0, -.5, color = 'white', wrap = 2, string =
  483. 'Vote on ' + p['name']),
  484. o.text(-.25, -.7, color = 'white', string =
  485. '{} - Kick Out'.format(
  486. 'left' if par['fmri_mode'] else Reject.key)),
  487. o.text(.25, -.7, color = 'white', string =
  488. '{} - Keep'.format(
  489. 'right' if par['fmri_mode'] else Accept.key)),
  490. *stimuli)
  491. o.wait_screen_till(voting_timer,
  492. o.text(0, -.5, color = 'white', wrap = 2, string =
  493. 'Vote registered'),
  494. *stimuli)
  495. # Show a fixation cross.
  496. o.wait_screen(5, o.fixation_cross)
  497. # Now show the coplayer's vote extended 2 to 5.
  498. pv = p['vote'] if practice else p['votes'][nround]
  499. if not practice: o.trigger(trigger_code(p, {
  500. Reject: 'subject_gets_reject_vote',
  501. Neutral: 'subject_gets_neutral_vote',
  502. Accept: 'subject_gets_accept_vote'}[pv]))
  503. o.wait_screen(5, pv.icon_c)
  504. # Show a fixation cross again.
  505. o.wait_screen(postfeedback_waits[i], o.fixation_cross)
  506. if not practice:
  507. # An expendable coplayer is ousted.
  508. loser = kickout_order[nround]
  509. coplayers.remove(loser)
  510. o.wait_screen(5,
  511. portrait_stim(0, .5, loser),
  512. o.text(0, -.2, "And it's final decision time. Looks like {} got the most votes to go home! {} journey ends here. You get to continue on to the next island!".format(
  513. loser['name'],
  514. pronoun_gen(loser).capitalize())))
  515. # ------------------------------------------------------------
  516. # * Preliminaries
  517. # ------------------------------------------------------------
  518. o.save('mode', 'fmri' if par['fmri_mode'] else 'eeg')
  519. par['subject_portrait_path'] = 'subject-{}.jpg'.format(o.data['mode'])
  520. if par['debug']:
  521. o.data['subject'] = 'test'
  522. else:
  523. o.get_subject_id('Island Getaway - ' + o.data['mode'])
  524. subject_name = '???'
  525. o.start_clock()
  526. # ------------------------------------------------------------
  527. # * Introduction
  528. # ------------------------------------------------------------
  529. with background('Hawaje-NoRedLine.jpg'):
  530. message(2, 'Aloha!')
  531. with o.dkey_prefix('introduction'):
  532. o.instructions('set_the_scene', "Let's pretend you've just landed on the Hawaiian Island of Niihau to begin a summer vacation with a group of {} other teens. But the journey isn't over yet! First, you must make your way along the islands to get to the Big Island of Hawaii. Once there, your vacation will begin!".format(
  533. len(coplayers)))
  534. o.instructions('game_overview', "As you travel along the islands, you'll get to know more and more about the other players. After each round, you'll vote for who you would like to continue on to the Big Island with you and who you would like to send home. But the other players will also be voting on you! And your goal is to stay in the game and be one of the {} players (out of the original {}) who make it to the Big Island!".format(
  535. len(coplayers) + 1 - (len(round_descriptions) + 1),
  536. len(coplayers) + 1))
  537. with o.dkey_prefix('profile'):
  538. o.text_entry_screen('gender', 'Now you can fill out your profile.\n\nWhat is your gender?')
  539. o.data['profile']['gender'] = simplify_gender(o.data['profile']['gender'])
  540. if o.data['profile']['gender'] == 'Male':
  541. # Make a male non-expendable female so that there's
  542. # of equal number of male and female players.
  543. transgal = choice([p for p in coplayers if not p['female']])
  544. transgal['female'] = True
  545. transgal['name'] = choice(female_names - {p['name'] for p in coplayers if p['female']})
  546. transgal['portrait'] = choice(female_portraits - {p['portrait'] for p in coplayers if p['female']})
  547. o.text_entry_screen('name', 'What is your first name?')
  548. subject_name = o.data['profile']['name']
  549. # Try to normalize capitalization.
  550. if subject_name.isalpha() and (
  551. subject_name.islower() or
  552. (len(subject_name) > 2 and subject_name.isupper())):
  553. # Don't downcase "AJ".
  554. subject_name = subject_name.lower().capitalize()
  555. # If the subject's name exactly matches the name of a
  556. # coplayer (case-insensitively), rename the coplayer.
  557. try:
  558. p = next(p for p in coplayers if
  559. p['name'].lower() == subject_name.lower())
  560. p['name'] = extra_female_name if p['female'] else extra_male_name
  561. except StopIteration:
  562. pass
  563. o.nonneg_int_entry_screen('age', 'How old are you?')
  564. o.text_entry_screen('school', 'What school do you go to?')
  565. o.text_entry_screen('interests', "What are some things you're interested in?")
  566. o.okay_screen('view',
  567. portrait_stim(0, .5, None),
  568. o.html(0, 0,
  569. subject_name + "<br><br>" +
  570. '<b>{}</b><br>'.format(o.data['profile']['gender']) +
  571. '<br>'.join(
  572. '<b>{}:</b> {}'.format(k.capitalize(), escape(o.data['profile'][k])) for k in
  573. ['age', 'school', 'interests'])))
  574. # Don't keep the profile data due to IRB shenanigans (for
  575. # the Kujawa lab at Penn State).
  576. del o.data['profile']
  577. lag(3)
  578. # Now that the coplayers' genders are set, we can assign trigger
  579. # codes.
  580. seen_genders = [0, 0]
  581. for p in coplayers:
  582. p['trigger_id'] = seen_genders[p['female']]
  583. seen_genders[p['female']] += 1
  584. write('intro')
  585. # ------------------------------------------------------------
  586. # * Round 0
  587. # ------------------------------------------------------------
  588. with o.dkey_prefix(('round', 0)), background('Niihau_sep_2007.jpg'):
  589. message(round_wait, 'Round 1: Niihau')
  590. o.instructions('read_profiles', 'Take a moment to learn about the other players.')
  591. cps = shuffled(coplayers)
  592. o.save('profile_order', [p['id'] for p in cps])
  593. for i, p in enumerate(cps):
  594. o.okay_screen(('fluff', i),
  595. portrait_stim(0, .5, p),
  596. o.html(0, 0,
  597. '<b>{}</b><br><br>'.format(p['name']) +
  598. '<b>{}</b><br>'.format('Female' if p['female'] else 'Male') +
  599. '<br>'.join(
  600. '<b>{}:</b> {}'.format(k, escape(p['fluff'][k])) for k in
  601. ['Age', 'School', 'Interests'])))
  602. if par['fmri_mode']:
  603. ready_key = 'r'
  604. o.keypress_screen('fmri_setup',
  605. ready_key,
  606. o.text(0, 0, string = 'You may now enter the fMRI scanner.\n\nExperimenter, press the "{}" key when ready.'.format(ready_key)))
  607. #rate_likabilities('pre')
  608. o.instructions('voting_begins', html = True, string = "And on to the first round of voting. Who do you want to send home? And who do you want to continue with on to the next island? You will now vote to kick out or keep each player. You have {voting_time_limit} seconds to vote. The player with the greatest percentage of votes to be sent home will be kicked off the island, with ties broken randomly.<br><br>Each time you vote, you will then find out how that player voted for you.".format(**globals()))
  609. o.okay_screen('feedback_explanation',
  610. o.text(0, .7, "For each player, after you've made your own vote, you'll see an icon that shows their vote."),
  611. accept_icon(-.5, .1),
  612. o.text(-.5, -.2, "This means a vote to keep you.",
  613. vAlign = 'top', wrap = .5),
  614. neutral_icon(0, .1),
  615. o.text(0, -.2, "This means no vote (possibly due to a network error).",
  616. vAlign = 'top', wrap = .5),
  617. reject_icon(.5, .1),
  618. o.text(.5, -.2, "This means a vote to kick you out.",
  619. vAlign = 'top', wrap = .5))
  620. with o.dkey_prefix('voting_practice'):
  621. o.instructions('intro', "First, you'll see two examples of how voting works.")
  622. voting(None)
  623. o.instructions('done', 'Now for the first round of real voting.')
  624. voting(0)
  625. write('voting-round-0')
  626. # ------------------------------------------------------------
  627. # * All other rounds
  628. # ------------------------------------------------------------
  629. for i, (r, (poll_question)) in enumerate(zip(round_descriptions, poll)):
  630. nround = i + 1
  631. with o.dkey_prefix(('round', nround)), background(r['background']):
  632. message(round_wait, 'Round {}: {}'.format(nround + 1, r['place']))
  633. o.instructions('fluff', r['fluff'])
  634. #o.text_entry_screen('poll_question',
  635. # "Now on to the next round!.\n\n")
  636. #for p, resp in zip(coplayers, shuffled(poll_responses)):
  637. # p['poll_response'][nround] = resp
  638. #varwait = max(expovariate(2) for _ in coplayers)
  639. #o.save('poll_varwait', varwait)
  640. #lag(varwait)
  641. #responses = shuffled(
  642. # [(p['id'], p['name'], p['poll_response'][nround]) for p in coplayers] +
  643. # [('SUBJECT', subject_name, o.data['round'][nround]['poll_question'])])
  644. #o.save('poll_response_order', [r[0] for r in responses])
  645. #o.okay_screen('poll_results',
  646. # o.text(0, .8, "Here are your responses:"),
  647. # o.text(0, .65,
  648. # "\n".join(["{}: {}".format(r[1], r[2]) for r in responses]),
  649. # height = .06,
  650. # wrap = 1.4, vAlign = 'top'))
  651. voting(nround)
  652. write('voting-round-' + str(nround))
  653. # ------------------------------------------------------------
  654. # * A winner is you!
  655. # ------------------------------------------------------------
  656. with background('Rainbow_over_palms_at_Big_Island_of_Hawaii.jpg'):
  657. message(3, 'You made it to the Big Island of Hawaii!\nLet the vacation begin!')
  658. #rate_likabilities('post')
  659. # ------------------------------------------------------------
  660. # * Post-game questionnaire
  661. # ------------------------------------------------------------
  662. #refuse = 'I prefer not\nto answer'
  663. #scale_levels = ('Not at all', 'Somewhat', 'Extremely', refuse)
  664. #na_scale_level = scale_levels.index(refuse) + 1
  665. #questions = [
  666. # {'id': ('need threat', 1), 'text': 'I felt as one with the other players.'},
  667. # {'id': ('task disengagement', 5), 'text': 'I really wanted to stay in the game.'},
  668. # {'id': ('need threat', 5), 'text': 'I felt like an outsider during the game.'},
  669. # {'id': ('task disengagement', 2), 'text': 'After a while I lost interest in staying in the game.'},
  670. # {'id': ('need threat', 3), 'text': 'I did not feel accepted by the other players.'},
  671. # {'id': ('need threat', 2), 'text': 'I had the feeling that I belonged to the group during the game.'},
  672. # {'id': ('need threat', 4), 'text': 'During the game I felt connected with one or more other players.'},
  673. # {'id': ('task disengagement', 3), 'text': "I would've liked to play this game again."}]
  674. #with o.dkey_prefix('postgame_questionnaire'), background('Rainbow_over_palms_at_Big_Island_of_Hawaii.jpg'):
  675. #for q in questions:
  676. #o.scale_screen(q['id'],
  677. #o.text(0, .5, 'In this questionnaire, pick the options that best represent the feelings you were experiencing during the game.'),
  678. #o.text(0, 0, q['text']),
  679. #rating_scale(y = -.2,
  680. #num_options = len(scale_levels),
  681. #choices = scale_levels,
  682. #textSize = .8,
  683. #transform = lambda v:
  684. #'NA' if v == refuse else scale_levels.index(v) + 1),
  685. #rating_scale_controls_text(num_options = len(scale_levels)))
  686. # ------------------------------------------------------------
  687. # * Done!
  688. # ------------------------------------------------------------
  689. o.done()
  690. write('done')
  691. o.wait_screen(1,
  692. o.text(0, 0, color = 'white', string = 'Done!\n\nPlease let the experimenter know you are done.'))
  693. finally:
  694. try:
  695. o.trigger_worker.terminate()
  696. except:
  697. pass

IG_Task_Code.py at commit d0e26e7, no license · at the source

Overview

Authors: Corinne N. Carlton1,2, Ligia Antezana3,2, John A. Richey2
  1. Department of Psychology and Human Development Vanderbilt University Nashville Tennessee USA
  2. Department of Psychology Virginia Tech Blacksburg Virginia USA
  3. Department of Psychiatry University of Pittsburgh School of Medicine Pittsburgh Pennsylvania USA
Institutions: Vanderbilt University (United States); Virginia Tech (United States); University of Pittsburgh (United States)
Journal: Brain and behavior, volume 16, issue 8, article e71581
Dates: received 23 February 2026; accepted 20 June 2026; published online 28 July 2026; in print August 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1002/brb3.71581 · PMID 42518193 · PMCID PMC13411298 · OpenAlex W7171513009
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: structural MRI / diffusion (modality), human (organism), other condition (population), developmental (subfield)
Methods: Evoked potentials, fMRI & imaging
Keywords: adolescence, anhedonia, peer victimization, reward, social anxiety, social stress
MeSH: Anhedonia*, Anxiety*, Bullying*, Crime Victims*, Feedback, Psychological*, Reward*, Ventral Striatum*, Adolescent, Female, Humans, Magnetic Resonance Imaging, Male, Peer Group, Pilot Projects, Stress, Psychological (* major topic)
Topic: Anxiety, Depression, Psychometrics, Treatment, Cognitive Processes (Experimental and Cognitive Psychology, Psychology), according to OpenAlex
Funding: Thomas H. Ollendick (PhD) and Mary Catherine Haley Ollendick Graduate Fellowship in Clinical Child and Adolescent Psychology; Graduate Research Development Program Dissertation Grant; Society for a Science of Clinical Psychology Dissertation Grant; National Institute of Mental Health (T32MH018921‐34, F32MH137993, T32MH018951)
Citations: not cited yet (Europe PMC); 84 references in the paper

Abstract

Background: The present pilot study aimed to (1) Characterize neural markers of reward sensitivity during periods of social stress; (2) Evaluate clinical relations between neural reward markers and anhedonia; and (3) Investigate if peer victimization was associated with ventral striatum (VS) suppression and anhedonia symptoms during social stress.

Methods: A total of 28 adolescents between the ages of 13 and 17 (M age = 15.31; SD = 1.51; 55.2% cisgender girls) were included in analyses and completed a semi‐structured interview, self‐report questionnaires regarding social anxiety, stress, depression, and anhedonia, and a magnetic resonance imaging (MRI) scan while engaging in the Island Getaway task. VS BOLD signal activation estimates were then extracted during discrete phases of the task (e.g., anticipation of social feedback and outcome of social feedback) and statistically compared within‐subjects.

Results: Results revealed that when in the presence of social stress (defined as the potential for negative feedback), socially anxious adolescents demonstrated significantly suppressed VS activation relative to feedback anticipation. Additionally, the reduced VS activation during the outcome phase was significantly correlated with anhedonia. Moreover, relational peer victimization was associated with suppressed VS activation.

Conclusions: Findings identify novel mechanisms associated with anhedonia and blunted reward processing in socially anxious youth that could be improved via interventions that target positive‐valence systems.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repository

Its files are read in the Code ↔ Paper reader above, with 3 matches between paragraphs and lines of code.

daisylabhub/ARSA

License: none: the authors keep all their rights
State: the link answers, verified on 26 September 2026
Evidence: files inventoried
Commit: d0e26e75253a8350e8afce7eaea32fdb3e5620e3, 3 May 2023
Languages: Shell (3), Python (2), SAS (1)
Size: 6 files, 6 scripts
Software Heritage: not archived
Found in: the text, “fMRI Preprocessing”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: FreeSurfer (3 files), ANTs (2 files), dcm2niix (1 file), FSL (1 file), Nipype (1 file), NumPy (1 file), PsychoPy (1 file), SciPy (1 file), SPM (1 file)
Availability: 1 check, the latest on 26 September 2026: the link answers
  • 26 September 2026: the link answers
6 files

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 6 scripts, each with its path and the digest of its content;
  • 3 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

No dataset and no data link were found in the paper.

Data Availability Statement

Data are available upon request.

Reproduced under the paper's license (CC BY), from the paper cited above.

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 3 authors, 6 keywords, 15 MeSH terms, 4 funders, 78 references.

Cite

This paper

Carlton, C. N., Antezana, L., & Richey, J. A. (2026). Blunted Reward Responsiveness During Social Feedback: Associations with Peer Victimization and Anhedonia in Socially Anxious Adolescents. Brain and behavior, 16(8), e71581. https://doi.org/10.1002/brb3.71581

BibTeX

@article{carlton2026blunted,
author = {Carlton, Corinne N. and Antezana, Ligia and Richey, John A.},
title = {{Blunted Reward Responsiveness During Social Feedback: Associations with Peer Victimization and Anhedonia in Socially Anxious Adolescents}},
journal = {Brain and behavior},
year = {2026},
month = aug,
volume = {16},
number = {8},
pages = {e71581},
publisher = {Wiley},
issn = {2162-3279},
doi = {10.1002/brb3.71581},
url = {https://doi.org/10.1002/brb3.71581},
pmid = {42518193},
pmcid = {PMC13411298}
}

RIS

TY - JOUR
AU - Carlton, Corinne N.
AU - Antezana, Ligia
AU - Richey, John A.
TI - Blunted Reward Responsiveness During Social Feedback: Associations with Peer Victimization and Anhedonia in Socially Anxious Adolescents
T2 - Brain and behavior
J2 - Brain Behav
PY - 2026
DA - 2026/08/01
VL - 16
IS - 8
SP - e71581
SN - 2162-3279
PB - Wiley
DO - 10.1002/brb3.71581
UR - https://doi.org/10.1002/brb3.71581
LA - en
ER -

CSL-JSON

{
"id": "10.1002/brb3.71581",
"type": "article-journal",
"title": "Blunted Reward Responsiveness During Social Feedback: Associations with Peer Victimization and Anhedonia in Socially Anxious Adolescents",
"container-title": "Brain and behavior",
"author": [
{
"family": "Carlton",
"given": "Corinne N."
},
{
"family": "Antezana",
"given": "Ligia"
},
{
"family": "Richey",
"given": "John A."
}
],
"container-title-short": "Brain Behav",
"volume": "16",
"issue": "8",
"page": "e71581",
"DOI": "10.1002/brb3.71581",
"PMID": "42518193",
"PMCID": "PMC13411298",
"ISSN": "2162-3279",
"publisher": "Wiley",
"URL": "https://doi.org/10.1002/brb3.71581",
"language": "en",
"issued": {
"date-parts": [
[
2026,
8,
1
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.1162/netn.a.547 [code]
An evaluation of the efficacy of single-echo and multi-echo fMRI denoising strategies.
Journal: Network neuroscience (Cambridge, Mass.)
In common: dcm2niix, Nipype, ANTs, 4 other tools, 2 references
[2] doi:10.1002/hbm.70512 [code]
Precision Imaging for Intraindividual Investigation of the Reward Response.
Journal: Human brain mapping
In common: dcm2niix, PsychoPy, ANTs, 2 other tools, 3 references
[3] doi:10.1038/s41467-026-71568-9 [code]
Convergent and selective representations of pain, appetitive processes, aversive processes, and cognitive control in the insula.
Journal: Nature communications
In common: Nipype, ANTs, FreeSurfer, 4 other tools, 1 reference
[4] doi:10.1038/s41467-026-72605-3 [code]
Resolving mesoscale brainstem-prefrontal-striatal pathways underlying decisions upon salient events using submillimeter-resolution fMRI.
Journal: Nature communications
In common: PsychoPy, ANTs, FreeSurfer, 3 other tools, 2 references
[5] doi:10.1038/s41467-026-71151-2 [code]
Common and distinct neural correlates of social interaction processing and theory of mind in narratives.
Journal: Nature communications
In common: Nipype, ANTs, FreeSurfer, 4 other tools, 1 reference
[6] doi:10.1186/s13293-026-00891-z [code]
Sex differences in dynamic and static measures of brain integration derived from resting-state functional magnetic resonance imaging.
Journal: Biology of sex differences
In common: Nipype, ANTs, FreeSurfer, 4 other tools, 1 reference
[7] doi:10.21203/rs.3.rs-9326213/v1 [code]
Multi-task fMRI outperforms resting-state fMRI for revealing task-invariant organization of the human brain
Journal: Research Square (preprint)
In common: PsychoPy, ANTs, FreeSurfer, 4 other tools, 1 reference
[8] doi:10.64898/2026.03.09.710558 [code]
Multi-task fMRI outperforms resting-state fMRI for revealing task-invariant organization of the human brain
Journal: bioRxiv (preprint)
In common: PsychoPy, ANTs, FreeSurfer, 4 other tools, 1 reference
[9] doi:10.1038/s41597-026-06869-1 [code]
Individual Brain Charting: fifth release of high-resolution fMRI data for cognitive mapping.
Journal: Scientific data
In common: Nipype, PsychoPy, ANTs, 4 other tools
[10] doi:10.1038/s41467-026-71918-7 [code]
Developmental disinhibition gates language lateralization in childhood.
Journal: Nature communications
In common: dcm2niix, ANTs, FreeSurfer, 4 other tools

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.