Compare commits

...

17 Commits

Author SHA1 Message Date
Andre Daniel Paredes
0d84deb6e4 Update README.md 2023-02-10 09:21:43 -06:00
Andre Daniel Paredes
356880c522 Update idea_list.md 2023-02-07 21:09:35 -06:00
Andre Daniel Paredes
658677efce Update gsoc_contribution_guide.md 2023-02-07 11:07:46 -06:00
Andre Daniel Paredes
f8e9d7de5e Update gsoc_contribution_guide.md 2023-02-07 11:07:28 -06:00
Andre Daniel Paredes
7140779dbb Merge pull request #56 from AiCure/docs/gsoc
Docs/gsoc
2023-02-07 11:04:05 -06:00
ADParedes
da17826560 removed unnecessary separate gsoc mentor file 2023-02-07 10:59:23 -06:00
ADParedes
de9f4d1087 change directory locations of gsoc guides 2023-02-07 10:58:45 -06:00
ADParedes
c602214aaf updated gsoc contribution and guides 2023-02-07 10:57:27 -06:00
ADParedes
99eaee32f4 move Community Health Documents to .github 2023-02-07 07:44:04 -06:00
Andre Daniel Paredes
a618525a18 Merge pull request #55 from ADParedes/dev/usage
Dev/usage
2023-02-06 23:41:07 -06:00
Andre Daniel Paredes
c5fcebb357 Merge branch 'AiCure:master' into dev/usage 2023-02-06 23:34:59 -06:00
AndreTheGreat
d74a1614fc added lines of code for head movement calculation 2023-01-11 15:24:26 -06:00
andre.paredes
5c8d7ceac6 sample script added movement 2023-01-10 13:54:06 -05:00
andre.paredes
006cb0eb0a cleaned notes in sample script VA section 2023-01-09 13:49:51 -05:00
AndreTheGreat
8f6b3c5d43 verbal acoustics dbm addition 2023-01-04 17:06:48 -06:00
ADParedes
d772a25aa2 sample audio added and sample script for pypi 2023-01-04 15:20:07 -06:00
Andre Daniel Paredes
f1b106e581 Merge pull request #1 from AiCure/master
Fix Broken github pages link
2023-01-04 13:19:10 -05:00
11 changed files with 344 additions and 0 deletions

View File

View File

View File

View File

@@ -7,6 +7,7 @@ OpenDBM
[![PyPI Latest Release](https://img.shields.io/pypi/v/opendbm?style=plastic)](https://pypi.org/project/opendbm/) [![PyPI Latest Release](https://img.shields.io/pypi/v/opendbm?style=plastic)](https://pypi.org/project/opendbm/)
[![Anaconda Latest Release](https://img.shields.io/badge/Anaconda.org-1.4.3-blue.svg?style=plastic)](https://anaconda.org/r/r-odbc) [![Anaconda Latest Release](https://img.shields.io/badge/Anaconda.org-1.4.3-blue.svg?style=plastic)](https://anaconda.org/r/r-odbc)
![Python Version](https://img.shields.io/badge/python-3.8-blue)
[![PyPI - License](https://img.shields.io/pypi/l/odbm?style=plastic)](https://github.com/AiCure/open_dbm/blob/master/license.txt) [![PyPI - License](https://img.shields.io/pypi/l/odbm?style=plastic)](https://github.com/AiCure/open_dbm/blob/master/license.txt)
[![Test](https://raw.githubusercontent.com/AiCure/open_dbm/master/images/badges/test_status.svg)](https://github.com/AiCure/open_dbm/actions/workflows/open_dbm-code-checking.yml?query=branch%3Amaster++) [![Test](https://raw.githubusercontent.com/AiCure/open_dbm/master/images/badges/test_status.svg)](https://github.com/AiCure/open_dbm/actions/workflows/open_dbm-code-checking.yml?query=branch%3Amaster++)
[![Coverage](https://raw.githubusercontent.com/AiCure/open_dbm/master/images/badges/code_coverage.svg)](https://github.com/AiCure/open_dbm/actions/workflows/open_dbm-code-checking.yml?query=branch%3Amaster++) [![Coverage](https://raw.githubusercontent.com/AiCure/open_dbm/master/images/badges/code_coverage.svg)](https://github.com/AiCure/open_dbm/actions/workflows/open_dbm-code-checking.yml?query=branch%3Amaster++)

119
docs/gsoc/2023/idea_list.md Normal file
View File

@@ -0,0 +1,119 @@
# Google Summer of Code - Idea List
**The purpose of this idea list is to help contributors answer the question:**
> What are ideas of projects I can work on in Google Summer of Code with OpenDBM
## Brief Overview
### OpenDBM Project Areas
[<img src="https://user-images.githubusercontent.com/34843515/217380475-c50cd215-dfeb-4c74-9f82-0aaa7fc5de4a.png" width=100px>](https://hub.docker.com/r/opendbmteam/dbm-openface)
[<img src="https://user-images.githubusercontent.com/34843515/217385063-56e3d0ba-2877-4d28-8648-2f036ec781c6.png" width=100px>](https://pypi.org/project/opendbm/)
[<img src="https://user-images.githubusercontent.com/34843515/217385086-20c5036d-e169-48fa-ac66-66f533a9d2c9.png" width=100px>](https://aicure.github.io/open_dbm/api/api-doc)
[<img src="https://user-images.githubusercontent.com/34843515/217385095-6056b632-215a-4a97-8202-7a8b429a9003.png" width=97px>](https://github.com/AiCure/open_dbm/tree/master/visualization_interface#opendbm-visual-analytics-interface)
Choosing a project is a personal choice. You should choose something you want to work on, and you would know that best! Here's a few questions you can ask yourself to help figure that out:
- What software do you already use?
- What would you like to learn?
- Who do you like working with?
- How do you want to chane the world?
- How do you like to communicate?
The community can benefit from a wide range of contribution to each project area. Because OpenDBM includes a community of open scientists, jupyter notebooks, tutorials, and documentations are equally important to supporting the community
#### 1. [Docker Implementation](https://hub.docker.com/r/opendbmteam/dbm-openface)
[<img src="https://user-images.githubusercontent.com/34843515/217380475-c50cd215-dfeb-4c74-9f82-0aaa7fc5de4a.png" width=70px>](https://hub.docker.com/r/opendbmteam/dbm-openface)
[What is docker?](https://learn.microsoft.com/en-us/dotnet/architecture/microservices/container-docker-introduction/docker-defined)
> Docker is an open-source project for automating the deployment of applications as portable, self-sufficient containers that can run on the cloud or on-premises. Docker is also a company that promotes and evolves this technology.
OpenDBM is built on top of a bunch of existing open source tools. That means it depends on a lot of other software to function and do the things it needs to do. And the user is responsible for scouring the internet for OpenDBMs dependencies, listed in the requirements.txt file that comes with it, and installing each and every one of them. OpenDBM's Docker Implementation packages up all the dependencies that you would otherwise have to install into a container. More information can be found here in our [Github Pages Guides](https://aicure.github.io/open_dbm/docs/beginner-installation)
#### 2. [Pypi library](https://pypi.org/project/opendbm/)
[<img src="https://user-images.githubusercontent.com/34843515/217385063-56e3d0ba-2877-4d28-8648-2f036ec781c6.png" width=75px>](https://pypi.org/project/opendbm/)
[<img src="https://user-images.githubusercontent.com/34843515/217387633-e1b5b3d7-103b-4e1d-bfe4-5237b3f0be14.png" width=500px>]
More information about the OpenDBM Python API can be found here in our [Github Pages Guides](https://aicure.github.io/open_dbm/extras/opendbm-python-api)
#### 3. [RESTful API](https://aicure.github.io/open_dbm/api/api-doc)
[<img src="https://user-images.githubusercontent.com/34843515/217385086-20c5036d-e169-48fa-ac66-66f533a9d2c9.png" width=75px>](https://aicure.github.io/open_dbm/api/api-doc)
<img width="1084" alt="odbm_api_summary" src="https://user-images.githubusercontent.com/34843515/217388200-cf77f6fa-df0e-41ac-aab0-905a3ae98701.png">
More information about the OpenDBM REST API can be found here in our [Github Pages Guides](https://aicure.github.io/open_dbm/extras/odbm-rest-api))
#### 4. [Viz Tool](https://github.com/AiCure/open_dbm/tree/master/visualization_interface#opendbm-visual-analytics-interface)
[<img src="https://user-images.githubusercontent.com/34843515/217385095-6056b632-215a-4a97-8202-7a8b429a9003.png" width=72px>](https://github.com/AiCure/open_dbm/tree/master/visualization_interface#opendbm-visual-analytics-interface)
<img width="500" alt="191345731-b12004b2-c424-455e-83cc-2bb18aa96d47" src="https://user-images.githubusercontent.com/34843515/217389561-4f96ed01-a36c-4d57-8334-5990d282bfd2.png">
App.js is the container of the entire application (default container component provided by the npm create-react-app command that was used to create a bare-bones React application). Based on the selected panel, the Visuali will output one of the two existing panels: the Cohort Panel of the Individual Panel.
**Cohort Panel:**
This panel contains all the relevant components for visual cohort analysis. The user can make inquiries about derived cohort data outputted by the OpenDBM pipeline (derived_variables/derived_output.csv). This panel will output only the available data (i.e. OpenDBM outputs a subset of DBMs).
**Individual Panel**
This panel contains all the relevant components for individual video analysis. The user can make inquiries about the raw data for one video, as well as some of derived variables outputted by the OpenDBM pipeline (raw_varialbes/{video_id_folder}/.. and derived_variables/derived_output.csv). This view will output only the available raw and derived data (i.e. OpenDBM outputs a subset of DBMs).
More information about the OpenDBM Vis Tool can be found [here](https://github.com/AiCure/open_dbm/tree/master/visualization_interface)
## Ideas List
| Project Area | General Description | Required Skills | Difficulty |
| :--- | --- | --- | ---: |
| Vis Tool | In the summer 2022 the OpenDBM Summer Intern built the Vis tool as a minimum viable product. Several minor/medium enhancements and bug fixes were left from the project. Explore Vistool to see issues you may be interested in enhancing or fixing| react, python, node.js | Variable difficulty (easy-to-hard)|
| Multiple | Performance can be improved, including simpler installs for all project areas (except RESTful API). This may include testing, benchmarking, and evaluating performance. You would create a scoped optimziation plan such as reducing the docker size and eliminating dead code. Additionaly the virtual env management can be flaky | may include python, docker, react, node.js | Variable difficulty (easy-to-hard) |
| Multiple | Develop a feature to process a selected time range of audio-video data as opposed to the video entirely. Permit multiple time contents to select. E.g. Minute 2:35 -5:01 and minute 6:30-7:52 | Docker-build, python | Medium |
| Docker Implementation | Develop a voice splitting/splicing feature to split separate voices from an aduio file for input into OpenDBM Docker Implementation | Docker, other | Medium |
| Docker Implementation| Integrate an additional open source into the Docker build. If time allows this may also include updating PyPi library to include separate toolkit. An example of other toolkits to integrate includes [OpenPose](https://cmu-perceptual-computing-lab.github.io/openpose/web/html/doc/index.html) | Medium-to-Hard
| Docker Implementation | Add a preprocessing set of tools Docker build so that end users can sanity check their audio and video recordings. | up to contributor | variable (easy-to-hard)
| Pypi Library (jupyter notebook, document, and blog tutorials) | Create artifacts to educate users on ways to preprocess, process, and post-process data | data science, python, statistical analysis | Medium-to-Hard |
## Mentors
Mentors will consist of AiCure Engineering and Clinical Data Science Team. Community Members can apply to be mentors, see below for more information.
Mentor and admins will include but are not limited too
- [Aaron Masino, PhD](https://www.linkedin.com/in/aaron-masino-38989415/)
- [Andre Daniel Paredes, PhD](https://www.linkedin.com/in/andre-daniel-paredes/)
- [Jacob Epifano, PhD](https://www.linkedin.com/in/jrepifano/)
- [Rich Christie, MD,PhD](https://www.linkedin.com/in/richchristie/)
- [Sarah Kark, PhD](https://www.linkedin.com/in/sarahkark/)
- [Stephanie Caamano](https://www.linkedin.com/in/scaamano/)
-
Mentors and org admins can be reached in the public opendbm@aicure.com listserve. This includes any questions in both the application process or general questions about the project. If conversations advance we'll pull you into a private email This lets. *If selected we will add you to our private channel on the OpenDBM Community Home on the Discourse Platform*
Interested in volunteering with OpenDBM as a mentor?
We'd love to . Please consider the following:
- The easiest way to become a member is to be part of our discourse community and fill out our [OpenDBM Community Survey](https://docs.google.com/forms/d/e/1FAIpQLScKUCdYdK9UTd569IuF3O8Q2A9fXuMJ5z9wXbX4r5yzcwfphQ/viewform?fbzx=-1747756377554914236&pli=1) and let us know you are interested in mentoring
- Mentors you are expected to read and closely abide by [GSoC Mentor Guide](https://google.github.io/gsocguides/mentor/upstream-integration)*
- We expect around a 0-10 hr/week commitment
- We ideally would like more than two mentors per project, so cooperation is key.
- The most successfuly mentors are those who have subject matter expertise experience or are community members of the open source project.
- Mentors do have to do multiple evaluations on each GSoC Contributor, two mid-terms and one at the end.
- This is 100% volunteer role for people who are passionate about helping and giving back.

View File

@@ -0,0 +1,59 @@
# An ideal application will contain 5 things:
1. A **descriptive title** including the name of what you want to work with, i.e. pypi library, docker, restfulapi or a combination of the three.
> Good example: "OpenDBM Docker: add feature to select recording timeframe for processing " Bad example: "My gsoc project"
2. **Information about you**, including contact information.
3. Link to a **code contribution** you have made to your organization. (Usually this is a link to a pull request.)
4. Information about your **proposed project**. This should be fairly detailed and include a **timeline**.
5. Information about **other commitments** that might affect your ability to work during the GSoC period. (exams, classes, holidays, other jobs, weddings, etc.) We can work around a lot of things, but it helps to know in advance.
## Sample Application Template:
-------------------------------------------------------------------------------
## Project Area Name: The thing I want to do this summer
**Note**: Make sure to include the project area name in the title both in Google's system and in your document.
### About me
1. Name (and nicknames like your github and irc usernames)
2. University / program / year / expected graduation date (you don't need to be a student to be accepted, but if you are we'd like to know)
3. Contact info (email, phone, etc.)
4. Time zone
5. Link to a resume (if you want)
### Code or Issue contribution
Submit and link either a (1) pull request or (2) a detailed note on an issue, bug, or feature request you believe would be a contribution to the space with a known solution - follow the issue templates and please do not submit and link a discussion item.
* Link to a pull request, code sample,issue goes here.
* Ideally this should be code submitted as a pull request, patch, or issue.
* It must represent your own work, although you can have help from developers to improve it.
* It can be something small
* It must be publicly visible to your mentors and org admins.
* You can link more than one if you want.
### Project information
1. Project Area name
2. Project Abstract
3. Detailed description
4. Weekly timeline
* The default schedule for GSoC is 12 weeks, either full-time or part-time. See [the GSoC timeline](https://developers.google.com/open-source/gsoc/timeline) for precise dates. This template assumes you'll be using those 12 weeks; if you're doing an alternate schedule you can adjust appropriately.
* **Community Bonding**: List any prepwork you want to do before coding starts.
* For each coding week below, list planned code deliverables. Break the project into weeks and estimate what you will have complete at the end of each one. This schedule can be adjusted later if need be.
* **Week 1** Note that usually even week 1's deliverables should include some code.
* **Week 2**
* **Week 3**
* **Week 4**
* **Week 5**
* **Week 6** Midterm point. You need enough done at this point for your mentor to evaluate your progress and pass you. Usually you want to be a bit more than half done.
* **Week 7**
* **Week 8**
* **Week 9**
* **Week 10**
* **Week 11** you may want to try to "code freeze" in week 11 and complete any tests/documentation in week 11-12.
* **Week 12**
* **Final week**: This week you will be submitting your projects
### Other commitments
* List of any things that might affect your ability to work this summer.
* List any exams, classes, holidays, other jobs, weddings, etc. We can work around a lot of things, but it helps to know in advance.
* If you're applying to more than one organization, you can let us know which one you prefer in case of a tie.

View File

@@ -0,0 +1,113 @@
# Google Summer of Code - Contribution Guide
The Purpose of this document to help contributors answer the question:
> What do I need to know to participate in Google Summer of Code (GSoC) with OpenDBM?
***Note for mentors:*** *Mentors you are expected to read and closely abide by [GSoC Mentor Guide](https://google.github.io/gsocguides/mentor/upstream-integration)*
# Table of Contents
- [⭐️ What is it?](what-is-it?)
- [⭐️ Getting Started](getting-started)
- [⭐️ Application Process](application-process)
- [⭐️ Time commitment](time-commitment)
- [⭐️ Tips](tips)
- [⭐️ Google Resources](google-resources)
## ⭐️ What is it?
| OpenDBM | GSoC |
| :------ | ---: |
|OpenDBM is a software package that allows researchers to calculate digital traits (or digital phenotyping) from video/audio of a person's behavior by combining tools to measure behavioral characteristics like facial activity, voice, and movement into a single package to measure overall behavior. From those behavioral characteristics, researchers can measure clinically meaningful symptomatology such as emotional expressivity, the prosody of voice, the valence of speech, and severity of tremoramong many others. | Google Summer of Code (GSoC) is a global program that offers new contributors over 18 an opportunity to be paid for contributing to an open source project over a three month period. |
OpenDBM was started in 2020 as a free and open resource to support the wider scientific community. We are now starting new initiatives to ensure that OpenDBM feels like a community of developers, in addition to researchers and citizen scientists. Don't be afraid to enter this space, ask questions, and learn something. Everyone can be a contributor and help drive this public good!
> We are applying to be apart of GSoC 2023!
> Contributors please start with this document for Getting Started
## ⭐️ Getting Started
Any open source experince will help you prepare for GSoC, so don't worry about what project you try. Look over the [project ideas]().
- Start by letting us know you are interested in [OpenDBM's Open Source Community Survey](https://docs.google.com/forms/d/e/1FAIpQLScKUCdYdK9UTd569IuF3O8Q2A9fXuMJ5z9wXbX4r5yzcwfphQ/viewform?fbzx=-1747756377554914236&pli=1)
- Set up your own development environment
- Start with communicating with the developers. Join the maing list (and upcoming discourse community home)
- Find bugs and report them
- Help with documentation
- Help others
### General Recommendations before getting started
**Here's a few things you should consider to be effective and productive**
- You should have some kind of experience with Python
- You should celebrate this as opportunity to learn something new under guidance of mentorship. Don't be afraid of the unknown!
- You should feel comfortable asking questions
**Here are items to consider before applying**
1. Be comfortable communicating your work in public. All GSoC Contributos are required to post weekly and minimally communite the following:
> - What did you do this week?
> - What is coming up next?
> - Did you get stuck anywhere?
2. You should get a basic understanding of version control with git.
3. You should get a basic understanding of highly used toolkits in the field of digital phenotyping.
> OpenDBM is a compilation of existing but disparate open-source software tools that weve built on top of. All these tools are of course listed in the OpenDBM dependencies but we recommend you check out their github repos. They include the following
> - OpenFace, built on OpenCV, is at the heart of all facial measures and even some of the movement ones.
> - Parselmouth and its reliance on the Praat software library lies behind most of the vocal acoustic measures.
> - DeepSpeech was used for all speech transcription and NLTK is utilized for a lot of language metrics. OpenDBM would not be possible without theseand several otheropen source software packages.
## ⭐️ Application Process
To apply, can look over the [OpenDBM Repo](https://github.com/AiCure/open_dbm) and propose a new idea or pull from the [OpenDBM <> GSOC Ideas 2023]() to create a project proposal that's good for both you and the OpenDBM open source community. If you propose something new make especially sure that you work with our mentor(s) to make sure it's a good fit for the community. Unsolicited, undiscussed ideas are less likely to get accepted.
There are three primary project areas to consider for OpenDBM:
1. Docker
2. Pypi library
3. RESTful Api
Once you've narrowed it down to a project idea or two, use the application checklist to prepare your project proposal. (You can submit up to three proposals, but will only be offered one position if accepted.)
All applications are must be sent through the Google system.
### Short application Checklist
1. Read the links and instructions given on this site
2. Talk with your prospective mentor(s) about what they expect of GSoC applicants and get help from them to refine your project ideas.
3. Make an attempt at a patch. Usually we expect GSoC contributors to fix a bug and have made a pull request (or equivalent). Your code doesn't have to be accepted and merged, but it does have to be visible to the public and it does have to be your own work (mentor help is ok).
4. Write your application and ask for help mentor(s). We have an [application template]() to help you make sure you include all the information we expect. All applications must go through Google's application system; we can't accept any application unless it is submitted there.
- Use a descriptive title and include your project area. Good example: "OpenDBM Docker: add feature to select recording timeframe for processing " Bad example: "My gsoc project"
- Make it easy for your mentors to give you feedback. If you're using Google docs, you can enable comments and submit a "draft" to your mentors. If you're using a format that doesn't accept comments, make sure your email is on the document and don't forget to check for feedback!
6. Submit your application to Google before the deadline. Note that Google does not extend this deadline, so it's best to be prepared early! You can edit your application up until the system closes.
## ⭐️ Tips
### Time Commitment
Contributors are [expected](https://developers.google.com/open-source/gsoc/faq#how_much_time_does_gsoc_participation_take) to work either 350 hours (full-time eqivalent) or 175 hours (part-time equivalent) over the course of the program. The default schedule runs over 3 months and can potentially be spread over a longer period. We do not recommend taking on another full-time internship, job, or schooling during the GSoC period, although a few weeks of overlap is often fine.
### Selection Tips
#### Communicate with mentors
Ask questions directly on in the public opendbm@aicure.com listserve. If conversations advance we'll pull you into a private email This lets. *If selected we will add you to our private channel on the OpenDBM Community Home on the Discourse Platform*
#### Communicate with Community
Google intends this to be a way for new contributors to join the world of open source. The contributors most likely to be selected are those who are engaged with the community and hoping to continue their involvement for more than just a few months. It's more important to be a good community member than it is to be a good coder.
#### Have a learning mindset
Listen and use feedback from others. We value communication and will reject contributors who don't listen to mentors. If selected, we will place special oversight to ensure mentors and contributors are listening to eachother and having fruitful discussion. Remember: the mentors are using their interactions with you to figure out if it's worth their volunteer time to work with you. No one wants to have an intern who doesn't listen, and contributors who don't listen also don't produce code that the open source project can use, so contributors who don't listen don't get hired. Nor do contributors who are arrogant jerks, or who violate the Code of Conduct. Be professional and show that you will take the mentoring relationship seriously.
### What should I do if no one will answers my question
1. Be a ptient.
2. Make sure you're asking in the best place
3. Try giving more information
4. If you're really having trouble getting in touch with your mentors, talk to the python or admins by emailing gsoc-admins@python.org.
## ⭐️ Google Resources
The [GSoC student Guide](https://google.github.io/gsocguides/student/) -- This is a guide written by mentors and former contributors. It covers many questions that most contributors ask us. (Note that it was written when all GSoC contributors were students.) Please read it before asking any questions on the mailing list or IRC if you can! New contributors in particular might want to read the section [Am I Good Enough?](https://google.github.io/gsocguides/student/am-i-good-enough)
Check this out for [Google's list of resources](https://developers.google.com/open-source/gsoc/resources/ ).

Binary file not shown.

View File

@@ -0,0 +1,52 @@
### LIBRARIES ------
import pandas as pd
import numpy as np
import os, glob
from siuba import _ as D
import siuba.dply.verbs
import siuba.dply.vector
from opendbm import FacialActivity #needed with docker?
from opendbm import Movement as mv #needed with docker?
from opendbm import VerbalAcoustics as va
from opendbm import Speech as sp
### FINDING DATASETS ----
# find mp4 files -- assume in sample_data folder
str_ext = '*_actor.mp4'
list_mp4 = glob.glob(str_ext)
path_file = list_mp4[0]
### VERBAL ACOUSTICS -----
#fit the model
model_va = va()
model_va.fit(path_file)
#model_va = va().fit(pathfile) # one-line alternative
var_intensity = model_va.get_audio_intensity()
# get audio intensity
df_va_intensity = var_intensity.to_dataframe()
print(df_va_intensity)
# get attributes from audio intesity
va_inten_mean = var_intensity.mean()
### Movement
model_mv = mv()
model_mv.fit(path_file) # Requires Docker
#get head movement
var_headmv = model_mv.get_head_movement()
#convert head movement to dataframe
df_headmv = var_headmv.to_dataframe()
#note can check to see headmovement in jupyter:variables
# this can be helpful for QC to see if head movement was captured.
# wheh face is not detected no movement is captured and return is array of nan