From 495bbd3a991d1dfe59a46b1bd25c5fb979f0ac6c Mon Sep 17 00:00:00 2001 From: Michelle Bryson Date: Sat, 3 May 2025 11:52:54 -0400 Subject: [PATCH 1/7] display response options and plot response options similarity matrix --- Harmony_example_walkthrough.ipynb | 81 ++++++++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 6 deletions(-) diff --git a/Harmony_example_walkthrough.ipynb b/Harmony_example_walkthrough.ipynb index 3dd6605..d2aa3a1 100644 --- a/Harmony_example_walkthrough.ipynb +++ b/Harmony_example_walkthrough.ipynb @@ -291,7 +291,7 @@ "id": "c296cf93-e760-4184-b179-ea3f4a3f83d5", "metadata": {}, "source": [ - "See the questions and topics" + "See the questions, topics, and response options" ] }, { @@ -306,69 +306,99 @@ "text": [ "I was bothered by things that usually don’t bother me.\n", "\t Topics: []\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I did not feel like eating; my appetite was poor.\n", "\t Topics: ['eating']\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I felt that I could not shake off the blues even with help from my family or friends.\n", "\t Topics: ['difficulty']\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I felt I was just as good as other people.\n", "\t Topics: []\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I had trouble keeping my mind on what I was doing.\n", "\t Topics: ['difficulty']\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I felt depressed.\n", "\t Topics: ['unhappy']\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I felt that everything I did was an effort.\n", "\t Topics: []\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I felt hopeful about the future.\n", "\t Topics: []\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I thought my life had been a failure.\n", "\t Topics: []\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I felt fearful.\n", "\t Topics: ['scared']\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "My sleep was restless.\n", "\t Topics: ['sleep']\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I was happy.\n", "\t Topics: []\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I talked less than usual.\n", "\t Topics: []\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I felt lonely.\n", "\t Topics: []\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "People were unfriendly.\n", "\t Topics: []\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I enjoyed life.\n", "\t Topics: []\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I had crying spells.\n", "\t Topics: ['unhappy']\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I felt sad.\n", "\t Topics: []\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I felt that people dislike me.\n", "\t Topics: ['unhappy']\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "I could not get “going.”\n", "\t Topics: []\n", + "\t Response Options: ['Rarely or none of the time (less than 1 day)', 'Some or a little of the time (1-2 days)', 'Occasionally or a moderate amount of time (3-4 days)', 'Most or all of the time (5-7 days)']\n", "Sentir-se nervoso/a, ansioso/a ou muito tenso/a\n", "\t Topics: ['nervous']\n", + "\t Response Options: ['Nenhuma vez', 'Vários dias', 'Mais da metade dos dias', 'Quase todos os dias']\n", "Não ser capaz de impedir ou de controlar as preocupações\n", "\t Topics: []\n", + "\t Response Options: ['Nenhuma vez', 'Vários dias', 'Mais da metade dos dias', 'Quase todos os dias']\n", "Preocupar-se muito com diversas coisas\n", "\t Topics: ['scared']\n", + "\t Response Options: ['Nenhuma vez', 'Vários dias', 'Mais da metade dos dias', 'Quase todos os dias']\n", "Dificuldade para relaxar\n", "\t Topics: []\n", + "\t Response Options: ['Nenhuma vez', 'Vários dias', 'Mais da metade dos dias', 'Quase todos os dias']\n", "Ficar tão agitado/a que se torna difícil permanecer sentado/a\n", "\t Topics: ['difficulty']\n", + "\t Response Options: ['Nenhuma vez', 'Vários dias', 'Mais da metade dos dias', 'Quase todos os dias']\n", "Ficar facilmente aborrecido/a ou irritado/a\n", "\t Topics: ['unhappy']\n", + "\t Response Options: ['Nenhuma vez', 'Vários dias', 'Mais da metade dos dias', 'Quase todos os dias']\n", "Sentir medo como se algo horrível fosse acontecer\n", "\t Topics: ['scared']\n", + "\t Response Options: ['Nenhuma vez', 'Vários dias', 'Mais da metade dos dias', 'Quase todos os dias']\n", "Følt deg nervøs, engstelig eller veldig stresset\n", "\t Topics: ['nervous', 'scared']\n", + "\t Response Options: []\n", "Ikke klart å slutte å bekymre deg eller kontrolleren bekymringene dine\n", - "\t Topics: ['anxiety', 'scared']\n" + "\t Topics: ['anxiety', 'scared']\n", + "\t Response Options: []\n" ] } ], "source": [ "for q in questions:\n", " print (q.question_text)\n", - " print(\"\\t\", \"Topics:\", q.topics)" + " print(\"\\t\", \"Topics:\", q.topics)\n", + " print(\"\\t\", \"Response Options:\", q.options)" ] }, { @@ -785,7 +815,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "id": "a1a3c227-9cc2-4261-970d-2eadc52806b5", "metadata": {}, "outputs": [], @@ -795,7 +825,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 15, "id": "ca5f5efe-f85f-4a05-865f-7f6b742526f5", "metadata": {}, "outputs": [ @@ -805,7 +835,7 @@ "" ] }, - "execution_count": 12, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, @@ -824,6 +854,45 @@ "plt.imshow(similarity, cmap='hot', interpolation='nearest')" ] }, + { + "cell_type": "markdown", + "id": "15908639", + "metadata": {}, + "source": [ + "## Plot the response options similarity matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "9f0c6b4b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAFs1JREFUeJzt3WuMVPXdwPHforKiwlJEWCgLBby1XmhqlRIv1UBAmxhRmmj1BTQGokVTpFZDH69tk201sUZD8VWlJt5qIhp9QSIoEFuwEUuIaSWCWDACXhJ2AQUNnCfnPNktq1gedZcfO/P5JCfDzJzdOYczzHfOOf8ZGoqiKAIADrE+h/oBAaAkQACkECAAUggQACkECIAUAgRACgECIIUAAZDiyDjM7Nu3L959993o379/NDQ0ZC8OAF9S+f0GO3bsiOHDh0efPn16T4DK+LS0tGQvBgBf0+bNm2PEiBG9J0Dlnk/Hgg8YMCB7cYBDalz2AtS85qa3e/wxyu93273f6/khD9D8+fPj3nvvja1bt8a4cePiwQcfjHPOOeegP9dx2K2MjwBBvXFauqcdyhMbBzuN0iNb+8knn4y5c+fGnXfeGa+99loVoClTpsR7773XEw8HQC/UIwG67777YubMmfHTn/40vvOd78RDDz0UxxxzTPzpT3/qiYcDoBfq9gB98sknsXr16pg0adJ/HqRPn+r6ypUrPzf/nj17or29vcsEQO3r9gB98MEHsXfv3hg6dGiX28vr5fmgz2ptbY2mpqbOyQg4gPqQfsZv3rx50dbW1jmVo98AqH3dPgpu8ODBccQRR8S2bdu63F5eb25u/tz8jY2N1QRAfen2PaC+ffvGWWedFUuXLu3y7Qbl9QkTJnT3wwHQS/XI54DKIdjTp0+P73//+9Vnf+6///7YtWtXNSoOAHosQFdeeWW8//77cccdd1QDD7773e/G4sWLPzcwAYD61VCU3xp3GCmHYZej4coBCb4JAerN2OwFqHnHNrzV449RRuXjiIO+jqePggOgPgkQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECoDYCdNddd0VDQ0OX6dRTT+3uhwGglzuyJ37paaedFkuWLPnPgxzZIw8DQC/WI2Uog9Pc3NwTvxqAGtEj54DefPPNGD58eIwZMyauueaa2LRp0xfOu2fPnmhvb+8yAVD7uj1A48ePj4ULF8bixYtjwYIFsXHjxjj//PNjx44dB5y/tbU1mpqaOqeWlpbuXiQADkMNRVEUPfkA27dvj1GjRsV9990X11577QH3gMqpQ7kHVEaora0tBgwY0JOLBhx2xmYvQM07tuGtHn+MMiofRxz0dbzHRwcMHDgwTj755Fi/fv0B729sbKwmAOpLj38OaOfOnbFhw4YYNmxYTz8UAPUcoJtvvjmWL18eb7/9dvztb3+Lyy+/PI444oj4yU9+0t0PBUAv1u2H4N55550qNh9++GGccMIJcd5558WqVauqPwNAjwXoiSee6O5fCUAN8l1wAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgN4RoBUrVsSll14aw4cPj4aGhnjmmWe63F8URdxxxx0xbNiw6NevX0yaNCnefPPN7lxmAOoxQLt27Ypx48bF/PnzD3j/PffcEw888EA89NBD8corr8Sxxx4bU6ZMid27d3fH8gJQI478sj9wySWXVNOBlHs/999/f9x2221x2WWXVbc98sgjMXTo0GpP6aqrrvr6SwxATejWc0AbN26MrVu3VofdOjQ1NcX48eNj5cqVB/yZPXv2RHt7e5cJgNrXrQEq41Mq93j2V17vuO+zWltbq0h1TC0tLd25SAAcptJHwc2bNy/a2to6p82bN2cvEgC9LUDNzc3V5bZt27rcXl7vuO+zGhsbY8CAAV0mAGpftwZo9OjRVWiWLl3aeVt5TqccDTdhwoTufCgA6m0U3M6dO2P9+vVdBh6sWbMmBg0aFCNHjow5c+bEb3/72zjppJOqIN1+++3VZ4amTp3a3csOQD0F6NVXX42LLrqo8/rcuXOry+nTp8fChQvjlltuqT4rNGvWrNi+fXucd955sXjx4jj66KO7d8kB6NUaivLDO4eR8pBdORquHJDgfBDUm7HZC1Dzjm14q8cfo4zKxxEHfR1PHwUHQH0SIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEDvCNCKFSvi0ksvjeHDh0dDQ0M888wzXe6fMWNGdfv+08UXX9ydywxAPQZo165dMW7cuJg/f/4XzlMGZ8uWLZ3T448//nWXE4Aac+SX/YFLLrmkmv6bxsbGaG5u/jrLBUCN65FzQMuWLYshQ4bEKaecEtdff318+OGHXzjvnj17or29vcsEQO3r9gCVh98eeeSRWLp0afz+97+P5cuXV3tMe/fuPeD8ra2t0dTU1Dm1tLR09yIBcBhqKIqi+Mo/3NAQixYtiqlTp37hPG+99VaMHTs2lixZEhMnTjzgHlA5dSj3gMoItbW1xYABA77qogG90tjsBah5xza81eOPUUbl44iDvo73+DDsMWPGxODBg2P9+vVfeL6oXMD9JwBqX48H6J133qnOAQ0bNqynHwqAWh4Ft3Pnzi57Mxs3bow1a9bEoEGDqunuu++OadOmVaPgNmzYELfcckuceOKJMWXKlO5edgDqKUCvvvpqXHTRRZ3X586dW11Onz49FixYEGvXro0///nPsX379urDqpMnT47f/OY31aE2AOiWQQg9oRyEUI6GMwgB6pFBCD2trgYhAMCBCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKY6Mw9Y4fYS6syF7AWreb6Khxx9jd0T8z/9jPq/wAKQQIAAO/wC1trbG2WefHf37948hQ4bE1KlTY926dV3m2b17d8yePTuOP/74OO6442LatGmxbdu27l5uAOopQMuXL6/ismrVqnjhhRfi008/jcmTJ8euXbs657npppviueeei6eeeqqa/913340rrriiJ5YdgF6soSiK4qv+8Pvvv1/tCZWhueCCC6KtrS1OOOGEeOyxx+LHP/5xNc8bb7wR3/72t2PlypXxgx/84KC/s729PZqamqKt7VsxYIAjhFBfDELoafc1HLpBCGUTBgwY8IXzfa1X+PKXlwYNGlRdrl69utormjRpUuc8p556aowcObIK0IHs2bOnis7+EwC17ysHaN++fTFnzpw499xz4/TTT69u27p1a/Tt2zcGDhzYZd6hQ4dW933ReaVyj6djamlp+aqLBEA9BKg8F/T666/HE0888bUWYN68edWeVMe0efPmr/X7AKjhD6LecMMN8fzzz8eKFStixIgRnbc3NzfHJ598Etu3b++yF1SOgivvO5DGxsZqAqC+fKk9oHK8QhmfRYsWxYsvvhijR4/ucv9ZZ50VRx11VCxdurTztnKY9qZNm2LChAndt9QA1NceUHnYrRzh9uyzz1afBeo4r1Oeu+nXr191ee2118bcuXOrgQnl6Icbb7yxis//ZwQcAPXjSwVowYIF1eWFF17Y5faHH344ZsyYUf35D3/4Q/Tp06f6AGo5wm3KlCnxxz/+sTuXGYB6/xxQT/A5IKhnPgfU02rmc0AA8FUJEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEwOEfoNbW1jj7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Kd+Qlnrr9j/sA1Tucp911lmxdOnSLrun5fUJEyZEvdm5c2f1bqd851NvysNO5QvN/s+F8j/rKkfD1eNzoeN/EC7PAdXC86Ecd1G++C5atChefPHFanvvr3wdOOqoo7ps//LwU3lOtBa2f3GQ9T+QNWvWVJe9dvsXvcATTzxRjXRauHBh8c9//rOYNWtWMXDgwGLr1q1FrfvFL35RLFu2rNi4cWPx17/+tZg0aVIxePDgaoRMLdqxY0fxj3/8o5rKp+d9991X/fnf//53df/vfve7ats/++yzxdq1a6sRYaNHjy4+/vjjotbXv7zv5ptvrkZ8lc+HJUuWFN/73veKk046qdi9e3fR211//fVFU1NT9XzfsmVL5/TRRx91znPdddcVI0eOLF588cXi1VdfLSZMmFBNteD6g6z/+vXri1//+tfVepfbv/w3MGbMmOKCCy4oeqteEaDSgw8+WD3x+vbtWw3LXrVqVVEPrrzyymLYsGHVen/zm9+srpdPxFr10ksvVS+8n53K4ccdQ7Fvv/32YujQodWbkokTJxbr1q0r6mH9yxeiyZMnFyeccEI1HHnUqFHFzJkza+aN2IHWu5wefvjhznnKNxo/+9nPim984xvFMcccU1x++eXVi3Q9rP+mTZuq2AwaNKh67p944onFL3/5y6Ktra3orfx3DACkOOzPAQFQmwQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIDL8L9ghCPqsExUdAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(response_options_similarity, cmap='hot', interpolation='nearest')" + ] + }, { "cell_type": "markdown", "id": "bff1bab4-c20d-4a2d-a23a-6fffc5071a98", From e967800962c291b3c403dbd605eeb9cf62b6e448 Mon Sep 17 00:00:00 2001 From: Michelle Bryson Date: Sat, 3 May 2025 12:06:34 -0400 Subject: [PATCH 2/7] correct execution count --- Harmony_example_walkthrough.ipynb | 43 ++----------------------------- 1 file changed, 2 insertions(+), 41 deletions(-) diff --git a/Harmony_example_walkthrough.ipynb b/Harmony_example_walkthrough.ipynb index d2aa3a1..1a2ed04 100644 --- a/Harmony_example_walkthrough.ipynb +++ b/Harmony_example_walkthrough.ipynb @@ -815,7 +815,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "id": "a1a3c227-9cc2-4261-970d-2eadc52806b5", "metadata": {}, "outputs": [], @@ -825,7 +825,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "id": "ca5f5efe-f85f-4a05-865f-7f6b742526f5", "metadata": {}, "outputs": [ @@ -854,45 +854,6 @@ "plt.imshow(similarity, cmap='hot', interpolation='nearest')" ] }, - { - "cell_type": "markdown", - "id": "15908639", - "metadata": {}, - "source": [ - "## Plot the response options similarity matrix" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "9f0c6b4b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGdCAYAAABU0qcqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAFs1JREFUeJzt3WuMVPXdwPHforKiwlJEWCgLBby1XmhqlRIv1UBAmxhRmmj1BTQGokVTpFZDH69tk201sUZD8VWlJt5qIhp9QSIoEFuwEUuIaSWCWDACXhJ2AQUNnCfnPNktq1gedZcfO/P5JCfDzJzdOYczzHfOOf8ZGoqiKAIADrE+h/oBAaAkQACkECAAUggQACkECIAUAgRACgECIIUAAZDiyDjM7Nu3L959993o379/NDQ0ZC8OAF9S+f0GO3bsiOHDh0efPn16T4DK+LS0tGQvBgBf0+bNm2PEiBG9J0Dlnk/Hgg8YMCB7cYBDalz2AtS85qa3e/wxyu93273f6/khD9D8+fPj3nvvja1bt8a4cePiwQcfjHPOOeegP9dx2K2MjwBBvXFauqcdyhMbBzuN0iNb+8knn4y5c+fGnXfeGa+99loVoClTpsR7773XEw8HQC/UIwG67777YubMmfHTn/40vvOd78RDDz0UxxxzTPzpT3/qiYcDoBfq9gB98sknsXr16pg0adJ/HqRPn+r6ypUrPzf/nj17or29vcsEQO3r9gB98MEHsXfv3hg6dGiX28vr5fmgz2ptbY2mpqbOyQg4gPqQfsZv3rx50dbW1jmVo98AqH3dPgpu8ODBccQRR8S2bdu63F5eb25u/tz8jY2N1QRAfen2PaC+ffvGWWedFUuXLu3y7Qbl9QkTJnT3wwHQS/XI54DKIdjTp0+P73//+9Vnf+6///7YtWtXNSoOAHosQFdeeWW8//77cccdd1QDD7773e/G4sWLPzcwAYD61VCU3xp3GCmHYZej4coBCb4JAerN2OwFqHnHNrzV449RRuXjiIO+jqePggOgPgkQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECoDYCdNddd0VDQ0OX6dRTT+3uhwGglzuyJ37paaedFkuWLPnPgxzZIw8DQC/WI2Uog9Pc3NwTvxqAGtEj54DefPPNGD58eIwZMyauueaa2LRp0xfOu2fPnmhvb+8yAVD7uj1A48ePj4ULF8bixYtjwYIFsXHjxjj//PNjx44dB5y/tbU1mpqaOqeWlpbuXiQADkMNRVEUPfkA27dvj1GjRsV9990X11577QH3gMqpQ7kHVEaora0tBgwY0JOLBhx2xmYvQM07tuGtHn+MMiofRxz0dbzHRwcMHDgwTj755Fi/fv0B729sbKwmAOpLj38OaOfOnbFhw4YYNmxYTz8UAPUcoJtvvjmWL18eb7/9dvztb3+Lyy+/PI444oj4yU9+0t0PBUAv1u2H4N55550qNh9++GGccMIJcd5558WqVauqPwNAjwXoiSee6O5fCUAN8l1wAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgN4RoBUrVsSll14aw4cPj4aGhnjmmWe63F8URdxxxx0xbNiw6NevX0yaNCnefPPN7lxmAOoxQLt27Ypx48bF/PnzD3j/PffcEw888EA89NBD8corr8Sxxx4bU6ZMid27d3fH8gJQI478sj9wySWXVNOBlHs/999/f9x2221x2WWXVbc98sgjMXTo0GpP6aqrrvr6SwxATejWc0AbN26MrVu3VofdOjQ1NcX48eNj5cqVB/yZPXv2RHt7e5cJgNrXrQEq41Mq93j2V17vuO+zWltbq0h1TC0tLd25SAAcptJHwc2bNy/a2to6p82bN2cvEgC9LUDNzc3V5bZt27rcXl7vuO+zGhsbY8CAAV0mAGpftwZo9OjRVWiWLl3aeVt5TqccDTdhwoTufCgA6m0U3M6dO2P9+vVdBh6sWbMmBg0aFCNHjow5c+bEb3/72zjppJOqIN1+++3VZ4amTp3a3csOQD0F6NVXX42LLrqo8/rcuXOry+nTp8fChQvjlltuqT4rNGvWrNi+fXucd955sXjx4jj66KO7d8kB6NUaivLDO4eR8pBdORquHJDgfBDUm7HZC1Dzjm14q8cfo4zKxxEHfR1PHwUHQH0SIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEDvCNCKFSvi0ksvjeHDh0dDQ0M888wzXe6fMWNGdfv+08UXX9ydywxAPQZo165dMW7cuJg/f/4XzlMGZ8uWLZ3T448//nWXE4Aac+SX/YFLLrmkmv6bxsbGaG5u/jrLBUCN65FzQMuWLYshQ4bEKaecEtdff318+OGHXzjvnj17or29vcsEQO3r9gCVh98eeeSRWLp0afz+97+P5cuXV3tMe/fuPeD8ra2t0dTU1Dm1tLR09yIBcBhqKIqi+Mo/3NAQixYtiqlTp37hPG+99VaMHTs2lixZEhMnTjzgHlA5dSj3gMoItbW1xYABA77qogG90tjsBah5xza81eOPUUbl44iDvo73+DDsMWPGxODBg2P9+vVfeL6oXMD9JwBqX48H6J133qnOAQ0bNqynHwqAWh4Ft3Pnzi57Mxs3bow1a9bEoEGDqunuu++OadOmVaPgNmzYELfcckuceOKJMWXKlO5edgDqKUCvvvpqXHTRRZ3X586dW11Onz49FixYEGvXro0///nPsX379urDqpMnT47f/OY31aE2AOiWQQg9oRyEUI6GMwgB6pFBCD2trgYhAMCBCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKY6Mw9Y4fYS6syF7AWreb6Khxx9jd0T8z/9jPq/wAKQQIAAO/wC1trbG2WefHf37948hQ4bE1KlTY926dV3m2b17d8yePTuOP/74OO6442LatGmxbdu27l5uAOopQMuXL6/ismrVqnjhhRfi008/jcmTJ8euXbs657npppviueeei6eeeqqa/913340rrriiJ5YdgF6soSiK4qv+8Pvvv1/tCZWhueCCC6KtrS1OOOGEeOyxx+LHP/5xNc8bb7wR3/72t2PlypXxgx/84KC/s729PZqamqKt7VsxYIAjhFBfDELoafc1HLpBCGUTBgwY8IXzfa1X+PKXlwYNGlRdrl69utormjRpUuc8p556aowcObIK0IHs2bOnis7+EwC17ysHaN++fTFnzpw499xz4/TTT69u27p1a/Tt2zcGDhzYZd6hQ4dW933ReaVyj6djamlp+aqLBEA9BKg8F/T666/HE0888bUWYN68edWeVMe0efPmr/X7AKjhD6LecMMN8fzzz8eKFStixIgRnbc3NzfHJ598Etu3b++yF1SOgivvO5DGxsZqAqC+fKk9oHK8QhmfRYsWxYsvvhijR4/ucv9ZZ50VRx11VCxdurTztnKY9qZNm2LChAndt9QA1NceUHnYrRzh9uyzz1afBeo4r1Oeu+nXr191ee2118bcuXOrgQnl6Icbb7yxis//ZwQcAPXjSwVowYIF1eWFF17Y5faHH344ZsyYUf35D3/4Q/Tp06f6AGo5wm3KlCnxxz/+sTuXGYB6/xxQT/A5IKhnPgfU02rmc0AA8FUJEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEQAoBAiCFAAGQQoAASCFAAKQQIABSCBAAKQQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIIUAAZBCgABIIUAApBAgAFIIEAApBAiAFAIEwOEfoNbW1jj7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Kd+Qlnrr9j/sA1Tucp911lmxdOnSLrun5fUJEyZEvdm5c2f1bqd851NvysNO5QvN/s+F8j/rKkfD1eNzoeN/EC7PAdXC86Ecd1G++C5atChefPHFanvvr3wdOOqoo7ps//LwU3lOtBa2f3GQ9T+QNWvWVJe9dvsXvcATTzxRjXRauHBh8c9//rOYNWtWMXDgwGLr1q1FrfvFL35RLFu2rNi4cWPx17/+tZg0aVIxePDgaoRMLdqxY0fxj3/8o5rKp+d9991X/fnf//53df/vfve7ats/++yzxdq1a6sRYaNHjy4+/vjjotbXv7zv5ptvrkZ8lc+HJUuWFN/73veKk046qdi9e3fR211//fVFU1NT9XzfsmVL5/TRRx91znPdddcVI0eOLF588cXi1VdfLSZMmFBNteD6g6z/+vXri1//+tfVepfbv/w3MGbMmOKCCy4oeqteEaDSgw8+WD3x+vbtWw3LXrVqVVEPrrzyymLYsGHVen/zm9+srpdPxFr10ksvVS+8n53K4ccdQ7Fvv/32YujQodWbkokTJxbr1q0r6mH9yxeiyZMnFyeccEI1HHnUqFHFzJkza+aN2IHWu5wefvjhznnKNxo/+9nPim984xvFMcccU1x++eXVi3Q9rP+mTZuq2AwaNKh67p944onFL3/5y6Ktra3orfx3DACkOOzPAQFQmwQIgBQCBEAKAQIghQABkEKAAEghQACkECAAUggQACkECIAUAgRACgECIDL8L9ghCPqsExUdAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(response_options_similarity, cmap='hot', interpolation='nearest')" - ] - }, { "cell_type": "markdown", "id": "bff1bab4-c20d-4a2d-a23a-6fffc5071a98", From c2e8258ac2503f656b605c28d23148cd82edbc5e Mon Sep 17 00:00:00 2001 From: Michelle Bryson Date: Sat, 3 May 2025 12:12:35 -0400 Subject: [PATCH 3/7] fix execution count of similarity matrix plot output --- Harmony_example_walkthrough.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Harmony_example_walkthrough.ipynb b/Harmony_example_walkthrough.ipynb index 1a2ed04..8fcb9cc 100644 --- a/Harmony_example_walkthrough.ipynb +++ b/Harmony_example_walkthrough.ipynb @@ -835,7 +835,7 @@ "" ] }, - "execution_count": 15, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, From dde5eef20680651a25ff2705ff8d46e2910a1feb Mon Sep 17 00:00:00 2001 From: Yining He Date: Sun, 4 May 2025 20:17:34 -0400 Subject: [PATCH 4/7] modified create_instrument_from_list to add response option --- src/harmony/util/instrument_helper.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/harmony/util/instrument_helper.py b/src/harmony/util/instrument_helper.py index 0a8bcbe..298b272 100644 --- a/src/harmony/util/instrument_helper.py +++ b/src/harmony/util/instrument_helper.py @@ -34,7 +34,8 @@ def create_instrument_from_list(question_texts: list, question_numbers: list = None, instrument_name: str = "My instrument", - file_name="My file") -> Instrument: + file_name="My file", + options_map: Optional[Dict[str, list[str]]] = None ) -> Instrument: """ Read a list of strings and create an Instrument object. :return: Single Instrument. @@ -46,7 +47,11 @@ def create_instrument_from_list(question_texts: list, question_numbers: list = N question_no = question_numbers[ctr] else: question_no = str(ctr + 1) - questions.append(Question(question_text=question_text, question_no=question_no)) + + options = options_map.get(question_text, []) if options_map else [] + + questions.append(Question(question_text=question_text, question_no=question_no, + options=options)) return Instrument(questions=questions, instrument_name=instrument_name, instrument_id=uuid.uuid4().hex, file_name=file_name, file_id=uuid.uuid4().hex) From 7a4e451f60147e2123b0906539e24c15afe60dc3 Mon Sep 17 00:00:00 2001 From: Yining He Date: Sun, 4 May 2025 20:39:10 -0400 Subject: [PATCH 5/7] unit test for response options for create_instrument_from_list function --- tests/test_create_instrument_from_list.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/test_create_instrument_from_list.py b/tests/test_create_instrument_from_list.py index 27f785d..a916814 100644 --- a/tests/test_create_instrument_from_list.py +++ b/tests/test_create_instrument_from_list.py @@ -49,6 +49,17 @@ def test_single_instrument_send_to_web(self): web_url = import_instrument_into_harmony_web(instrument) self.assertIn("harmonydata.ac.uk", web_url) + def test_single_instrument_with_options(self): + question_texts = ["How often do you feel anxious?", "Do you have trouble sleeping?"] + options_map = { + "How often do you feel anxious?": ["Never", "Sometimes", "Often", "Always"], + "Do you have trouble sleeping?": ["Yes", "No"] + } + instrument = create_instrument_from_list(question_texts, options_map=options_map) + + self.assertEqual(len(instrument.questions), 2) + self.assertEqual(instrument.questions[0].options, ["Never", "Sometimes", "Often", "Always"]) + self.assertEqual(instrument.questions[1].options, ["Yes", "No"]) if __name__ == '__main__': unittest.main() From 8d8b36286ebb3819462254ae05ae893bc5c541fd Mon Sep 17 00:00:00 2001 From: Yining He Date: Sun, 4 May 2025 20:49:13 -0400 Subject: [PATCH 6/7] working create_instrument_from_list with response option --- src/harmony/util/instrument_helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/harmony/util/instrument_helper.py b/src/harmony/util/instrument_helper.py index 298b272..020edc0 100644 --- a/src/harmony/util/instrument_helper.py +++ b/src/harmony/util/instrument_helper.py @@ -35,7 +35,7 @@ def create_instrument_from_list(question_texts: list, question_numbers: list = None, instrument_name: str = "My instrument", file_name="My file", - options_map: Optional[Dict[str, list[str]]] = None ) -> Instrument: + options_map: None) -> Instrument: """ Read a list of strings and create an Instrument object. :return: Single Instrument. From 88fc47b11e3f2e14cd41c275796a9f8e5dbe1719 Mon Sep 17 00:00:00 2001 From: Yining He Date: Sun, 4 May 2025 20:52:19 -0400 Subject: [PATCH 7/7] working create_instrument_from_list with response option for sure --- src/harmony/util/instrument_helper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/harmony/util/instrument_helper.py b/src/harmony/util/instrument_helper.py index 020edc0..26fea70 100644 --- a/src/harmony/util/instrument_helper.py +++ b/src/harmony/util/instrument_helper.py @@ -35,7 +35,7 @@ def create_instrument_from_list(question_texts: list, question_numbers: list = None, instrument_name: str = "My instrument", file_name="My file", - options_map: None) -> Instrument: + options_map= None) -> Instrument: """ Read a list of strings and create an Instrument object. :return: Single Instrument.