We have developed the R package for Harmony. To get started, you need R installed on your system.
Click here to try an example in Google Colab.
Here’s a Jupyter Notebook with an example using Harmony in R
We are currently submitting the R library to CRAN.
In the meantime, you can install the development version of harmonydata from GitHub (documentation in the README file):
You also need devtools
which will already be there if you are using R Studio. If not, you can install devtools
with the following command in the R console:
install.packages("devtools") # If you don't have devtools installed already.
Next, to install Harmony, run:
library(devtools)
devtools::install_github("harmonydata/harmony_r")
Let’s import Harmony and harmonise an instrument.
If you want to read in a raw (unstructured) PDF or Excel file, you can do this via a POST request to the REST API. This will convert the file into an Instrument object in JSON.It returns the instrument as a list.
library(harmonydata)
instrument = load_instruments_from_file(path = "examples/GAD-7.pdf")
names(instrument[[1]])
#> [1] "file_id" "instrument_id" "instrument_name" "file_name"
#> [5] "file_type" "file_section" "study" "sweep"
#> [9] "metadata" "language" "questions"
You can also input a url containing the questionnaire.
instrument_2 = load_instruments_from_file("https://medfam.umontreal.ca/wp-content/uploads/sites/16/GAD-7-fran%C3%A7ais.pdf")
names(instrument_2[[1]])
#> [1] "file_id" "instrument_id" "instrument_name" "file_name"
#> [5] "file_type" "file_section" "study" "sweep"
#> [9] "metadata" "language" "questions"
You can get a list containing the results of the match.Here we can see a list of similarity score for each question comapred to all the other questions in th other questionaire.
instruments = append(instrument, instrument_2)
match = match_instruments(instruments)
names(match)
#> [1] "questions" "matches" "query_similarity"
Sending data from another website to Harmony using Javascript We have exposed functionality for external websites to integrate with Harmony and add an “import to Harmony” button, either generated in Javascript or in Python. Create an Instrument object with at least an instrument_name and questions property in JSON - the questions must have a question_no and question_text properties eg: { "instrument_name": "Smoking behaviour", "questions": [ { "question_no": "1", "question_text": "Do you currently smoke or have you ever smoked?
Harmony at PyData London - 86th Meetup Update: you can download the slides from the presentation here Topic: NLP and generative models for psychology research Thomas Wood will present our work on Harmony, harmonydata.ac.uk, which is a free online tool that uses generative AI and LLMs to help psychologists analyse datasets. It uses Python, Pandas and HuggingFace Sentence Transformers to find similarities between questionnaires. Psychologists and social scientists often have to match items in different questionnaires, such as “I often feel anxious” and “Feeling nervous, anxious or afraid”.