How We Handle Research Data to Ensure Privacy
Trust is a critical component of scientific collaboration including the use of research tools. In a previous post, we reviewed how table1.cc enforces encryption of all web traffic. In this post, we will review in detail how we handle the exchange of data in the table1.cc system.
Submitting data to table1.cc
What happens when you submit a data set via our website? After pasting data from a spreadsheet into the submit form and hitting submit, your data is immediately encrypted. Table1.cc uses Let’s encrypt as our encryption certificate provider. This means that all data is transferred securely and cannot be accessed by any third party intermediary. The same happens with your desired settings you select when generating your Table 1 automatically (Figure 1, upper left).
Research Data processing on the table1.cc application
What happens when the encrypted data reaches the table1.cc server? Table1.cc runs on the Heroku platform, a cloud service that runs a sandboxed environment (Figure 1, right outer rectangle). One of the characteristic design aspects of Heroku is that it uses a so-called ‘ephemeral’ file system. Ephemeral means that our underlying file system cannot store any data permanently within this Heroku sandbox. To emphasize this point, the table1.cc application is not capable of permanently storing data which means that any data you submit to us will automatically be discarded once the task is completed!
Generation of Table 1 via the
tableone Python module
In the next step, the SSL-encrypted data is received and process via a software called Flask. Flask is a Python web server framework which handles this communication between the user and application code. Because Flask is pure Python code, communicating with other Python software modules is straightforward:
- Flask ‘translates’ your data into a Python data frame, a specialized data structure used in analytics.
- Next, it translates the preferences entered on the website into parameters for the Python/Pandas tableone package.
Rendering Table 1 within the Browser window
Next, Python and tableone automatically generate the table summarizing you data of interest. Subsequently, this table is rendered into HTML, and then returned to the user. The user’s web browser then translates HTML into a human readable table on the website (Figure 1, lower left).
Table1.cc is designed from the bottom up to avoid storing any necessary data. This becomes most obvious by the complete absence of any database storage within its architecture. All data communication from and to the user is exclusively transmitted via enforced SSL encryption so you can feel confident that your research data remains absolutely confidential.
You can learn more about how automation with table1.cc can boost your research productivity here.