Added "User Has Disease" information to the View Profile - Monogenic Diseases page.
This commit is contained in:
parent
8b0c41af45
commit
edecfa4b16
3 changed files with 62 additions and 19 deletions
|
@ -6,6 +6,7 @@ Small and insignificant changes may not be included in this log.
|
||||||
|
|
||||||
## Unversioned Changes
|
## Unversioned Changes
|
||||||
|
|
||||||
|
* Added "User Has Disease" information to the View Profile - Monogenic Diseases page. - *Simon Sarasova*
|
||||||
* Created the calculatedAttributes_test package. - *Simon Sarasova*
|
* Created the calculatedAttributes_test package. - *Simon Sarasova*
|
||||||
* Improved the creation process of genetic analyses in various ways. A sample of offspring polygenic disease risk scores are now created and viewable by users. - *Simon Sarasova*
|
* Improved the creation process of genetic analyses in various ways. A sample of offspring polygenic disease risk scores are now created and viewable by users. - *Simon Sarasova*
|
||||||
* Improved the genetic analysis creation process in various ways. Recombination breakpoints are more accurately predicted now. - *Simon Sarasova*
|
* Improved the genetic analysis creation process in various ways. Recombination breakpoints are more accurately predicted now. - *Simon Sarasova*
|
||||||
|
|
|
@ -9,4 +9,4 @@ Many other people have written code for modules which are imported by Seekia. Th
|
||||||
|
|
||||||
Name | Date Of First Commit | Number Of Commits
|
Name | Date Of First Commit | Number Of Commits
|
||||||
--- | --- | ---
|
--- | --- | ---
|
||||||
Simon Sarasova | June 13, 2023 | 252
|
Simon Sarasova | June 13, 2023 | 253
|
|
@ -2604,12 +2604,15 @@ func setViewMateProfilePage_MonogenicDiseases(window fyne.Window, userOrOffsprin
|
||||||
|
|
||||||
getDiseasesInfoGrid := func()(*fyne.Container, error){
|
getDiseasesInfoGrid := func()(*fyne.Container, error){
|
||||||
|
|
||||||
emptyLabelA := widget.NewLabel("")
|
emptyLabel1 := widget.NewLabel("")
|
||||||
emptyLabelB := widget.NewLabel("")
|
emptyLabel2 := widget.NewLabel("")
|
||||||
|
|
||||||
emptyLabelC := widget.NewLabel("")
|
emptyLabel3 := widget.NewLabel("")
|
||||||
diseaseNameLabel := getItalicLabelCentered("Disease Name")
|
diseaseNameLabel := getItalicLabelCentered("Disease Name")
|
||||||
|
|
||||||
|
emptyLabel4 := widget.NewLabel("")
|
||||||
|
userHasDiseaseLabel := getItalicLabelCentered("User Has Disease")
|
||||||
|
|
||||||
userProbabilityOfLabelA := getItalicLabelCentered("User Probability Of")
|
userProbabilityOfLabelA := getItalicLabelCentered("User Probability Of")
|
||||||
passingVariantLabel := getItalicLabelCentered("Passing Variant")
|
passingVariantLabel := getItalicLabelCentered("Passing Variant")
|
||||||
|
|
||||||
|
@ -2625,8 +2628,9 @@ func setViewMateProfilePage_MonogenicDiseases(window fyne.Window, userOrOffsprin
|
||||||
offspringNumberOfLabel := getItalicLabelCentered("Offspring Number Of")
|
offspringNumberOfLabel := getItalicLabelCentered("Offspring Number Of")
|
||||||
variantsTestedLabelB := getItalicLabelCentered("Variants Tested")
|
variantsTestedLabelB := getItalicLabelCentered("Variants Tested")
|
||||||
|
|
||||||
diseaseInfoButtonsColumn := container.NewVBox(emptyLabelA, emptyLabelB, widget.NewSeparator())
|
diseaseInfoButtonsColumn := container.NewVBox(emptyLabel1, emptyLabel2, widget.NewSeparator())
|
||||||
diseaseNameColumn := container.NewVBox(emptyLabelC, diseaseNameLabel, widget.NewSeparator())
|
diseaseNameColumn := container.NewVBox(emptyLabel3, diseaseNameLabel, widget.NewSeparator())
|
||||||
|
userHasDiseaseColumn := container.NewVBox(emptyLabel4, userHasDiseaseLabel, widget.NewSeparator())
|
||||||
userProbabilityOfPassingVariantColumn := container.NewVBox(userProbabilityOfLabelA, passingVariantLabel, widget.NewSeparator())
|
userProbabilityOfPassingVariantColumn := container.NewVBox(userProbabilityOfLabelA, passingVariantLabel, widget.NewSeparator())
|
||||||
userNumberOfVariantsTestedColumn := container.NewVBox(userNumberOfLabel, variantsTestedLabelA, widget.NewSeparator())
|
userNumberOfVariantsTestedColumn := container.NewVBox(userNumberOfLabel, variantsTestedLabelA, widget.NewSeparator())
|
||||||
offspringProbabilityOfHavingDiseaseColumn := container.NewVBox(offspringProbabilityOfLabelA, havingDiseaseLabel, widget.NewSeparator())
|
offspringProbabilityOfHavingDiseaseColumn := container.NewVBox(offspringProbabilityOfLabelA, havingDiseaseLabel, widget.NewSeparator())
|
||||||
|
@ -2649,42 +2653,60 @@ func setViewMateProfilePage_MonogenicDiseases(window fyne.Window, userOrOffsprin
|
||||||
|
|
||||||
//Outputs:
|
//Outputs:
|
||||||
// -bool: User disease info exists
|
// -bool: User disease info exists
|
||||||
|
// -bool: User has the disease
|
||||||
// -int: User probability of passing a disease variant (0-100)
|
// -int: User probability of passing a disease variant (0-100)
|
||||||
// -int: User number of variants tested
|
// -int: User number of variants tested
|
||||||
// -error
|
// -error
|
||||||
getUserDiseaseInfo := func()(bool, int, int, error){
|
getUserDiseaseInfo := func()(bool, bool, int, int, error){
|
||||||
|
|
||||||
diseaseNameWithUnderscores := strings.ReplaceAll(monogenicDiseaseName, " ", "_")
|
diseaseNameWithUnderscores := strings.ReplaceAll(monogenicDiseaseName, " ", "_")
|
||||||
|
|
||||||
probabilityOfPassingAVariantAttributeName := "MonogenicDisease_" + diseaseNameWithUnderscores + "_ProbabilityOfPassingAVariant"
|
probabilityOfPassingAVariantAttributeName := "MonogenicDisease_" + diseaseNameWithUnderscores + "_ProbabilityOfPassingAVariant"
|
||||||
numberOfVariantsTestedAttributeName := "MonogenicDisease_" + diseaseNameWithUnderscores + "_NumberOfVariantsTested"
|
numberOfVariantsTestedAttributeName := "MonogenicDisease_" + diseaseNameWithUnderscores + "_NumberOfVariantsTested"
|
||||||
|
|
||||||
userDiseaseInfoExists, _, userProbabilityOfPassingDiseaseVariant, err := getAnyUserProfileAttributeFunction(probabilityOfPassingAVariantAttributeName)
|
userDiseaseInfoExists, _, userProbabilityOfPassingDiseaseVariantString, err := getAnyUserProfileAttributeFunction(probabilityOfPassingAVariantAttributeName)
|
||||||
if (err != nil) { return false, 0, 0, err }
|
if (err != nil) { return false, false, 0, 0, err }
|
||||||
if (userDiseaseInfoExists == false){
|
if (userDiseaseInfoExists == false){
|
||||||
return false, 0, 0, nil
|
return false, false, 0, 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
userProbabilityOfPassingDiseaseVariantInt, err := helpers.ConvertStringToInt(userProbabilityOfPassingDiseaseVariant)
|
userProbabilityOfPassingDiseaseVariant, err := helpers.ConvertStringToInt(userProbabilityOfPassingDiseaseVariantString)
|
||||||
if (err != nil) {
|
if (err != nil) {
|
||||||
return false, 0, 0, errors.New("setViewMateProfilePage_MonogenicDiseases called with profile containing invalid probabilityOfPassingAVariant: " + userProbabilityOfPassingDiseaseVariant)
|
return false, false, 0, 0, errors.New("setViewMateProfilePage_MonogenicDiseases called with profile containing invalid probabilityOfPassingAVariant: " + userProbabilityOfPassingDiseaseVariantString)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getUserHasDiseaseBool := func()bool{
|
||||||
|
|
||||||
|
if (diseaseIsDominantOrRecessive == "Dominant"){
|
||||||
|
if (userProbabilityOfPassingDiseaseVariant != 0){
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// diseaseIsDominantOrRecessive == "Recessive"
|
||||||
|
if (userProbabilityOfPassingDiseaseVariant == 100){
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
userHasDisease := getUserHasDiseaseBool()
|
||||||
|
|
||||||
userVariantsTestedExists, _, userNumberOfVariantsTested, err := getAnyUserProfileAttributeFunction(numberOfVariantsTestedAttributeName)
|
userVariantsTestedExists, _, userNumberOfVariantsTested, err := getAnyUserProfileAttributeFunction(numberOfVariantsTestedAttributeName)
|
||||||
if (err != nil) { return false, 0, 0, err }
|
if (err != nil) { return false, false, 0, 0, err }
|
||||||
if (userVariantsTestedExists == false){
|
if (userVariantsTestedExists == false){
|
||||||
return false, 0, 0, errors.New("setViewMateProfilePage_MonogenicDiseases called with user profile containing probabilityOfPassingAVariant but not numberOfVariantsTested")
|
return false, false, 0, 0, errors.New("setViewMateProfilePage_MonogenicDiseases called with user profile containing probabilityOfPassingAVariant but not numberOfVariantsTested")
|
||||||
}
|
}
|
||||||
|
|
||||||
userNumberOfVariantsTestedInt, err := helpers.ConvertStringToInt(userNumberOfVariantsTested)
|
userNumberOfVariantsTestedInt, err := helpers.ConvertStringToInt(userNumberOfVariantsTested)
|
||||||
if (err != nil) {
|
if (err != nil) {
|
||||||
return false, 0, 0, errors.New("setViewMateProfilePage_MonogenicDiseases called with profile containing invalid numberOfVariantsTested: " + userNumberOfVariantsTested)
|
return false, false, 0, 0, errors.New("setViewMateProfilePage_MonogenicDiseases called with profile containing invalid numberOfVariantsTested: " + userNumberOfVariantsTested)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true, userProbabilityOfPassingDiseaseVariantInt, userNumberOfVariantsTestedInt, nil
|
return true, userHasDisease, userProbabilityOfPassingDiseaseVariant, userNumberOfVariantsTestedInt, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
userDiseaseInfoExists, userProbabilityOfPassingAVariant, userNumberOfVariantsTested, err := getUserDiseaseInfo()
|
userDiseaseInfoExists, userHasDisease, userProbabilityOfPassingAVariant, userNumberOfVariantsTested, err := getUserDiseaseInfo()
|
||||||
if (err != nil) { return nil, err }
|
if (err != nil) { return nil, err }
|
||||||
|
|
||||||
//Outputs:
|
//Outputs:
|
||||||
|
@ -2712,6 +2734,18 @@ func setViewMateProfilePage_MonogenicDiseases(window fyne.Window, userOrOffsprin
|
||||||
probabilityOffspringHasDiseaseIsKnown, probabilityOffspringHasDisease, probabilityOffspringHasVariantIsKnown, probabilityOffspringHasVariant, err := createGeneticAnalysis.GetOffspringMonogenicDiseaseProbabilities(diseaseIsDominantOrRecessive, userDiseaseInfoExists, userProbabilityOfPassingAVariant, myDiseaseInfoExists, myProbabilityOfPassingAVariant)
|
probabilityOffspringHasDiseaseIsKnown, probabilityOffspringHasDisease, probabilityOffspringHasVariantIsKnown, probabilityOffspringHasVariant, err := createGeneticAnalysis.GetOffspringMonogenicDiseaseProbabilities(diseaseIsDominantOrRecessive, userDiseaseInfoExists, userProbabilityOfPassingAVariant, myDiseaseInfoExists, myProbabilityOfPassingAVariant)
|
||||||
if (err != nil) { return nil, err }
|
if (err != nil) { return nil, err }
|
||||||
|
|
||||||
|
getUserHasDiseaseString := func()string{
|
||||||
|
if (userDiseaseInfoExists == false){
|
||||||
|
return "Unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
userHasDiseaseString := helpers.ConvertBoolToYesOrNoString(userHasDisease)
|
||||||
|
|
||||||
|
return userHasDiseaseString
|
||||||
|
}
|
||||||
|
|
||||||
|
userHasDiseaseString := getUserHasDiseaseString()
|
||||||
|
|
||||||
getUserProbabilityOfPassingAVariantString := func()string{
|
getUserProbabilityOfPassingAVariantString := func()string{
|
||||||
if (userDiseaseInfoExists == false){
|
if (userDiseaseInfoExists == false){
|
||||||
return "Unknown"
|
return "Unknown"
|
||||||
|
@ -2777,6 +2811,7 @@ func setViewMateProfilePage_MonogenicDiseases(window fyne.Window, userOrOffsprin
|
||||||
|
|
||||||
diseaseNameLabel := getBoldLabelCentered(monogenicDiseaseName)
|
diseaseNameLabel := getBoldLabelCentered(monogenicDiseaseName)
|
||||||
|
|
||||||
|
userHasDiseaseLabel := getBoldLabelCentered(userHasDiseaseString)
|
||||||
userProbabilityOfPassingAVariantLabel := getBoldLabelCentered(userProbabilityOfPassingAVariantString)
|
userProbabilityOfPassingAVariantLabel := getBoldLabelCentered(userProbabilityOfPassingAVariantString)
|
||||||
userNumberOfVariantsTestedLabel := getBoldLabelCentered(userNumberOfVariantsTestedString)
|
userNumberOfVariantsTestedLabel := getBoldLabelCentered(userNumberOfVariantsTestedString)
|
||||||
|
|
||||||
|
@ -2786,6 +2821,7 @@ func setViewMateProfilePage_MonogenicDiseases(window fyne.Window, userOrOffsprin
|
||||||
|
|
||||||
diseaseInfoButtonsColumn.Add(viewDiseaseInfoButton)
|
diseaseInfoButtonsColumn.Add(viewDiseaseInfoButton)
|
||||||
diseaseNameColumn.Add(diseaseNameLabel)
|
diseaseNameColumn.Add(diseaseNameLabel)
|
||||||
|
userHasDiseaseColumn.Add(userHasDiseaseLabel)
|
||||||
userProbabilityOfPassingVariantColumn.Add(userProbabilityOfPassingAVariantLabel)
|
userProbabilityOfPassingVariantColumn.Add(userProbabilityOfPassingAVariantLabel)
|
||||||
userNumberOfVariantsTestedColumn.Add(userNumberOfVariantsTestedLabel)
|
userNumberOfVariantsTestedColumn.Add(userNumberOfVariantsTestedLabel)
|
||||||
offspringProbabilityOfHavingDiseaseColumn.Add(offspringProbabilityOfHavingDiseaseLabel)
|
offspringProbabilityOfHavingDiseaseColumn.Add(offspringProbabilityOfHavingDiseaseLabel)
|
||||||
|
@ -2794,6 +2830,7 @@ func setViewMateProfilePage_MonogenicDiseases(window fyne.Window, userOrOffsprin
|
||||||
|
|
||||||
diseaseInfoButtonsColumn.Add(widget.NewSeparator())
|
diseaseInfoButtonsColumn.Add(widget.NewSeparator())
|
||||||
diseaseNameColumn.Add(widget.NewSeparator())
|
diseaseNameColumn.Add(widget.NewSeparator())
|
||||||
|
userHasDiseaseColumn.Add(widget.NewSeparator())
|
||||||
userProbabilityOfPassingVariantColumn.Add(widget.NewSeparator())
|
userProbabilityOfPassingVariantColumn.Add(widget.NewSeparator())
|
||||||
userNumberOfVariantsTestedColumn.Add(widget.NewSeparator())
|
userNumberOfVariantsTestedColumn.Add(widget.NewSeparator())
|
||||||
offspringProbabilityOfHavingDiseaseColumn.Add(widget.NewSeparator())
|
offspringProbabilityOfHavingDiseaseColumn.Add(widget.NewSeparator())
|
||||||
|
@ -2801,6 +2838,9 @@ func setViewMateProfilePage_MonogenicDiseases(window fyne.Window, userOrOffsprin
|
||||||
offspringNumberOfVariantsTestedColumn.Add(widget.NewSeparator())
|
offspringNumberOfVariantsTestedColumn.Add(widget.NewSeparator())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
userHasDiseaseHelpButton := widget.NewButtonWithIcon("", theme.QuestionIcon(), func(){
|
||||||
|
setPersonHasMonogenicDiseaseExplainerPage(window, currentPage)
|
||||||
|
})
|
||||||
probabilityOfPassingVariantHelpButton := widget.NewButtonWithIcon("", theme.QuestionIcon(), func(){
|
probabilityOfPassingVariantHelpButton := widget.NewButtonWithIcon("", theme.QuestionIcon(), func(){
|
||||||
setPersonProbabilityOfPassingVariantExplainerPage(window, currentPage)
|
setPersonProbabilityOfPassingVariantExplainerPage(window, currentPage)
|
||||||
})
|
})
|
||||||
|
@ -2817,6 +2857,7 @@ func setViewMateProfilePage_MonogenicDiseases(window fyne.Window, userOrOffsprin
|
||||||
setOffspringProbabilityOfHavingVariantExplainerPage(window, currentPage)
|
setOffspringProbabilityOfHavingVariantExplainerPage(window, currentPage)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
userHasDiseaseColumn.Add(userHasDiseaseHelpButton)
|
||||||
userProbabilityOfPassingVariantColumn.Add(probabilityOfPassingVariantHelpButton)
|
userProbabilityOfPassingVariantColumn.Add(probabilityOfPassingVariantHelpButton)
|
||||||
userNumberOfVariantsTestedColumn.Add(numberOfVariantsTestedHelpButtonA)
|
userNumberOfVariantsTestedColumn.Add(numberOfVariantsTestedHelpButtonA)
|
||||||
offspringProbabilityOfHavingDiseaseColumn.Add(probabilityOfHavingDiseaseHelpButton)
|
offspringProbabilityOfHavingDiseaseColumn.Add(probabilityOfHavingDiseaseHelpButton)
|
||||||
|
@ -2825,7 +2866,8 @@ func setViewMateProfilePage_MonogenicDiseases(window fyne.Window, userOrOffsprin
|
||||||
|
|
||||||
if (userOrOffspring == "User"){
|
if (userOrOffspring == "User"){
|
||||||
|
|
||||||
diseasesInfoGrid := container.NewHBox(layout.NewSpacer(), diseaseInfoButtonsColumn, diseaseNameColumn, userProbabilityOfPassingVariantColumn, userNumberOfVariantsTestedColumn, layout.NewSpacer())
|
diseasesInfoGrid := container.NewHBox(layout.NewSpacer(), diseaseInfoButtonsColumn, diseaseNameColumn, userHasDiseaseColumn, userProbabilityOfPassingVariantColumn, userNumberOfVariantsTestedColumn, layout.NewSpacer())
|
||||||
|
|
||||||
return diseasesInfoGrid, nil
|
return diseasesInfoGrid, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue