[{'role': 'system', 'content': "You are an expert in machine learning and your task is to classify the code snippets into categories from the provided list of categories. List of categories: ['helper_functions', 'load_data', 'data_exploration', 'data_preprocessing', 'evaluation', 'modelling', 'prediction', 'result_visualization', 'save_results', 'comment_only']"}, {'role': 'user', 'content': 'Identify to which category the provided code belongs and assign the code snippet to at least 1 but up to 5 categories based on the probabilities, ignore if the probability of the category is negligible. Strictly provide your response as a list. Avoid providing any additional information, commentary, or personal opinions.\\nPython Code:geneslist = list()\nglobal_list1 = list()\nglobal_list2 = list()\nglobal_list3 = list()\nfor x in annots_list:\nif x.start>0 and x.end< len(majorbase_ratio) and \'UTR\' not in x.name:\nlist1, list2, list3 = determin_codon_posit(x, majorbase_ratio) # provides three lists of majorbase_ratio values for positions 1, 2 and 3 over the length of segment x\ngeneslist.append (list1) # these three commands create list of lists...\ngeneslist.append (list2) # ...created by appending list of values for codon position1, then 2, then 3 for each gene in turn...\ngeneslist.append (list3) # ...as the loop goes through members of annots_list\nlist1_pruned = list1[0:-1]\nlist2_pruned = list2[0:-1]\nglobal_list1.extend(list1_pruned) # these three create a list of values for...\nglobal_list2.extend(list2_pruned) # ... codon positions 1, 2 and 3 throughout...\nglobal_list3.extend(list3)        # ... the entire genome.\nprint(x)\nprint((statistics.median(list1_pruned) - statistics.median (list3))*1000, (statistics.median (list2_pruned) - statistics.median (list3))*1000)\nprint(scipy.stats.wilcoxon (list1_pruned, list3)) # Wilcoxon signed rank test on position 1 vs. position 3...\nprint(scipy.stats.wilcoxon (list2_pruned, list3)) # ...and pos2 vs. pos3 gene by gene\n%matplotlib inline\nrcParams[\'figure.figsize\'] = 18, 8\nplt.xlabel (\'Codon Position\')\nplt.ylabel (\'Proportion of Reads\')\nprint("Across the genome")\nprint((statistics.median(global_list1) - statistics.median (global_list3))*1000, (statistics.median (global_list2) - statistics.median (global_list3))*1000)\nprint(scipy.stats.wilcoxon (global_list1, global_list3)) # Wilcoxon signed rank test on position 1 vs. position 3...\nprint(scipy.stats.wilcoxon (global_list2, global_list3)) # ...and pos2 vs. pos3 over entire genome\nprint(\'\')\nprint(\'\')\ngeneslist.append (global_list1) # adds the list of all-genome lists in positions 1, 2 and 3 to...\ngeneslist.append (global_list2) # ...the list of lists \'genelist\', used to do the...\ngeneslist.append (global_list3) # ... boxplot below\nplt.suptitle(\'Figure 4. Average Proportion of Most Common Nucleotide by Gene and Codon Position\', fontsize=15, fontweight=\'bold\')\naxis_lower_limit = 0.98\nplt.axis ([0, 39, axis_lower_limit, 1])\nplt.boxplot(geneslist, 1)\nplt.legend ([\'"Box-and-whiskers" plot shows median, upper, lower quartile and range. Last triplet: across entire genome\'], loc = \'lower right\')\ncolor = 0.0\nfcolor = list (\'bgrcmybgrcmybgrcmybgrcmy\')\ncolor_counter = 0\nfor gene in annots_list:\nif \'UTR\' not in gene.name:\ncolor_counter +=1\nplt.axvspan((annots_list.index(gene))*3 + 0.5, (annots_list.index(gene) + 1)*3 + 0.5, color = (fcolor [color_counter]), alpha = 0.1) #, label=\'NS5B\')\nplt.text ((annots_list.index(gene) - 1)*3 + 0.5, axis_lower_limit + (axis_lower_limit/100) + (((1 - axis_lower_limit) /20) *(color_counter%3)) , gene.name, rotation=0)\ncolor += 1/len(annots_list)\nNone # this removes lots of unwanted output that matplotlib throws out.'}, {'role': 'assistant', 'content': "['data_exploration']"}]