In this lab we’re going to apply all we’ve learnt so far about the built-in data types and basic language features with some real-world data from the OpenNeuroDatasets.
Exercises 1
Here’s some data from a public experiment .
Code
RAWDATA = """ \
onset duration trial_type rewards
13 0 options_partner n/a
16 0 decision_risky_partner 25
20.072093 0 outcome_other_neg_partner 0
27.661415 0 options_solo 0
33.796415 0 decision_safe_solo 0
42.856121 0 outcome_safe_solo 0
45.391388 0 happiness_rating 34
56.883578 0 options_social n/a
65.835578 0 decision_risky_social 21
74.897329 0 outcome_other_pos_social 0
85.472048 0 options_solo 0
95.852048 0 decision_safe_solo 0
108.889945 0 outcome_safe_solo 0
111.425148 0 happiness_rating 32
125.419236 0 options_partner 20
128.419236 0 decision_safe_partner 20
132.457838 0 outcome_safe_partner 20
142.032034 0 options_social 10
145.179034 0 decision_safe_social 10
152.239768 0 outcome_safe_social 10
154.774905 0 happiness_rating 36
170.170194 0 options_solo 0
182.227194 0 decision_safe_solo 0
190.285498 0 outcome_safe_solo 0
197.857785 0 options_social -25
212.906785 0 decision_safe_social -25
218.957288 0 outcome_safe_social -25
221.492477 0 happiness_rating 34
232.567507 0 options_social 15
242.986507 0 decision_safe_social 15
250.031015 0 outcome_safe_social 15
257.603337 0 options_partner n/a
260.603337 0 decision_risky_partner 18.5
265.909711 0 outcome_other_pos_partner 0
268.444998 0 happiness_rating 34
277.402022 0 options_partner n/a
280.402022 0 decision_risky_partner 7
284.30704 0 outcome_other_neg_partner 0
290.878961 0 options_solo n/a
299.346961 0 decision_risky_solo 12.5
306.390476 0 outcome_self_neg_solo 0
308.925866 0 happiness_rating 34
319.617418 0 options_solo 30
329.170418 0 decision_safe_solo 30
336.230193 0 outcome_safe_solo 30
348.806325 0 options_social n/a
352.850325 0 decision_risky_social 10
362.900485 0 outcome_other_neg_social 0
365.43567 0 happiness_rating 36
378.229089 0 options_partner -15
381.229089 0 decision_safe_partner -15
387.035498 0 outcome_safe_partner -15
395.608814 0 options_solo -20
400.666814 0 decision_safe_solo -20
409.71943 0 outcome_safe_solo -20
412.254679 0 happiness_rating 36
425.698328 0 options_partner -10
428.698328 0 decision_safe_partner -10
432.586891 0 outcome_safe_partner -10
441.160085 0 options_solo 10
450.962085 0 decision_safe_solo 10
462.009382 0 outcome_safe_solo 10
464.544614 0 happiness_rating 36
475.570105 0 options_partner 0
478.570105 0 decision_safe_partner 0
484.826744 0 outcome_safe_partner 0
497.386636 0 options_partner n/a
500.386636 0 decision_risky_partner 24.5
505.04221 0 outcome_other_neg_partner 0
507.577445 0 happiness_rating 38
523.506321 0 options_solo -25
533.417321 0 decision_safe_solo -25
546.457133 0 outcome_safe_solo -25
554.029535 0 options_partner 10
557.029535 0 decision_safe_partner 10
560.934817 0 outcome_safe_partner 10
563.470099 0 happiness_rating 38
580.800034 0 options_partner 0
583.800034 0 decision_safe_partner 0
588.005449 0 outcome_safe_partner 0
597.579626 0 options_partner n/a
600.579626 0 decision_risky_partner 27
604.401331 0 outcome_other_neg_partner 0
606.936571 0 happiness_rating 36
618.979118 0 options_solo 0
625.361118 0 decision_safe_solo 0
633.406885 0 outcome_safe_solo 0
639.978503 0 options_social n/a
646.360503 0 decision_risky_social 8.5
652.404718 0 outcome_other_neg_social 0
654.939858 0 happiness_rating 40
668.467306 0 options_partner -30
671.467306 0 decision_safe_partner -30
676.439628 0 outcome_safe_partner -30
684.012275 0 options_partner n/a
687.012275 0 decision_risky_partner 42
692.068261 0 outcome_other_neg_partner 0
694.603454 0 happiness_rating 38
707.663534 0 options_social n/a
712.080534 0 decision_risky_social 4.5
725.126869 0 outcome_other_pos_social 0
732.699192 0 options_solo -25
739.904192 0 decision_safe_solo -25
749.962459 0 outcome_safe_solo -25
752.497674 0 happiness_rating 36
764.590285 0 options_partner -20
767.590285 0 decision_safe_partner -20
771.662329 0 outcome_safe_partner -20
779.234763 0 options_solo -25
785.175763 0 decision_safe_solo -25
792.228033 0 outcome_safe_solo -25
794.763228 0 happiness_rating 36
809.024403 0 options_partner n/a
812.024403 0 decision_risky_partner 13.5
816.046131 0 outcome_other_neg_partner 0
822.61811 0 options_social n/a
827.36811 0 decision_risky_social 54
836.428364 0 outcome_other_pos_social 0
838.963641 0 happiness_rating 34
857.444384 0 options_social -20
868.535384 0 decision_safe_social -20
877.5931 0 outcome_safe_social -20
886.166317 0 options_solo -10
894.735317 0 decision_safe_solo -10
902.795647 0 outcome_safe_solo -10
905.330966 0 happiness_rating 34
919.60851 0 options_partner -30
922.60851 0 decision_safe_partner -30
928.932253 0 outcome_safe_partner -30
936.504693 0 options_social -30
939.278693 0 decision_safe_social -30
949.331248 0 outcome_safe_social -30
951.866476 0 happiness_rating 34
963.108331 0 options_social -20
973.383331 0 decision_safe_social -20
984.441376 0 outcome_safe_social -20
995.01607 0 options_social n/a
1001.53507 0 decision_risky_social 21
1009.593852 0 outcome_other_pos_social 0
1012.129125 0 happiness_rating 36
1027.791092 0 options_social -15
1032.734092 0 decision_safe_social -15
1043.786732 0 outcome_safe_social -15
1054.361298 0 options_social 30
1061.830298 0 decision_safe_social 30
1070.890669 0 outcome_safe_social 30
1073.425867 0 happiness_rating 38
1083.566977 0 options_social n/a
1090.877977 0 decision_risky_social 21
1101.93096 0 outcome_other_neg_social 0
1115.490485 0 options_partner -30
1118.490485 0 decision_safe_partner -30
1122.89696 0 outcome_safe_partner -30
1125.432252 0 happiness_rating 38
1136.907599 0 options_solo 0
1141.245599 0 decision_safe_solo 0
1150.301231 0 outcome_safe_solo 0
1161.876605 0 options_solo 0
1167.021605 0 decision_safe_solo 0
1177.071675 0 outcome_safe_solo 0
1179.606882 0 happiness_rating 36
1192.600313 0 options_solo n/a
1200.694313 0 decision_risky_solo -7.5
1211.748317 0 outcome_self_pos_solo 0
1217.318979 0 options_social n/a
1225.156979 0 decision_risky_social 0
1233.214511 0 outcome_other_pos_social 0
1235.749697 0 happiness_rating 34
1253.413602 0 options_solo 30
1265.045602 0 decision_safe_solo 30
1273.095128 0 outcome_safe_solo 30
1280.667331 0 options_partner 0
1283.667331 0 decision_safe_partner 0
1291.525599 0 outcome_safe_partner 0
1294.060885 0 happiness_rating 34
1301.933544 0 options_social n/a
1307.381544 0 decision_risky_social 9
1317.42882 0 outcome_other_pos_social 0
1326.001946 0 options_solo 25
1332.868946 0 decision_safe_solo 25
1339.929323 0 outcome_safe_solo 25
1342.464466 0 happiness_rating 32
1355.758003 0 options_partner 30
1358.758003 0 decision_safe_partner 30
1367.350136 0 outcome_safe_partner 30
1373.921441 0 options_solo -25
1380.220441 0 decision_safe_solo -25
1388.266282 0 outcome_safe_solo -25
1390.801237 0 happiness_rating 34
1408.081464 0 options_partner -15
1411.081464 0 decision_safe_partner -15
1417.688532 0 outcome_safe_partner -15
1427.263315 0 options_solo 0
1431.404315 0 decision_safe_solo 0
1439.455158 0 outcome_safe_solo 0
1441.990402 0 happiness_rating 34
1453.349179 0 options_social -15
1457.004179 0 decision_safe_social -15
1463.056746 0 outcome_safe_social -15
1471.629709 0 options_social n/a
1475.652709 0 decision_risky_social 6
1485.707198 0 outcome_other_neg_social 0
1488.24238 0 happiness_rating 36
1499.9513 0 options_solo -25
1504.8203 0 decision_safe_solo -25
1510.87643 0 outcome_safe_solo -25
1523.452588 0 options_social 10
1530.307588 0 decision_safe_social 10
1539.364813 0 outcome_safe_social 10
1541.89997 0 happiness_rating 36
"""
Copy the data into a python file
Traverse and print the lines. Hint: Look at strings methods
Make a list of all the lines
Split each line into a tuple of 4 elements (representing onset, duration, trial_type and rewards)
Do the same but with dictionaries, that is, for each line you should get a dictionary that looks like this
{
"onset" : some- value,
"duration" : some- value,
"trial_type" : some- value,
"rewards" : some- value,
}
Sort the list of dictionaries according to the rewards value . Hint: Discard missing reward values.
Repeat the same but in descendant order (larger values first).
Make a list of the unique “trial_type” values that appear in the data.
Make a dictionary that counts the number of appearances of each “trial_type”.
Make a list of only the entries where “trial_type” is of type “decision_SOMETHING”
Print for each line a string that follows this pattern:
"For the trial type: <TRIAL-TYPE> the reward is <REWARD-VALUE>"
Write a function called cleanup that takes the raw input string and returns a list of dictionaries (like exercise item 5)