Created the GetUserGenomeLocusValuesMapFromProfile function and used it to remove some duplicated code.
This commit is contained in:
parent
b6f5612bbc
commit
39c4edbe2f
4 changed files with 21 additions and 252 deletions
|
@ -6,6 +6,7 @@ Small and insignificant changes may not be included in this log.
|
||||||
|
|
||||||
## Unversioned Changes
|
## Unversioned Changes
|
||||||
|
|
||||||
|
* Created the GetUserGenomeLocusValuesMapFromProfile function and used it to remove some duplicated code. - *Simon Sarasova*
|
||||||
* Added new genetic attributes to the calculatedAttributes package. Added the ability to view and sort by these attributes in the GUI. - *Simon Sarasova*
|
* Added new genetic attributes to the calculatedAttributes package. Added the ability to view and sort by these attributes in the GUI. - *Simon Sarasova*
|
||||||
* Upgraded Golang to version 1.23. - *Simon Sarasova*
|
* Upgraded Golang to version 1.23. - *Simon Sarasova*
|
||||||
* Added the Obesity disease to genetic analyses. - *Simon Sarasova*
|
* Added the Obesity disease to genetic analyses. - *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 | 281
|
Simon Sarasova | June 13, 2023 | 282
|
|
@ -3033,45 +3033,8 @@ func setViewMateProfilePage_PolygenicDiseases(window fyne.Window, userOrOffsprin
|
||||||
|
|
||||||
diseaseNameLabel := getBoldLabelCentered(diseaseName)
|
diseaseNameLabel := getBoldLabelCentered(diseaseName)
|
||||||
|
|
||||||
// Map Structure: Locus rsID -> Locus Value
|
userDiseaseLocusValuesMap, err := calculatedAttributes.GetUserGenomeLocusValuesMapFromProfile(diseaseLociList, getAnyUserProfileAttributeFunction)
|
||||||
userDiseaseLocusValuesMap := make(map[int64]locusValue.LocusValue)
|
if (err != nil) { return nil, err }
|
||||||
|
|
||||||
for _, locusRSID := range diseaseLociList{
|
|
||||||
|
|
||||||
locusRSIDString := helpers.ConvertInt64ToString(locusRSID)
|
|
||||||
|
|
||||||
locusValueAttributeName := "LocusValue_rs" + locusRSIDString
|
|
||||||
|
|
||||||
userLocusValueExists, _, userLocusValue, err := getAnyUserProfileAttributeFunction(locusValueAttributeName)
|
|
||||||
if (err != nil) { return nil, err }
|
|
||||||
if (userLocusValueExists == false){
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusBase1, userLocusBase2, semicolonFound := strings.Cut(userLocusValue, ";")
|
|
||||||
if (semicolonFound == false){
|
|
||||||
return nil, errors.New("Database corrupt: Contains profile with invalid " + locusValueAttributeName + " value: " + userLocusValue)
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusIsPhasedAttributeName := "LocusIsPhased_rs" + locusRSIDString
|
|
||||||
|
|
||||||
userLocusIsPhasedExists, _, userLocusIsPhasedString, err := getAnyUserProfileAttributeFunction(userLocusIsPhasedAttributeName)
|
|
||||||
if (err != nil) { return nil, err }
|
|
||||||
if (userLocusIsPhasedExists == false){
|
|
||||||
return nil, errors.New("Database corrupt: Contains profile with locusValue but not locusIsPhased status for locus: " + locusRSIDString)
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusIsPhased, err := helpers.ConvertYesOrNoStringToBool(userLocusIsPhasedString)
|
|
||||||
if (err != nil) { return nil, err }
|
|
||||||
|
|
||||||
userLocusValueObject := locusValue.LocusValue{
|
|
||||||
Base1Value: userLocusBase1,
|
|
||||||
Base2Value: userLocusBase2,
|
|
||||||
LocusIsPhased: userLocusIsPhased,
|
|
||||||
}
|
|
||||||
|
|
||||||
userDiseaseLocusValuesMap[locusRSID] = userLocusValueObject
|
|
||||||
}
|
|
||||||
|
|
||||||
if (userOrOffspring == "User"){
|
if (userOrOffspring == "User"){
|
||||||
|
|
||||||
|
@ -3372,45 +3335,9 @@ func setViewMateProfilePage_DiscreteGeneticTraits(window fyne.Window, userOrOffs
|
||||||
viewTraitDetailsButtonsColumn.Add(viewTraitDetailsButton)
|
viewTraitDetailsButtonsColumn.Add(viewTraitDetailsButton)
|
||||||
|
|
||||||
// We construct the user's trait locus values map
|
// We construct the user's trait locus values map
|
||||||
// Map Structure: Locus rsID -> locusValue.LocusValue
|
|
||||||
userTraitLocusValuesMap := make(map[int64]locusValue.LocusValue)
|
|
||||||
|
|
||||||
for _, rsID := range traitLociList{
|
userTraitLocusValuesMap, err := calculatedAttributes.GetUserGenomeLocusValuesMapFromProfile(traitLociList, getAnyUserProfileAttributeFunction)
|
||||||
|
if (err != nil) { return nil, err }
|
||||||
rsIDString := helpers.ConvertInt64ToString(rsID)
|
|
||||||
|
|
||||||
userLocusValueAttributeName := "LocusValue_rs" + rsIDString
|
|
||||||
|
|
||||||
userLocusValueIsKnown, _, userLocusValue, err := getAnyUserProfileAttributeFunction(userLocusValueAttributeName)
|
|
||||||
if (err != nil) { return nil, err }
|
|
||||||
if (userLocusValueIsKnown == false){
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusBase1, userLocusBase2, semicolonFound := strings.Cut(userLocusValue, ";")
|
|
||||||
if (semicolonFound == false){
|
|
||||||
return nil, errors.New("Database corrupt: Contains profile with invalid " + userLocusValueAttributeName + " value: " + userLocusValue)
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusIsPhasedAttributeName := "LocusIsPhased_rs" + rsIDString
|
|
||||||
|
|
||||||
userLocusIsPhasedExists, _, userLocusIsPhasedString, err := getAnyUserProfileAttributeFunction(userLocusIsPhasedAttributeName)
|
|
||||||
if (err != nil) { return nil, err }
|
|
||||||
if (userLocusIsPhasedExists == false){
|
|
||||||
return nil, errors.New("Database corrupt: Contains profile with locusValue but not locusIsPhased status for locus: " + rsIDString)
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusIsPhased, err := helpers.ConvertYesOrNoStringToBool(userLocusIsPhasedString)
|
|
||||||
if (err != nil) { return nil, err }
|
|
||||||
|
|
||||||
userLocusValueObject := locusValue.LocusValue{
|
|
||||||
Base1Value: userLocusBase1,
|
|
||||||
Base2Value: userLocusBase2,
|
|
||||||
LocusIsPhased: userLocusIsPhased,
|
|
||||||
}
|
|
||||||
|
|
||||||
userTraitLocusValuesMap[rsID] = userLocusValueObject
|
|
||||||
}
|
|
||||||
|
|
||||||
if (userOrOffspring == "User"){
|
if (userOrOffspring == "User"){
|
||||||
|
|
||||||
|
@ -3737,45 +3664,10 @@ func setViewMateProfilePage_DiscreteTraitRules(window fyne.Window, traitName str
|
||||||
getUserTraitLocusValuesMap := func()(bool, map[int64]locusValue.LocusValue, error){
|
getUserTraitLocusValuesMap := func()(bool, map[int64]locusValue.LocusValue, error){
|
||||||
|
|
||||||
// We construct the user's trait locus values map
|
// We construct the user's trait locus values map
|
||||||
// Map Structure: Locus rsID -> locusValue.LocusValue
|
|
||||||
userTraitLocusValuesMap := make(map[int64]locusValue.LocusValue)
|
|
||||||
|
|
||||||
for _, rsID := range traitLociList_Rules{
|
userTraitLocusValuesMap, err := calculatedAttributes.GetUserGenomeLocusValuesMapFromProfile(traitLociList_Rules, getAnyUserProfileAttributeFunction)
|
||||||
|
if (err != nil) { return false, nil, err }
|
||||||
|
|
||||||
rsIDString := helpers.ConvertInt64ToString(rsID)
|
|
||||||
|
|
||||||
userLocusValueAttributeName := "LocusValue_rs" + rsIDString
|
|
||||||
|
|
||||||
userLocusValueIsKnown, _, userLocusValue, err := getAnyUserProfileAttributeFunction(userLocusValueAttributeName)
|
|
||||||
if (err != nil) { return false, nil, err }
|
|
||||||
if (userLocusValueIsKnown == false){
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusBase1, userLocusBase2, semicolonFound := strings.Cut(userLocusValue, ";")
|
|
||||||
if (semicolonFound == false){
|
|
||||||
return false, nil, errors.New("Database corrupt: Contains profile with invalid " + userLocusValueAttributeName + " value: " + userLocusValue)
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusIsPhasedAttributeName := "LocusIsPhased_rs" + rsIDString
|
|
||||||
|
|
||||||
userLocusIsPhasedExists, _, userLocusIsPhasedString, err := getAnyUserProfileAttributeFunction(userLocusIsPhasedAttributeName)
|
|
||||||
if (err != nil) { return false, nil, err }
|
|
||||||
if (userLocusIsPhasedExists == false){
|
|
||||||
return false, nil, errors.New("Database corrupt: Contains profile with locusValue but not locusIsPhased status for locus: " + rsIDString)
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusIsPhased, err := helpers.ConvertYesOrNoStringToBool(userLocusIsPhasedString)
|
|
||||||
if (err != nil) { return false, nil, err }
|
|
||||||
|
|
||||||
userLocusValueObject := locusValue.LocusValue{
|
|
||||||
Base1Value: userLocusBase1,
|
|
||||||
Base2Value: userLocusBase2,
|
|
||||||
LocusIsPhased: userLocusIsPhased,
|
|
||||||
}
|
|
||||||
|
|
||||||
userTraitLocusValuesMap[rsID] = userLocusValueObject
|
|
||||||
}
|
|
||||||
if (len(userTraitLocusValuesMap) == 0){
|
if (len(userTraitLocusValuesMap) == 0){
|
||||||
return false, nil, nil
|
return false, nil, nil
|
||||||
}
|
}
|
||||||
|
@ -4235,45 +4127,9 @@ func setViewMateProfilePage_NumericGeneticTraits(window fyne.Window, userOrOffsp
|
||||||
traitNameText := getBoldLabelCentered(translate(traitName))
|
traitNameText := getBoldLabelCentered(translate(traitName))
|
||||||
|
|
||||||
// We construct the user's trait locus values map
|
// We construct the user's trait locus values map
|
||||||
// Map Structure: Locus rsID -> locusValue.LocusValue
|
|
||||||
userTraitLocusValuesMap := make(map[int64]locusValue.LocusValue)
|
|
||||||
|
|
||||||
for _, rsID := range traitLociList{
|
userTraitLocusValuesMap, err := calculatedAttributes.GetUserGenomeLocusValuesMapFromProfile(traitLociList, getAnyUserProfileAttributeFunction)
|
||||||
|
if (err != nil) { return nil, err }
|
||||||
rsIDString := helpers.ConvertInt64ToString(rsID)
|
|
||||||
|
|
||||||
userLocusValueAttributeName := "LocusValue_rs" + rsIDString
|
|
||||||
|
|
||||||
userLocusValueIsKnown, _, userLocusValue, err := getAnyUserProfileAttributeFunction(userLocusValueAttributeName)
|
|
||||||
if (err != nil) { return nil, err }
|
|
||||||
if (userLocusValueIsKnown == false){
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusBase1, userLocusBase2, semicolonFound := strings.Cut(userLocusValue, ";")
|
|
||||||
if (semicolonFound == false){
|
|
||||||
return nil, errors.New("Database corrupt: Contains profile with invalid " + userLocusValueAttributeName + " value: " + userLocusValue)
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusIsPhasedAttributeName := "LocusIsPhased_rs" + rsIDString
|
|
||||||
|
|
||||||
userLocusIsPhasedExists, _, userLocusIsPhasedString, err := getAnyUserProfileAttributeFunction(userLocusIsPhasedAttributeName)
|
|
||||||
if (err != nil) { return nil, err }
|
|
||||||
if (userLocusIsPhasedExists == false){
|
|
||||||
return nil, errors.New("Database corrupt: Contains profile with locusValue but not locusIsPhased status for locus: " + rsIDString)
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusIsPhased, err := helpers.ConvertYesOrNoStringToBool(userLocusIsPhasedString)
|
|
||||||
if (err != nil) { return nil, err }
|
|
||||||
|
|
||||||
userLocusValueObject := locusValue.LocusValue{
|
|
||||||
Base1Value: userLocusBase1,
|
|
||||||
Base2Value: userLocusBase2,
|
|
||||||
LocusIsPhased: userLocusIsPhased,
|
|
||||||
}
|
|
||||||
|
|
||||||
userTraitLocusValuesMap[rsID] = userLocusValueObject
|
|
||||||
}
|
|
||||||
|
|
||||||
getPredictedOutcomeLabel := func(analysisExists bool, predictedOutcome float64)(fyne.Widget, error){
|
getPredictedOutcomeLabel := func(analysisExists bool, predictedOutcome float64)(fyne.Widget, error){
|
||||||
|
|
||||||
|
|
|
@ -707,56 +707,12 @@ func GetAnyProfileAttributeIncludingCalculated(attributeName string, getProfileA
|
||||||
// Each risk score is a number between 0 and 1
|
// Each risk score is a number between 0 and 1
|
||||||
allDiseasesAverageRiskScoreNumerator := float64(0)
|
allDiseasesAverageRiskScoreNumerator := float64(0)
|
||||||
|
|
||||||
// Map Structure: Locus rsID -> Locus Value
|
|
||||||
userDiseaseLocusValuesMap := make(map[int64]locusValue.LocusValue)
|
|
||||||
|
|
||||||
for _, diseaseObject := range polygenicDiseaseObjectsList{
|
for _, diseaseObject := range polygenicDiseaseObjectsList{
|
||||||
|
|
||||||
diseaseLociList := diseaseObject.LociList
|
diseaseLociList := diseaseObject.LociList
|
||||||
|
|
||||||
for _, locusRSID := range diseaseLociList{
|
userDiseaseLocusValuesMap, err := GetUserGenomeLocusValuesMapFromProfile(diseaseLociList, getProfileAttributesFunction)
|
||||||
|
if (err != nil) { return false, 0, "", err }
|
||||||
_, exists := userDiseaseLocusValuesMap[locusRSID]
|
|
||||||
if (exists == true){
|
|
||||||
// We already added this locus
|
|
||||||
// This can happen if two diseases share the same locus
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
locusRSIDString := helpers.ConvertInt64ToString(locusRSID)
|
|
||||||
|
|
||||||
locusValueAttributeName := "LocusValue_rs" + locusRSIDString
|
|
||||||
|
|
||||||
userLocusValueExists, _, userLocusValue, err := getProfileAttributesFunction(locusValueAttributeName)
|
|
||||||
if (err != nil) { return false, 0, "", err }
|
|
||||||
if (userLocusValueExists == false){
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusBase1, userLocusBase2, semicolonFound := strings.Cut(userLocusValue, ";")
|
|
||||||
if (semicolonFound == false){
|
|
||||||
return false, 0, "", errors.New("Database corrupt: Contains profile with invalid " + locusValueAttributeName + " value: " + userLocusValue)
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusIsPhasedAttributeName := "LocusIsPhased_rs" + locusRSIDString
|
|
||||||
|
|
||||||
userLocusIsPhasedExists, _, userLocusIsPhasedString, err := getProfileAttributesFunction(userLocusIsPhasedAttributeName)
|
|
||||||
if (err != nil) { return false, 0, "", err }
|
|
||||||
if (userLocusIsPhasedExists == false){
|
|
||||||
return false, 0, "", errors.New("Database corrupt: Contains profile with locusValue but not locusIsPhased status for locus: " + locusRSIDString)
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusIsPhased, err := helpers.ConvertYesOrNoStringToBool(userLocusIsPhasedString)
|
|
||||||
if (err != nil) { return false, 0, "", err }
|
|
||||||
|
|
||||||
userLocusValueObject := locusValue.LocusValue{
|
|
||||||
Base1Value: userLocusBase1,
|
|
||||||
Base2Value: userLocusBase2,
|
|
||||||
LocusIsPhased: userLocusIsPhased,
|
|
||||||
}
|
|
||||||
|
|
||||||
userDiseaseLocusValuesMap[locusRSID] = userLocusValueObject
|
|
||||||
}
|
|
||||||
|
|
||||||
neuralNetworkExists, anyLocusTested, userDiseaseRiskScore, _, _, _, err := createPersonGeneticAnalysis.GetPersonGenomePolygenicDiseaseAnalysis(diseaseObject, userDiseaseLocusValuesMap, true)
|
neuralNetworkExists, anyLocusTested, userDiseaseRiskScore, _, _, _, err := createPersonGeneticAnalysis.GetPersonGenomePolygenicDiseaseAnalysis(diseaseObject, userDiseaseLocusValuesMap, true)
|
||||||
if (err != nil) { return false, 0, "", err }
|
if (err != nil) { return false, 0, "", err }
|
||||||
|
@ -828,56 +784,12 @@ func GetAnyProfileAttributeIncludingCalculated(attributeName string, getProfileA
|
||||||
// Each risk score is a number between 0 and 1
|
// Each risk score is a number between 0 and 1
|
||||||
allDiseasesAverageRiskScoreNumerator := float64(0)
|
allDiseasesAverageRiskScoreNumerator := float64(0)
|
||||||
|
|
||||||
// Map Structure: rsID -> Locus Value
|
|
||||||
userDiseaseLocusValuesMap := make(map[int64]locusValue.LocusValue)
|
|
||||||
|
|
||||||
for _, diseaseObject := range polygenicDiseaseObjectsList{
|
for _, diseaseObject := range polygenicDiseaseObjectsList{
|
||||||
|
|
||||||
diseaseLociList := diseaseObject.LociList
|
diseaseLociList := diseaseObject.LociList
|
||||||
|
|
||||||
for _, locusRSID := range diseaseLociList{
|
userDiseaseLocusValuesMap, err := GetUserGenomeLocusValuesMapFromProfile(diseaseLociList, getProfileAttributesFunction)
|
||||||
|
if (err != nil) { return false, 0, "", err }
|
||||||
_, exists := userDiseaseLocusValuesMap[locusRSID]
|
|
||||||
if (exists == true){
|
|
||||||
// We already added this locus
|
|
||||||
// This can happen if two diseases share the same locus
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
locusRSIDString := helpers.ConvertInt64ToString(locusRSID)
|
|
||||||
|
|
||||||
locusValueAttributeName := "LocusValue_rs" + locusRSIDString
|
|
||||||
|
|
||||||
userLocusValueExists, _, userLocusValue, err := getProfileAttributesFunction(locusValueAttributeName)
|
|
||||||
if (err != nil) { return false, 0, "", err }
|
|
||||||
if (userLocusValueExists == false){
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusBase1, userLocusBase2, semicolonFound := strings.Cut(userLocusValue, ";")
|
|
||||||
if (semicolonFound == false){
|
|
||||||
return false, 0, "", errors.New("GetAnyProfileAttributeIncludingCalculated called with profile containing invalid " + locusValueAttributeName + ": " + userLocusValue)
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusIsPhasedAttributeName := "LocusIsPhased_rs" + locusRSIDString
|
|
||||||
|
|
||||||
userLocusIsPhasedExists, _, userLocusIsPhasedString, err := getProfileAttributesFunction(userLocusIsPhasedAttributeName)
|
|
||||||
if (err != nil) { return false, 0, "", err }
|
|
||||||
if (userLocusIsPhasedExists == false){
|
|
||||||
return false, 0, "", errors.New("Database corrupt: Contains profile with locusValue but not locusIsPhased status for locus: " + locusRSIDString)
|
|
||||||
}
|
|
||||||
|
|
||||||
userLocusIsPhased, err := helpers.ConvertYesOrNoStringToBool(userLocusIsPhasedString)
|
|
||||||
if (err != nil) { return false, 0, "", err }
|
|
||||||
|
|
||||||
newLocusValueObject := locusValue.LocusValue{
|
|
||||||
Base1Value: userLocusBase1,
|
|
||||||
Base2Value: userLocusBase2,
|
|
||||||
LocusIsPhased: userLocusIsPhased,
|
|
||||||
}
|
|
||||||
|
|
||||||
userDiseaseLocusValuesMap[locusRSID] = newLocusValueObject
|
|
||||||
}
|
|
||||||
|
|
||||||
neuralNetworkExists, anyLocusValuesTested, offspringAverageRiskScore, _, _, _, _, err := createCoupleGeneticAnalysis.GetOffspringPolygenicDiseaseAnalysis(diseaseObject, myGenomeLocusValuesMap, userDiseaseLocusValuesMap)
|
neuralNetworkExists, anyLocusValuesTested, offspringAverageRiskScore, _, _, _, _, err := createCoupleGeneticAnalysis.GetOffspringPolygenicDiseaseAnalysis(diseaseObject, myGenomeLocusValuesMap, userDiseaseLocusValuesMap)
|
||||||
if (err != nil) { return false, 0, "", err }
|
if (err != nil) { return false, 0, "", err }
|
||||||
|
@ -921,7 +833,7 @@ func GetAnyProfileAttributeIncludingCalculated(attributeName string, getProfileA
|
||||||
|
|
||||||
diseaseLociList := diseaseObject.LociList
|
diseaseLociList := diseaseObject.LociList
|
||||||
|
|
||||||
userDiseaseLocusValuesMap, err := getUserGenomeLocusValuesMap(diseaseLociList, getProfileAttributesFunction)
|
userDiseaseLocusValuesMap, err := GetUserGenomeLocusValuesMapFromProfile(diseaseLociList, getProfileAttributesFunction)
|
||||||
if (err != nil) { return false, 0, "", err }
|
if (err != nil) { return false, 0, "", err }
|
||||||
|
|
||||||
neuralNetworkExists, anyLocusTested, userDiseaseRiskScore, _, _, _, err := createPersonGeneticAnalysis.GetPersonGenomePolygenicDiseaseAnalysis(diseaseObject, userDiseaseLocusValuesMap, true)
|
neuralNetworkExists, anyLocusTested, userDiseaseRiskScore, _, _, _, err := createPersonGeneticAnalysis.GetPersonGenomePolygenicDiseaseAnalysis(diseaseObject, userDiseaseLocusValuesMap, true)
|
||||||
|
@ -972,7 +884,7 @@ func GetAnyProfileAttributeIncludingCalculated(attributeName string, getProfileA
|
||||||
|
|
||||||
diseaseLociList := diseaseObject.LociList
|
diseaseLociList := diseaseObject.LociList
|
||||||
|
|
||||||
userDiseaseLocusValuesMap, err := getUserGenomeLocusValuesMap(diseaseLociList, getProfileAttributesFunction)
|
userDiseaseLocusValuesMap, err := GetUserGenomeLocusValuesMapFromProfile(diseaseLociList, getProfileAttributesFunction)
|
||||||
if (err != nil) { return false, 0, "", err }
|
if (err != nil) { return false, 0, "", err }
|
||||||
|
|
||||||
neuralNetworkExists, anyLocusValuesTested, offspringAverageRiskScore, _, _, _, _, err := createCoupleGeneticAnalysis.GetOffspringPolygenicDiseaseAnalysis(diseaseObject, myGenomeLocusValuesMap, userDiseaseLocusValuesMap)
|
neuralNetworkExists, anyLocusValuesTested, offspringAverageRiskScore, _, _, _, _, err := createCoupleGeneticAnalysis.GetOffspringPolygenicDiseaseAnalysis(diseaseObject, myGenomeLocusValuesMap, userDiseaseLocusValuesMap)
|
||||||
|
@ -1021,7 +933,7 @@ func GetAnyProfileAttributeIncludingCalculated(attributeName string, getProfileA
|
||||||
|
|
||||||
traitLociList := traitObject.LociList
|
traitLociList := traitObject.LociList
|
||||||
|
|
||||||
userTraitLocusValuesMap, err := getUserGenomeLocusValuesMap(traitLociList, getProfileAttributesFunction)
|
userTraitLocusValuesMap, err := GetUserGenomeLocusValuesMapFromProfile(traitLociList, getProfileAttributesFunction)
|
||||||
if (err != nil) { return false, 0, "", err }
|
if (err != nil) { return false, 0, "", err }
|
||||||
|
|
||||||
neuralNetworkExists, neuralNetworkOutcomeIsKnown, predictedOutcome, _, _, _, err := createPersonGeneticAnalysis.GetGenomeDiscreteTraitAnalysis_NeuralNetwork(traitObject, userTraitLocusValuesMap, true)
|
neuralNetworkExists, neuralNetworkOutcomeIsKnown, predictedOutcome, _, _, _, err := createPersonGeneticAnalysis.GetGenomeDiscreteTraitAnalysis_NeuralNetwork(traitObject, userTraitLocusValuesMap, true)
|
||||||
|
@ -1117,7 +1029,7 @@ func GetAnyProfileAttributeIncludingCalculated(attributeName string, getProfileA
|
||||||
|
|
||||||
traitLociList := traitObject.LociList
|
traitLociList := traitObject.LociList
|
||||||
|
|
||||||
userTraitLocusValuesMap, err := getUserGenomeLocusValuesMap(traitLociList, getProfileAttributesFunction)
|
userTraitLocusValuesMap, err := GetUserGenomeLocusValuesMapFromProfile(traitLociList, getProfileAttributesFunction)
|
||||||
if (err != nil) { return false, 0, "", err }
|
if (err != nil) { return false, 0, "", err }
|
||||||
|
|
||||||
neuralNetworkExists, anyLociKnown, outcomeProbabilitiesMap, _, _, _, err := createCoupleGeneticAnalysis.GetOffspringDiscreteTraitAnalysis_NeuralNetwork(traitObject, myGenomeLocusValuesMap, userTraitLocusValuesMap)
|
neuralNetworkExists, anyLociKnown, outcomeProbabilitiesMap, _, _, _, err := createCoupleGeneticAnalysis.GetOffspringDiscreteTraitAnalysis_NeuralNetwork(traitObject, myGenomeLocusValuesMap, userTraitLocusValuesMap)
|
||||||
|
@ -1190,7 +1102,7 @@ func GetAnyProfileAttributeIncludingCalculated(attributeName string, getProfileA
|
||||||
|
|
||||||
traitLociList := traitObject.LociList
|
traitLociList := traitObject.LociList
|
||||||
|
|
||||||
userTraitLocusValuesMap, err := getUserGenomeLocusValuesMap(traitLociList, getProfileAttributesFunction)
|
userTraitLocusValuesMap, err := GetUserGenomeLocusValuesMapFromProfile(traitLociList, getProfileAttributesFunction)
|
||||||
if (err != nil) { return false, 0, "", err }
|
if (err != nil) { return false, 0, "", err }
|
||||||
|
|
||||||
traitNeuralNetworkExists, anyLocusValuesAreKnown, predictedOutcome, _, _, _, err := createPersonGeneticAnalysis.GetGenomeNumericTraitAnalysis(traitObject, userTraitLocusValuesMap, true)
|
traitNeuralNetworkExists, anyLocusValuesAreKnown, predictedOutcome, _, _, _, err := createPersonGeneticAnalysis.GetGenomeNumericTraitAnalysis(traitObject, userTraitLocusValuesMap, true)
|
||||||
|
@ -1264,7 +1176,7 @@ func GetAnyProfileAttributeIncludingCalculated(attributeName string, getProfileA
|
||||||
|
|
||||||
traitLociList := traitObject.LociList
|
traitLociList := traitObject.LociList
|
||||||
|
|
||||||
userTraitLocusValuesMap, err := getUserGenomeLocusValuesMap(traitLociList, getProfileAttributesFunction)
|
userTraitLocusValuesMap, err := GetUserGenomeLocusValuesMapFromProfile(traitLociList, getProfileAttributesFunction)
|
||||||
if (err != nil) { return false, 0, "", err }
|
if (err != nil) { return false, 0, "", err }
|
||||||
|
|
||||||
neuralNetworkExists, anyLociKnown, predictedOutcome, _, _, _, _, err := createCoupleGeneticAnalysis.GetOffspringNumericTraitAnalysis(traitObject, userTraitLocusValuesMap, myGenomeLocusValuesMap)
|
neuralNetworkExists, anyLociKnown, predictedOutcome, _, _, _, _, err := createCoupleGeneticAnalysis.GetOffspringNumericTraitAnalysis(traitObject, userTraitLocusValuesMap, myGenomeLocusValuesMap)
|
||||||
|
@ -2070,7 +1982,7 @@ func GetAnyProfileAttributeIncludingCalculated(attributeName string, getProfileA
|
||||||
//Outputs:
|
//Outputs:
|
||||||
// -map[int64]locusValue.LocusValue: Genome map for provided loci
|
// -map[int64]locusValue.LocusValue: Genome map for provided loci
|
||||||
// -error
|
// -error
|
||||||
func getUserGenomeLocusValuesMap(lociList []int64, getProfileAttributesFunction func(string)(bool, int, string, error))(map[int64]locusValue.LocusValue, error){
|
func GetUserGenomeLocusValuesMapFromProfile(lociList []int64, getProfileAttributesFunction func(string)(bool, int, string, error))(map[int64]locusValue.LocusValue, error){
|
||||||
|
|
||||||
// We construct the user's locus values map
|
// We construct the user's locus values map
|
||||||
// Map Structure: Locus rsID -> locusValue.LocusValue
|
// Map Structure: Locus rsID -> locusValue.LocusValue
|
||||||
|
|
Loading…
Reference in a new issue