Skip to content
This repository was archived by the owner on Jan 7, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<p align="center">
<img src="images/main_logo_black.svg#gh-light-mode-only" width="200" alt="B2Ai Voice Logo">
<img src="images/main_logo_white.svg#gh-dark-mode-only" width="200" alt="B2Ai Voice Logo"><br>
<img src="images/main_logo_black.svg#gh-light-mode-only" width="200" alt="B2AI Voice Logo">
<img src="images/main_logo_white.svg#gh-dark-mode-only" width="200" alt="B2AI Voice Logo"><br>
Voice as a Biomarker of Health
</p>

# bridge2ai-docs

Docs for the Bridge2AI Voice Project.

[![GitHub](https://img.shields.io/badge/github-3.0.0-green?style=flat&logo=github)](https://github.com/eipm/bridge2ai-docs) [![Python 3.12.0](https://img.shields.io/badge/python-3.12.0-blue.svg)](https://www.python.org/downloads/release/python-3120/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![DOI](https://zenodo.org/badge/860006845.svg)](https://zenodo.org/doi/10.5281/zenodo.13834653)
[![GitHub](https://img.shields.io/badge/github-3.0.1-green?style=flat&logo=github)](https://github.com/eipm/bridge2ai-docs) [![Python 3.12.0](https://img.shields.io/badge/python-3.12.0-blue.svg)](https://www.python.org/downloads/release/python-3120/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![DOI](https://zenodo.org/badge/860006845.svg)](https://zenodo.org/doi/10.5281/zenodo.13834653)


## 🤝 License
Expand Down
4 changes: 2 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ currently being supported with security updates.

| Version | Supported |
| ------- | ------------------ |
| v3.0.0 | :white_check_mark: |
| < v3.0.0 | :x: |
| v3.0.1 | :white_check_mark: |
| < v3.0.1 | :x: |

## Reporting a Vulnerability

Expand Down
6 changes: 3 additions & 3 deletions src/dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,15 @@ def create_tabs(tabs_func):

def main():
# Current version of the app
version = "3.0.0"
version = "3.0.1"
# Map tab names to functions
# In this dictionary, the key is the tab name and the value is the function that will be called when the tab is selected
# The function is defined in the respective file
# overview_page() is defined in tabs/overview.py
# collections_methods_page() is defined in tabs/collections_methods.py
# collection_methods_page() is defined in tabs/collection_methods.py
# data_governance_page() is defined in tabs/data_governance.py
# study_dashboard_page() is defined in tabs/study_dashboard.py
# study_dashboard_peds_page() is defined in tabs/peds_study_dashboard.py
# study_dashboard_peds_page() is defined in tabs/study_dashboard_peds.py
# study_metadata_page() is defined in tabs/study_metadata.py
# healthsheet_page() is defined in tabs/healthsheet.py
# data_pre_processing_page() is defined in tabs/data_pre_processing.py
Expand Down
2 changes: 1 addition & 1 deletion src/tabs/ai_readiness.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
def ai_readiness_page(tab_name):
st.markdown(
"""
For detailed descriptions of each criteria, please read: [AI-readiness for Biomedical Data: Bridge2AI Recommendations](https://doi.org/10.1101/2024.10.23.619844)
For detailed descriptions of each criterion, please see: [AI-readiness for Biomedical Data: Bridge2AI Recommendations](https://doi.org/10.1101/2024.10.23.619844)
"""
)
# Add Figure
Expand Down
24 changes: 12 additions & 12 deletions src/tabs/collection_methods.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,34 +6,34 @@ def collection_methods_page(tab_name):
st.markdown(

"""
Data is collected across five disease categories. Initial data release contains data collected from four of five categories.
Data is collected across five disease categories. The initial data release contains data collected from four of the five categories.

Participants are recruited across different academic institutions from “high volume expert clinics” based on diagnosis and inclusion/exclusion criteria outlined below **(Table 1)**.

**Pediatric Participants:** Pediatric Participants are recruited strictly from the Hospital for Sick Children (Sickkids) and are based on different age groups.
**Pediatric Participants:** Pediatric participants are recruited strictly from the Hospital for Sick Children (SickKids) and are grouped by age.

**High Volume Expert Clinics:** Outpatient clinics within hospital systems or academic institutions that have developed an expertise in a specific disease area and see more than 50 patients per month from the same disease category. Ex: Asthma/COPD pulmonary specialty clinic.

Data is collected in the clinic with the assistance of a trained research assistant. Future data collection will also occur remotely, however remote data collection did not occur with initial dataset being released. Voice samples are collected prospectively using a custom software application (Bridge2AI-Voice app) with the Bridge2AI-Voice protocols.
Data is collected in the clinic with the assistance of a trained research assistant. Future data collection will also occur remotely; however, remote data collection did not occur for the initial dataset release. Voice samples are collected prospectively using a custom software application (the Bridge2AI-Voice App) with the Bridge2AI-Voice protocols.

For Pediatrics, all data is collected using [reproschema-ui](https://repronim.org/reproschema-ui/) with the Bridge2AI-Voice pediatric protocol.

**Clinical validation:** Clinical validation is performed by qualified physician or practitioner based on established gold standards for diagnosis **(Table 1)**.
**Clinical validation:** Clinical validation is performed by a qualified physician or practitioner based on established gold standards for diagnosis **(Table 1)**.

**Acoustic Tasks:** Voice, breathing, cough, and speech data are recorded with the app for adults, and with reproschema-ui for pediatrics. A total of 22 acoustic Tasks are recorded through the app **(Table 2)**.
**Acoustic Tasks:** Voice, breathing, cough, and speech data are recorded with the app for adults and with reproschema-ui for pediatrics. A total of 22 acoustic tasks are recorded through the app **(Table 2)**.

**Demographic surveys and confounders:** Detailed demographic data and surveys about confounding factors such as smoking and drinking history is collected through the smartphone application.
**Demographic surveys and confounders:** Detailed demographic data and surveys about confounding factors such as smoking and drinking history are collected through the smartphone application.

**Validated Questionnaires:** The Bridge2AI-Voice protocols contain validated tools and questionnaires for each disease category within the app for data collection **(Table 3)**.

**Other Multimodal Data:** The rest of the multimodal data including imaging, genomic data (for the neuro cohort), laryngoscopy imaging and other EHR data is extracted from different sites independently and will be uploaded through the REDCAP database. Please note that no external data is released in this v2.0.0.
**Other Multimodal Data:** The rest of the multimodal data, including imaging, genomic data (for the neuro cohort), laryngoscopy imaging, and other EHR data, is extracted from different sites independently and will be uploaded through the REDCap database. Please note that no external data is released in this v2.0.0 release.

Please see publication for protocol development description:
Please see the following publication for a description of protocol development:
>Bensoussan, Yael, et al. "Developing Multi-Disorder Voice Protocols: A team science approach involving clinical expertise, bioethics, standards, and DEI." Proc. Interspeech 2024. 2024. [https://www.isca-archive.org/interspeech_2024/bensoussan24_interspeech.html](https://www.isca-archive.org/interspeech_2024/bensoussan24_interspeech.html).

The supporting REDCap Data Dictionary, Metadata and Instrument PDFs are available at [https://github.com/eipm/bridge2ai-redcap](https://github.com/eipm/bridge2ai-redcap) .
The supporting REDCap data dictionary, metadata, and instrument PDFs are available at [https://github.com/eipm/bridge2ai-redcap](https://github.com/eipm/bridge2ai-redcap).

When using the REDCap Data Dictionary and Metadata please cite:
When using the REDCap data dictionary and metadata, please cite:

>Bensoussan, Y., Ghosh, S. S., Rameau, A., Boyer, M., Bahr, R., Watts, S., Rudzicz, F., Bolser, D., Lerner-Ellis, J., Awan, S., Powell, M. E., Belisle-Pipon, J.-C., Ravitsky, V., Johnson, A., Zisimopoulos, P., Tang, J., Sigaras, A., Elemento, O., Dorr, D., … Bridge2AI-Voice. (2024). eipm/bridge2ai-redcap. Zenodo. [https://zenodo.org/doi/10.5281/zenodo.12760724](https://zenodo.org/doi/10.5281/zenodo.12760724).

Expand Down Expand Up @@ -112,8 +112,8 @@ def map_questionnaire_link(q_link):

csv_file_path = "tables/Acoustic_Tasks_Protocol.csv"
caption = 'Table 2 - Acoustic Tasks in Protocol'
create_html_table(csv_file_path, caption,link_formattter={"Task": map_tasks_to_videos})
create_html_table(csv_file_path, caption,link_formatter={"Task": map_tasks_to_videos})

csv_file_path = "tables/Validated_Questionnaires.csv"
caption = 'Table 3 - Validated Questionnaires integrated into App'
create_html_table(csv_file_path, caption, ['X'],link_formattter={'Example': map_questionnaire_link})
create_html_table(csv_file_path, caption, ['X'],link_formatter={'Example': map_questionnaire_link})
65 changes: 63 additions & 2 deletions src/tabs/dashboard_data/peds_dashboard_data.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,72 @@
"Multiple Races": 28
},
"age_groups": {
"2-4": 0,
"2-3": 0,
"4-5": 2,
"6-9": 91,
"10-17": 207
},
"hearing_loss_disorder_category": {
"Cholesteatoma": 12,
"Hearing loss": 100,
"Mild hearing loss": 45,
"Deafness": 30,
"Ear tubes": 56,
"Cochlear implantation bilateral": 23,
"Vocal cord webs": 1,
"Cochlear implantation unilateral": 18,
"Tympanic membrane perforation": 8,
"CMV": 4,
"Hearing aid": 111
},
"mood_and_psychiatric_disorders_category": {
"Anxiety disorder": 28,
"ADHD": 29,
"ASD": 13,
"Depression": 7,
"Eating disorder": 5,
"Insomnia or sleep disorder": 3,
"OCD": 5,
"Panic disorder": 0,
"Social anxiety disorder": 10,
"Other": 7
},
"respiratory_disorders_category": {
"Asthma": 33,
"Recurrent croup": 3,
"Bronchiolitis": 2,
"RSV": 4,
"Chronic cough": 5,
"Subglottic stenosis": 0,
"Vocal cord webs": 1,
"Airway surgery/intubated": 0,
"Tracheostomy": 1,
"Stridor": 31,
"Throat surgery": 21,
"Oxygen support": 31
},
"snoring_and_obstructive_sleep_category": {
"Snoring": 0,
"Gasping": 75,
"Obstructive sleep apnea": 14,
"Had sleep study": 12,
"Tonsillectomy": 22,
"Adenoidectomy": 23,
"Lingual tonsillectomy": 0
},
"voice_disorders_category": {
"Vocal nodules or polyps": 4,
"Unilateral vocal cord paralysis": 1,
"Bilateral vocal cord paralysis": 1,
"Acid reflux disease": 13,
"Scarring": 4,
"Airway stenosis": 1,
"Vocal cord webs": 1,
"ENT visited": 72,
"Hoarse": 13,
"Voice strain": 9,
"Speech delay": 31
},
"primary_language": {
"English": 278,
"Spanish": 2,
Expand All @@ -29,7 +90,7 @@
"Mandarin": 5,
"Other": 11
},
"total_hours_of_recordings": 28.0972599306,
"total_hours_of_recordings": 28.0972599306,
"questionnaire_collected": {
"Q - Pediatric - Generic - Demographics": 300,
"Q - Pediatric - Generic - VHI-10": 300,
Expand Down
10 changes: 5 additions & 5 deletions src/tabs/data_governance.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ def data_governance_page(tab_name):
The feature-only and raw audio datasets are available under distinct agreements appropriate for the sensitivity of their respective content.
* Registered Access (features-only data):
* Register on PhysioNet and confirm your identity ([Registered Access License](https://physionet.org/about/duas/bridge2ai-voice-registered-access-agreement/)).
* Sign the Bridge2AI-Voice Registered Access Agreement, which outlines the terms and conditions for data use
* Sign the Bridge2AI-Voice Registered Access Agreement, which outlines the terms and conditions for data use.
* Controlled Access (raw audio data):
* Complete the Data Access Request Form (DARF)
* Complete the Data Use Agreement (DUA)
* Submit your application to the Data Access Compliance Office for review

Upon approval, ensure a Data Use and Transfer Agreement (DTUA) is signed by an authorized official at your institution
Upon approval, ensure a Data Use and Transfer Agreement (DTUA) is signed by an authorized official at your institution.
""")

st.subheader("Memorandum: Ethical Justification for Controlled Access to Raw Voice Data Samples")
Expand All @@ -38,7 +38,7 @@ def data_governance_page(tab_name):
st.header("Oversight")

with st.expander('''**Has the clinical study been reviewed and approved by at least one human subjects’ protection review board?**''', expanded=False):
st.write('''Submitted, approved by USF Single IRB and subsites IRB through the Single IRB Process''')
st.write('''Submitted and approved by the USF Single IRB and subsite IRBs through the Single IRB process.''')

with st.expander('''**Is this clinical study for a drug product?**''', expanded=False):
st.write('''No''')
Expand All @@ -51,7 +51,7 @@ def data_governance_page(tab_name):

st.header("De-Identification Levels")

st.write("""Level of de-identification from this dataset Identifiable information (under HIPAA and under the Common Rule) as well as data considered as sensitive have been removed from this dataset.""", unsafe_allow_html=False)
st.write("""Level of de-identification for this dataset: Identifiable information (under HIPAA and the Common Rule), as well as data considered sensitive, have been removed from this dataset.""", unsafe_allow_html=False)

with st.expander('''**Does this dataset remove direct identifiers?**''', expanded=False):
st.write('''Yes''')
Expand All @@ -70,7 +70,7 @@ def data_governance_page(tab_name):

st.subheader("De-identification Details")

st.write("""All direct identifiers were removed, as these would reveal the identity of the research participant. These include name, civic address, and social security numbers. Indirect identifiers were removed where these created a significant risk of causing participant re-identification, for example through their combination with other public data available on social media, in government registries, or elsewhere. These include select geographic or demographic identifiers, as well as some information about household composition or cultural identity. Non-identifying elements of data that revealed highly sensitive information, such as information about household income, mental health status, traumatic life experiences, and the like were also removed. All raw voice data was removed, as this data has the potential to cause to individual re-identification or to be used for illicit or unauthorized purposes. """, unsafe_allow_html=False)
st.write("""All direct identifiers were removed, as these would reveal the identity of the research participant. These include name, civic address, and social security numbers. Indirect identifiers were removed where these created a significant risk of participant re-identification, for example through their combination with other public data available on social media, in government registries, or elsewhere. These include select geographic or demographic identifiers, as well as some information about household composition or cultural identity. Non-identifying elements of data that revealed highly sensitive information, such as information about household income, mental health status, traumatic life experiences, and the like, were also removed. All raw voice data was removed, as this data has the potential to cause individual re-identification or to be used for illicit or unauthorized purposes.""", unsafe_allow_html=False)

st.header("Consent")

Expand Down
Loading
Loading