2024-04-11 15:51:56 +02:00
|
|
|
package traits
|
|
|
|
|
2024-07-19 19:16:28 +02:00
|
|
|
import "seekia/internal/helpers"
|
2024-04-11 15:51:56 +02:00
|
|
|
|
2024-07-19 19:16:28 +02:00
|
|
|
import "maps"
|
2024-04-11 15:51:56 +02:00
|
|
|
|
|
|
|
func getHairTextureTraitObject()Trait{
|
|
|
|
|
2024-07-19 19:16:28 +02:00
|
|
|
// Map Structure: rsID -> References Map
|
|
|
|
locusReferencesMap := make(map[int64]map[string]string)
|
|
|
|
|
|
|
|
referencesMap_List1 := make(map[string]string)
|
|
|
|
referencesMap_List1["SNPedia.com - rs7349332"] = "https://www.snpedia.com/index.php/Rs7349332"
|
|
|
|
|
|
|
|
lociList_1 := []int64{
|
|
|
|
7349332,
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, rsID := range lociList_1{
|
|
|
|
locusReferencesMap[rsID] = maps.Clone(referencesMap_List1)
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
referencesMap_List2 := make(map[string]string)
|
|
|
|
referencesMap_List2["SNPedia.com - rs11803731"] = "https://www.snpedia.com/index.php/Rs11803731"
|
|
|
|
|
|
|
|
lociList_2 := []int64{
|
|
|
|
11803731,
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, rsID := range lociList_2{
|
|
|
|
locusReferencesMap[rsID] = maps.Clone(referencesMap_List2)
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
referencesMap_List3 := make(map[string]string)
|
|
|
|
referencesMap_List3["SNPedia.com - rs17646946"] = "https://www.snpedia.com/index.php/Rs17646946"
|
|
|
|
|
|
|
|
lociList_3 := []int64{
|
|
|
|
17646946,
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, rsID := range lociList_3{
|
|
|
|
locusReferencesMap[rsID] = maps.Clone(referencesMap_List3)
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
referencesMap_rs7349332 := make(map[string]string)
|
|
|
|
referencesMap_rs7349332["SNPedia.com - rs7349332"] = "https://www.snpedia.com/index.php/Rs7349332"
|
2024-04-11 15:51:56 +02:00
|
|
|
|
|
|
|
rule1_Locus1Object := RuleLocus{
|
|
|
|
|
|
|
|
LocusIdentifier: "0e06e2",
|
|
|
|
LocusRSID: 7349332,
|
|
|
|
BasePairsList: []string{"C;C"},
|
|
|
|
}
|
|
|
|
rule1_LociList := []RuleLocus{rule1_Locus1Object}
|
|
|
|
|
|
|
|
rule1_OutcomePointsMap := make(map[string]int)
|
|
|
|
rule1_OutcomePointsMap["Straight"] = 2
|
|
|
|
|
|
|
|
rule1_Object := TraitRule{
|
|
|
|
RuleIdentifier: "fde405",
|
|
|
|
LociList: rule1_LociList,
|
|
|
|
OutcomePointsMap: rule1_OutcomePointsMap,
|
2024-07-19 19:16:28 +02:00
|
|
|
ReferencesMap: maps.Clone(referencesMap_rs7349332),
|
2024-04-11 15:51:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
//TODO: Make sure this is true, that a heterozygote has a higher likelihood of curly hair
|
|
|
|
|
|
|
|
rule2_Locus1Object := RuleLocus{
|
|
|
|
|
|
|
|
LocusIdentifier: "2da1b7",
|
|
|
|
LocusRSID: 7349332,
|
|
|
|
BasePairsList: []string{"C;T", "T;C"},
|
|
|
|
}
|
|
|
|
rule2_LociList := []RuleLocus{rule2_Locus1Object}
|
|
|
|
|
|
|
|
rule2_OutcomePointsMap := make(map[string]int)
|
|
|
|
rule2_OutcomePointsMap["Curly"] = 1
|
|
|
|
|
|
|
|
rule2_Object := TraitRule{
|
|
|
|
RuleIdentifier: "6bd1da",
|
|
|
|
LociList: rule2_LociList,
|
|
|
|
OutcomePointsMap: rule2_OutcomePointsMap,
|
2024-07-19 19:16:28 +02:00
|
|
|
ReferencesMap: maps.Clone(referencesMap_rs7349332),
|
2024-04-11 15:51:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
rule3_Locus1Object := RuleLocus{
|
|
|
|
|
|
|
|
LocusIdentifier: "c6760e",
|
|
|
|
LocusRSID: 7349332,
|
|
|
|
BasePairsList: []string{"T;T"},
|
|
|
|
}
|
|
|
|
rule3_LociList := []RuleLocus{rule3_Locus1Object}
|
|
|
|
|
|
|
|
rule3_OutcomePointsMap := make(map[string]int)
|
|
|
|
rule3_OutcomePointsMap["Curly"] = 2
|
|
|
|
|
|
|
|
rule3_Object := TraitRule{
|
|
|
|
RuleIdentifier: "32e377",
|
|
|
|
LociList: rule3_LociList,
|
|
|
|
OutcomePointsMap: rule3_OutcomePointsMap,
|
2024-07-19 19:16:28 +02:00
|
|
|
ReferencesMap: maps.Clone(referencesMap_rs7349332),
|
2024-04-11 15:51:56 +02:00
|
|
|
}
|
|
|
|
|
2024-07-19 19:16:28 +02:00
|
|
|
|
|
|
|
|
|
|
|
referencesMap_rs11803731 := make(map[string]string)
|
|
|
|
referencesMap_rs11803731["SNPedia.com - rs11803731"] = "https://www.snpedia.com/index.php/Rs11803731"
|
2024-04-11 15:51:56 +02:00
|
|
|
|
|
|
|
rule4_Locus1Object := RuleLocus{
|
|
|
|
|
|
|
|
LocusIdentifier: "9079c9",
|
|
|
|
LocusRSID: 11803731,
|
|
|
|
BasePairsList: []string{"A;A"},
|
|
|
|
}
|
|
|
|
rule4_LociList := []RuleLocus{rule4_Locus1Object}
|
|
|
|
|
|
|
|
rule4_OutcomePointsMap := make(map[string]int)
|
|
|
|
rule4_OutcomePointsMap["Straight"] = 2
|
|
|
|
|
|
|
|
rule4_Object := TraitRule{
|
|
|
|
RuleIdentifier: "34e6d2",
|
|
|
|
LociList: rule4_LociList,
|
|
|
|
OutcomePointsMap: rule4_OutcomePointsMap,
|
2024-07-19 19:16:28 +02:00
|
|
|
ReferencesMap: maps.Clone(referencesMap_rs11803731),
|
2024-04-11 15:51:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
//TODO: Make sure this is true, that a heterozygote has a higher likelihood of curly hair
|
|
|
|
|
|
|
|
rule5_Locus1Object := RuleLocus{
|
|
|
|
|
|
|
|
LocusIdentifier: "d0aad3",
|
|
|
|
LocusRSID: 11803731,
|
|
|
|
BasePairsList: []string{"A;T", "T;A"},
|
|
|
|
}
|
|
|
|
rule5_LociList := []RuleLocus{rule5_Locus1Object}
|
|
|
|
|
|
|
|
rule5_OutcomePointsMap := make(map[string]int)
|
|
|
|
rule5_OutcomePointsMap["Curly"] = 1
|
|
|
|
|
|
|
|
rule5_Object := TraitRule{
|
|
|
|
RuleIdentifier: "cf6cb5",
|
|
|
|
LociList: rule5_LociList,
|
|
|
|
OutcomePointsMap: rule5_OutcomePointsMap,
|
2024-07-19 19:16:28 +02:00
|
|
|
ReferencesMap: maps.Clone(referencesMap_rs11803731),
|
2024-04-11 15:51:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
rule6_Locus1Object := RuleLocus{
|
|
|
|
|
|
|
|
LocusIdentifier: "f554b5",
|
|
|
|
LocusRSID: 11803731,
|
|
|
|
BasePairsList: []string{"T;T"},
|
|
|
|
}
|
|
|
|
rule6_LociList := []RuleLocus{rule6_Locus1Object}
|
|
|
|
|
|
|
|
rule6_OutcomePointsMap := make(map[string]int)
|
|
|
|
rule6_OutcomePointsMap["Curly"] = 2
|
|
|
|
|
|
|
|
rule6_Object := TraitRule{
|
|
|
|
RuleIdentifier: "2ba65b",
|
|
|
|
LociList: rule6_LociList,
|
|
|
|
OutcomePointsMap: rule6_OutcomePointsMap,
|
2024-07-19 19:16:28 +02:00
|
|
|
ReferencesMap: maps.Clone(referencesMap_rs11803731),
|
2024-04-11 15:51:56 +02:00
|
|
|
}
|
|
|
|
|
2024-07-19 19:16:28 +02:00
|
|
|
referencesMap_rs17646946 := make(map[string]string)
|
|
|
|
referencesMap_rs17646946["SNPedia.com - rs17646946"] = "https://www.snpedia.com/index.php/Rs17646946"
|
2024-04-11 15:51:56 +02:00
|
|
|
|
|
|
|
rule7_Locus1Object := RuleLocus{
|
|
|
|
|
|
|
|
LocusIdentifier: "f500c2",
|
|
|
|
LocusRSID: 17646946,
|
|
|
|
BasePairsList: []string{"G;G"},
|
|
|
|
}
|
|
|
|
rule7_LociList := []RuleLocus{rule7_Locus1Object}
|
|
|
|
|
|
|
|
rule7_OutcomePointsMap := make(map[string]int)
|
|
|
|
rule7_OutcomePointsMap["Straight"] = 2
|
|
|
|
|
|
|
|
rule7_Object := TraitRule{
|
|
|
|
RuleIdentifier: "ae3274",
|
|
|
|
LociList: rule7_LociList,
|
|
|
|
OutcomePointsMap: rule7_OutcomePointsMap,
|
2024-07-19 19:16:28 +02:00
|
|
|
ReferencesMap: maps.Clone(referencesMap_rs17646946),
|
2024-04-11 15:51:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
rule8_Locus1Object := RuleLocus{
|
|
|
|
|
|
|
|
LocusIdentifier: "f1144a",
|
|
|
|
LocusRSID: 17646946,
|
|
|
|
BasePairsList: []string{"A;G", "G;A"},
|
|
|
|
}
|
|
|
|
rule8_LociList := []RuleLocus{rule8_Locus1Object}
|
|
|
|
|
|
|
|
rule8_OutcomePointsMap := make(map[string]int)
|
|
|
|
rule8_OutcomePointsMap["Curly"] = 1
|
|
|
|
|
|
|
|
rule8_Object := TraitRule{
|
|
|
|
RuleIdentifier: "a546bf",
|
|
|
|
LociList: rule8_LociList,
|
|
|
|
OutcomePointsMap: rule8_OutcomePointsMap,
|
2024-07-19 19:16:28 +02:00
|
|
|
ReferencesMap: maps.Clone(referencesMap_rs17646946),
|
2024-04-11 15:51:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
rule9_Locus1Object := RuleLocus{
|
|
|
|
|
|
|
|
LocusIdentifier: "468bb3",
|
|
|
|
LocusRSID: 17646946,
|
|
|
|
BasePairsList: []string{"A;A"},
|
|
|
|
}
|
|
|
|
rule9_LociList := []RuleLocus{rule9_Locus1Object}
|
|
|
|
|
|
|
|
rule9_OutcomePointsMap := make(map[string]int)
|
|
|
|
rule9_OutcomePointsMap["Curly"] = 2
|
|
|
|
|
|
|
|
rule9_Object := TraitRule{
|
|
|
|
RuleIdentifier: "b8dc0a",
|
|
|
|
LociList: rule9_LociList,
|
|
|
|
OutcomePointsMap: rule9_OutcomePointsMap,
|
2024-07-19 19:16:28 +02:00
|
|
|
ReferencesMap: maps.Clone(referencesMap_rs17646946),
|
2024-04-11 15:51:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
hairTextureRulesList := []TraitRule{rule1_Object, rule2_Object, rule3_Object, rule4_Object, rule5_Object, rule6_Object, rule7_Object, rule8_Object, rule9_Object}
|
|
|
|
|
2024-07-19 19:16:28 +02:00
|
|
|
|
|
|
|
lociList_Rules := []int64{7349332, 11803731, 17646946}
|
2024-04-11 15:51:56 +02:00
|
|
|
|
|
|
|
referencesMap := make(map[string]string)
|
|
|
|
referencesMap["SNPedia.com - Hair Curliness"] = "https://www.snpedia.com/index.php/Hair_curliness"
|
|
|
|
|
|
|
|
outcomesList := []string{"Straight", "Curly"}
|
|
|
|
|
2024-07-19 19:16:28 +02:00
|
|
|
hairTextureLociList := helpers.GetListOfMapKeys(locusReferencesMap)
|
|
|
|
|
2024-04-11 15:51:56 +02:00
|
|
|
hairTextureObject := Trait{
|
|
|
|
|
|
|
|
TraitName: "Hair Texture",
|
|
|
|
TraitDescription: "The texture of a person's head hair.",
|
2024-07-19 19:16:28 +02:00
|
|
|
DiscreteOrNumeric: "Discrete",
|
|
|
|
LocusReferencesMap: locusReferencesMap,
|
2024-04-11 15:51:56 +02:00
|
|
|
LociList: hairTextureLociList,
|
2024-07-19 19:16:28 +02:00
|
|
|
LociList_Rules: lociList_Rules,
|
2024-04-11 15:51:56 +02:00
|
|
|
RulesList: hairTextureRulesList,
|
|
|
|
OutcomesList: outcomesList,
|
2024-08-13 15:25:47 +02:00
|
|
|
NumericValueFormatter: nil,
|
2024-07-19 19:16:28 +02:00
|
|
|
ReferencesMap: referencesMap,
|
2024-04-11 15:51:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return hairTextureObject
|
|
|
|
}
|
|
|
|
|
|
|
|
|