package traits

import "seekia/internal/helpers"

import "maps"

func getHomosexualnessTraitObject()Trait{

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

	referencesMap_List1 := make(map[string]string)
	referencesMap_List1["Large-scale GWAS reveals insights into the genetic architecture of same-sex sexual behavior"] = "https://www.science.org/doi/10.1126/science.aat7693"

	lociList_1 := []int64{
		10261857,
		28371400,
		34730029,
		11114975,
	}

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

	homosexualnessLociList := helpers.GetListOfMapKeys(locusReferencesMap)

	referencesMap := make(map[string]string)
	referencesMap["Large-scale GWAS reveals insights into the genetic architecture of same-sex sexual behavior"] = "https://www.science.org/doi/10.1126/science.aat7693"

	valueFormatter := func(inputHomosexualness float64, showUnits bool)(string, error){

		inputHomosexualnessString := helpers.ConvertIntToString(int(inputHomosexualness))

		if (showUnits == false){
			return inputHomosexualnessString, nil
		}

		formattedValue := inputHomosexualnessString + "/10"

		return formattedValue, nil
	}

	homosexualnessObject := Trait{
		TraitName: "Homosexualness",
		TraitDescription: "Feelings of sexual attraction towards people who belong to a person's own sex.",
		DiscreteOrNumeric: "Numeric",
		LocusReferencesMap: locusReferencesMap,
		LociList: homosexualnessLociList,
		LociList_Rules: []int64{},
		RulesList: []TraitRule{},
		OutcomesList: []string{},
		NumericValueFormatter: valueFormatter,
		ReferencesMap: referencesMap,
	}

	return homosexualnessObject
}

