package traits

import "seekia/internal/helpers"

import "maps"

func getSkinColorTraitObject()Trait{

	// Map Structure: rsID -> References Map
	locusReferencesMap := make(map[int64]map[string]string)

	referencesMap_List1 := make(map[string]string)
	referencesMap_List1["SNPedia.com - Appearance"] = "https://www.snpedia.com/index.php/Appearance"

	lociList_1 := []int64{

		//TODO: Add more SNPs.

		// These SNPs are from https://www.snpedia.com/index.php/Appearance
		1800422,
		1126809,
		26722,
		1426654,
		642742,
	}

	for _, rsID := range lociList_1{
		locusReferencesMap[rsID] = maps.Clone(referencesMap_List1)
	}

	referencesMap_List2 := make(map[string]string)
	referencesMap_List2["Genome-wide association studies of pigmentation and skin cancer: a review and meta-analysis"] = "https://pubmed.ncbi.nlm.nih.gov/20546537/"

	lociList_2 := []int64{

		// These SNPs are from https://pubmed.ncbi.nlm.nih.gov/20546537/
		16891982,
		12203592,
		1042602,
		1834640,
	}

	for _, rsID := range lociList_2{
		locusReferencesMap[rsID] = maps.Clone(referencesMap_List2)
	}

	referencesMap_List3 := make(map[string]string)
	referencesMap_List3["Meta-analysis and prioritization of human skin pigmentation-associated GWAS-SNPs using ENCODE data-based web-tools"] = "https://link.springer.com/article/10.1007/s00403-019-01891-3"

	lociList_3 := []int64{

		// These SNPs are from https://link.springer.com/article/10.1007/s00403-019-01891-3
		7182710,
		784416,
		7176696,
		937171,
		2762462,
		10424065,
		142317543,
		3212369,
		3212368,
	}

	for _, rsID := range lociList_3{
		locusReferencesMap[rsID] = maps.Clone(referencesMap_List3)
	}


	referencesMap := make(map[string]string)
	referencesMap["SNPedia.com - Appearance"] = "https://www.snpedia.com/index.php/Appearance"
	referencesMap["Genome-wide association studies of pigmentation and skin cancer: a review and meta-analysis"] = "https://pubmed.ncbi.nlm.nih.gov/20546537/"
	referencesMap["Meta-analysis and prioritization of human skin pigmentation-associated GWAS-SNPs using ENCODE data-based web-tools"] = "https://link.springer.com/article/10.1007/s00403-019-01891-3"

	lociList := helpers.GetListOfMapKeys(locusReferencesMap)

	skinColorObject := Trait{
		TraitName: "Skin Color",
		TraitDescription: "The color of a person's skin.",
		DiscreteOrNumeric: "Discrete",
		LocusReferencesMap: locusReferencesMap,
		LociList: lociList,
		LociList_Rules: []int64{},
		RulesList: []TraitRule{},
		OutcomesList: []string{},
		NumericValueFormatter: nil,
		ReferencesMap: referencesMap,
	}

	return skinColorObject
}

