2024-04-11 15:51:56 +02:00
package gui
// helpGui.go implements pages to explain Seekia's features and functionality to users
import "fyne.io/fyne/v2"
import "fyne.io/fyne/v2/container"
import "fyne.io/fyne/v2/theme"
import "fyne.io/fyne/v2/widget"
import "seekia/resources/geneticReferences/monogenicDiseases"
//TODO: Improve many of these descriptions
func setHelpPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Help" )
description1 := getLabelCentered ( "Select your desires on the Desires page." )
description2 := getLabelCentered ( "View matches on the Matches page." )
description3 := getLabelCentered ( "Build and broadcast your profile on the Profile page." )
description4 := getLabelCentered ( "You can view matches without broadcasting a profile." )
description5 := getBoldLabelCentered ( "More help pages are coming soon." )
//TODO: Add buttons and navigation to view more help pages.
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 )
setPageContent ( page , window )
}
func setMateProfileExpirationExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Mate Profile Expiration" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Mate Profile Expiration" )
//TODO: Retrieve the expiration time from the parameters
description1 := getLabelCentered ( "All mate profiles expire after 3 months." )
description2 := getLabelCentered ( "You must broadcast a new profile at least this often." )
description3 := getLabelCentered ( "Your new profile does not need to have any changes." )
description4 := getLabelCentered ( "The Broadcast page will tell you when your profile will expire." )
description5 := getLabelCentered ( "This is seperate from your identity balance, which also expires." )
description6 := getLabelCentered ( "Your identity balance must also be funded to broadcast any profiles." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , widget . NewSeparator ( ) , description5 , description6 , widget . NewSeparator ( ) )
setPageContent ( page , window )
}
func setGreetAndRejectExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Greet And Reject" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Greet And Reject" )
description1 := getLabelCentered ( "Seekia users can send Greet and Reject messages." )
description2 := getLabelCentered ( "Greet messages are sent to indicate interest in a user." )
description3 := getLabelCentered ( "Reject messages are sent to tell a user they are not interested." )
description4 := getLabelCentered ( "You can filter your matches to only show users who have greeted or contacted you." )
description5 := getLabelCentered ( "You can also hide users who have rejected you." )
description6 := getLabelCentered ( "You can undo a rejection by sending a greeting." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , widget . NewSeparator ( ) )
setPageContent ( page , window )
}
func setSexExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Sex" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Sex" )
description1 := getLabelCentered ( "Sex refers to a person's physical sex." )
description2 := getLabelCentered ( "Male: XY chromosomes, born with male anatomy." )
description3 := getLabelCentered ( "Female: XX chromosomes, born with female anatomy." )
description4 := getLabelCentered ( "Intersex Male: Not either of the above categories, but closer to Male." )
description5 := getLabelCentered ( "Intersex Female: Not any of the above categories, but closer to Female." )
description6 := getLabelCentered ( "Intersex: Not any of the above categories." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 )
setPageContent ( page , window )
}
func setMateProfileAttributeVisibilityExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Profile Attribute Visibility" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Profile Attribute Visibility" )
description1 := getLabelCentered ( "Some Mate profile attributes can have their visibility turned on or off." )
description2 := getLabelCentered ( "If you turn an attribute's visibility off, it will not show up in your profile." )
description3 := getLabelCentered ( "This feature is needed to be able to calculate desires privately." )
description4 := getLabelCentered ( "For example, if you want to calculate distance, you must provide your location." )
description5 := getLabelCentered ( "If you don't want your profile to contain your location, you can turn off its visibility." )
description6 := getLabelCentered ( "This way, you can still calculate distance without sharing your location publicly." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 )
setPageContent ( page , window )
}
func setProfileGenomeInfoExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Profile Genome Info" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Profile Genome Information" )
description1 := getLabelCentered ( "Seekia allows users to share their genome information." )
description2 := getLabelCentered ( "Users can learn about the monogenic disease, polygenic disease, and trait information for offspring with each user." )
description3 := getLabelCentered ( "Users can learn the probability of their offspring having a specific disease." )
description4 := getLabelCentered ( "Users can use this information to reduce the probability of their offspring having diseases." )
description5 := getLabelCentered ( "Users can choose their mate to influence their offspring's trait and disease risk." )
description6 := getLabelCentered ( "Only specific locations of a user's genome are shared." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 )
setPageContent ( page , window )
}
func setDesireFilterOptionsExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Desire Filter Options" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Desire Filter Options" )
description1 := getLabelCentered ( "Each desire has 1 or 2 filter options to configure." )
description2 := getBoldLabelCentered ( "Filter All" )
description3 := getLabelCentered ( "When enabled, only users who fulfill the desire will be shown in your matches." )
description4 := getLabelCentered ( "This does not filter users who have not responded." )
description5 := getBoldLabelCentered ( "Require Response" )
description6 := getLabelCentered ( "When enabled, only users who have responded to the attribute will be shown." )
description7 := getLabelCentered ( "This does not filter users who responded, but do not fulfill the desire." )
description8 := getLabelCentered ( "If you disable both options, the desire will only effect match score calculations." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , widget . NewSeparator ( ) , description2 , description3 , description4 , widget . NewSeparator ( ) , description5 , description6 , description7 , widget . NewSeparator ( ) , description8 )
setPageContent ( page , window )
}
func setAncestryCompositionDesireRestrictiveModeExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Restrictive Mode" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Ancestry Composition Desire - Restrictive Mode" )
description1 := getLabelCentered ( "The ancestry composition desire has 2 modes: Restrictive and Non-Restrictive." )
description2 := getLabelCentered ( "In restrictive mode, all ancestral groups which you desire must be described." )
description3 := getLabelCentered ( "For example, let's say you add 80-100% Melanesian as your only location desire." )
description4 := getLabelCentered ( "In non-restrictive mode, anyone who is 80-100% Melanesian will fulfill the desire." )
description5 := getLabelCentered ( "In restrictive mode, only users whom are 100% Melanesian will fulfill the desire." )
description6 := getLabelCentered ( "This is because in restrictive mode, you must define all racial amounts you will tolerate." )
description7 := getLabelCentered ( "In restrictive mode, if you will tolerate 0-2% for all locations, you must add 0-2% for all locations." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 )
setPageContent ( page , window )
}
func setOffspringAncestryCompositionExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Offspring Ancestry Composition" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Offspring Ancestry Composition" )
description1 := getLabelCentered ( "Seekia is able to calculate the ancestry composition of an offspring between two users." )
description2 := getLabelCentered ( "Any conceived offspring's ancestry composition may vary slightly from the prediction." )
description3 := getLabelCentered ( "Offspring from the same parents will not always inherit the same genetic sections from each parent." )
description4 := getLabelCentered ( "Consequently, siblings range between being ~40%-60% genetically identical." )
description5 := getLabelCentered ( "However, sometimes the offspring ancestry composition prediction is ~100% accurate." )
description6 := getLabelCentered ( "For example, if both parents are 100% Melanesian, their offspring will always be ~100% Melanesian." )
description7 := getLabelCentered ( "This rule applies for all ancestral locations, not just Melanesian." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 )
setPageContent ( page , window )
}
func setGenomePhasingExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Genome Phasing" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Genome Phasing" )
description1 := getLabelCentered ( "A raw genome file is either Phased or Unphased" )
description2 := getLabelCentered ( "A phased genome file describes which parent each gene was inherited from." )
description3 := getLabelCentered ( "This allows Seekia to more accurately diagnose genetic diseases." )
description4 := getLabelCentered ( "Only some companies provide phased genome sequencing." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 )
setPageContent ( page , window )
}
func setGenomeSNPCountExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Genome SNP Count" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Genome SNP Count" )
description1 := getLabelCentered ( "Each raw genome file has an SNP count." )
description2 := getLabelCentered ( "This is the number of SNPs, or locations, sequenced." )
description3 := getLabelCentered ( "The higher this number, the more information your genome file contains." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 )
setPageContent ( page , window )
}
func setCombinedGenomesExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Combined Genomes" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Combined Genomes" )
description1 := getLabelCentered ( "Seekia combines multiple genome files into two different genomes." )
description2 := getLabelCentered ( "Genome sequencing can be inaccurate, so multiple imported genome files will sometimes disagree." )
description3 := getLabelCentered ( "Each genome file also contains different recorded locations." )
description4 := getLabelCentered ( "The Only Exclude Conflicts genome will include genome locations that only 1 genome has reported." )
description5 := getLabelCentered ( "The Only Include Shared genome only includes genome locations where at least 2 genomes agree." )
description6 := getLabelCentered ( "The Only Include Shared genome is the most accurate, but may contain less information." )
description7 := getLabelCentered ( "You should study all imported genomes to see what they report." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 )
setPageContent ( page , window )
}
func setGenomeHasMonogenicDiseaseVariantMutationExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Genome Has Mutation" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Genome Has Mutation" )
description1 := getLabelCentered ( "A monogenic disease variant is a specific defect in a gene that causes the disease." )
description2 := getLabelCentered ( "Each genome can either have 0, 1, or 2 mutations for each variant." )
description3 := getLabelCentered ( "If a genome has a variant mutation, then either 1 or 2 mutations exist." )
description4 := getLabelCentered ( "For a recessive monogenic disease, you need 2 mutations, one on each chromosome, to have the disease." )
description5 := getLabelCentered ( "For a dominant monogenic disease, you only need at least 1 mutation to have the disease." )
description6 := getLabelCentered ( "Unless your genome is phased, Seekia does not know which chromosome contains each mutation." )
description7 := getLabelCentered ( "Seekia calculates your probabilities of having and passing the disease automatically." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 )
setPageContent ( page , window )
}
func setMonogenicDiseaseVariantsExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Monogenic Disease Variants" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Monogenic Disease Variants" )
description1 := getLabelCentered ( "A monogenic disease variant is a specific defect in a gene that causes the disease." )
description2 := getLabelCentered ( "Each genome can either have 0, 1, or 2 mutations for each variant." )
description3 := getLabelCentered ( "For a recessive monogenic disease, you at least 2 mutations, one on each chromosome, to have the disease." )
description4 := getLabelCentered ( "For a dominant monogenic disease, you only need 1 mutation to have the disease." )
description5 := getLabelCentered ( "Unless your genome is phased, Seekia does not know which chromosome contains each mutation." )
description6 := getLabelCentered ( "Seekia calculates your probabilities of having and passing the disease automatically." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 )
setPageContent ( page , window )
}
func setVariantEffectIsMildExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Effect Is Mild" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Variant Effect Is Mild" )
description1 := getLabelCentered ( "Some monogenic disease variants are known to be mild." )
description2 := getLabelCentered ( "They are known to only cause mild disease symptoms for the affected person." )
description3 := getLabelCentered ( "This may not be true for all cases." )
description4 := getLabelCentered ( "A defective gene is affected by all of its variants." )
description5 := getLabelCentered ( "If you have multiple variants, you will usually have a more severe disease." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 )
setPageContent ( page , window )
}
func setNumberOfTestedVariantsExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Tested Variants" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Number of Tested Variants" )
description1 := getLabelCentered ( "Each monogenic disease has a set of variants Seekia tests for." )
description2 := getLabelCentered ( "These variants are specific mutations that cause the monogenic disease." )
description3 := getLabelCentered ( "The greater the number of tested variants is, the more accurate the results will be." )
description4 := getLabelCentered ( "Seekia cannot test for variants whose location your genome file does not contain." )
description5 := getLabelCentered ( "Seekia also does not test for many very rare disease variants." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 )
setPageContent ( page , window )
}
2024-06-02 10:43:39 +02:00
func setNumberOfPhasedLociExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Phased Loci" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Number of Phased Loci" )
description1 := getLabelCentered ( "Each monogenic disease has a set of variants Seekia tests for." )
description2 := getLabelCentered ( "These variants are specific mutations that cause each monogenic disease." )
description3 := getLabelCentered ( "Each variant effects a specific locus of the genome." )
description4 := getLabelCentered ( "Each genome file reports the values of loci." )
description5 := getLabelCentered ( "A reported value can either be phased or unphased." )
description6 := getLabelCentered ( "Phased values provide more information than unphased values." )
description7 := getLabelCentered ( "The greater the number of phased loci is, the more accurate a genetic analysis will be." )
description8 := getLabelCentered ( "Import a phased genome for the most accurate genetic analysis results." )
description9 := getLabelCentered ( "Use a genome sequencing provider which produces phased genome files." )
//TODO: Explain that phased genomes don't always increase accuracy, and the results may still be fully accurate
// For example, if you have no mutations or if you only have 1 mutation on 1 locus,
// a phased sequence has no impact on your disease analysis results.
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 , description8 , description9 )
setPageContent ( page , window )
}
2024-04-11 15:51:56 +02:00
func setCoupleGenomePairExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Couple Genome Pair" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Couple Genome Pair" )
description1 := getLabelCentered ( "A couple analysis analyzes either 1 or 2 genome pairs." )
description2 := getLabelCentered ( "Each genome pair contains 1 genome from each person." )
description3 := getLabelCentered ( "The results from each genome pair may differ." )
description4 := getLabelCentered ( "You should view which genomes were analyzed for each genome pair." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 )
setPageContent ( page , window )
}
func setPersonProbabilityOfPassingVariantExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Probability Of Passing Variant" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Probability Of Passing A Variant" )
description1 := getLabelCentered ( "This is the probability that a person will pass a monogenic disease variant to their offspring." )
description2 := getLabelCentered ( "If the disease is recessive, both parents need to pass a variant for the offspring to have the disease." )
description3 := getLabelCentered ( "If the disease is dominant, only one parent needs to pass a variant for the offspring to have the disease." )
description4 := getLabelCentered ( "This probability becomes more accurate if more variants are tested." )
description5 := getLabelCentered ( "The person's imported genome may not contain the locations for some variants." )
description6 := getLabelCentered ( "Seekia also does not test for many rare monogenic disease variants." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 )
setPageContent ( page , window )
}
2024-06-02 10:43:39 +02:00
func setPersonHasMonogenicDiseaseExplainerPage ( window fyne . Window , previousPage func ( ) ) {
2024-04-11 15:51:56 +02:00
2024-06-02 10:43:39 +02:00
title := getPageTitleCentered ( "Help - Person Has Monogenic Disease" )
2024-04-11 15:51:56 +02:00
backButton := getBackButtonCentered ( previousPage )
2024-06-02 10:43:39 +02:00
subtitle := getPageSubtitleCentered ( "Person Has Monogenic Disease" )
2024-04-11 15:51:56 +02:00
2024-06-02 10:43:39 +02:00
description1 := getLabelCentered ( "This describes if the analyzed person has this monogenic disease." )
description2 := getLabelCentered ( "This result becomes more accurate if more variants are tested." )
description3 := getLabelCentered ( "It also become more accurate in certain circumstances if the tested loci are phased." )
description4 := getLabelCentered ( "The person's imported genomes may not contain locations for some variants." )
description5 := getLabelCentered ( "Seekia also does not test for many rare disease variants." )
2024-04-11 15:51:56 +02:00
2024-06-02 10:43:39 +02:00
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 )
2024-04-11 15:51:56 +02:00
setPageContent ( page , window )
}
func setOffspringProbabilityOfHavingMonogenicDiseaseExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Offspring Monogenic Disease Probability" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Offspring Probability Of Having Monogenic Disease" )
description1 := getLabelCentered ( "This is the probability that an offspring from this couple will have the disease." )
description2 := getLabelCentered ( "This probability is more accurate if more variants are tested." )
description3 := getLabelCentered ( "The couple's imported genomes may not contain locations for some variants." )
description4 := getLabelCentered ( "Seekia also does not test for many rare disease variants." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 )
setPageContent ( page , window )
}
func setOffspringProbabilityOfHavingVariantExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Offspring Variant Probability" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Offspring Probability Of Having Variant" )
description1 := getLabelCentered ( "This is the probability that an offspring from this couple will have a variant for a monogenic disease." )
description2 := getLabelCentered ( "If the disease is dominant, an offspring with any variants will have the disease." )
description3 := getLabelCentered ( "If the disease is recessive, an offspring having a variant will not necessarily have the disease." )
description4 := getLabelCentered ( "They could be a disease carrier who does not experience any symptoms of the disease." )
description5 := getLabelCentered ( "Couples only need to try to avoid the offspring having the disease." )
description6 := getBoldLabelCentered ( "This probability is only shown to satisfy curiosity." )
description7 := getLabelCentered ( "This probability is more accurate if more variants are tested." )
description8 := getLabelCentered ( "The couple's imported genomes may not contain locations for some variants." )
description9 := getLabelCentered ( "Seekia also does not test for many rare disease variants." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 , description8 , description9 )
setPageContent ( page , window )
}
func setPersonGeneticAnalysisConflictExistsExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Conflict Exists" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Genome Conflict Exists" )
description1 := getLabelCentered ( "If a person has multiple genome files, the contents from each file may differ." )
description2 := getLabelCentered ( "This is because the sequencing process recorded different values." )
description3 := getLabelCentered ( "All genomes should contain the same sequence, so one of the genomes must have an error." )
description4 := getLabelCentered ( "These genomes may have conflicting analysis results." )
description5 := getLabelCentered ( "If they have conflicting results, you should view the results for each genome." )
description6 := getLabelCentered ( "Import more genomes to get more accurate results." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 )
setPageContent ( page , window )
}
func setCoupleGeneticAnalysisConflictExistsExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Conflict Exists" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Conflict Exists" )
description1 := getLabelCentered ( "If either person has multiple genomes, multiple genome pairs will be created." )
description2 := getLabelCentered ( "These genome pairs may have conflicting analysis results." )
description3 := getLabelCentered ( "These conflicts are caused by errors in the genome sequencing process." )
description4 := getLabelCentered ( "If they have conflicting results, you should view both genome pair results." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 )
setPageContent ( page , window )
}
func setPolygenicDiseaseAverageLifetimeRiskExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Lifetime Polygenic Disease Risk" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Lifetime Polygenic Disease Risk" )
description1 := getLabelCentered ( "Each polygenic disease has a chart describing its lifetime risk." )
description2 := getLabelCentered ( "This represents the probability that any person will have the disease." )
description3 := getLabelCentered ( "For example, lets say the lifetime risk for a disease is 10%, if you are a Male between 50-60." )
description4 := getLabelCentered ( "This means that Males between the ages of 50-60 have a 10% probability of suffering from the disease." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 )
setPageContent ( page , window )
}
func setPolygenicDiseaseRiskScoreExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Polygenic Disease Risk Score" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Polygenic Disease Risk Score" )
description1 := getLabelCentered ( "Person genetic analyses contain a person's risk score for each polygenic disease." )
description2 := getLabelCentered ( "This score describes their overall risk for the disease." )
description3 := getLabelCentered ( "0/10 = Lowest risk, 10/10 = Highest risk." )
description4 := getLabelCentered ( "The more locations that are tested, the more accurate the score is." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 )
setPageContent ( page , window )
}
func setOffspringPolygenicDiseaseRiskScoreExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Offspring Polygenic Disease Risk Score" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Offspring Polygenic Disease Risk Score" )
description1 := getLabelCentered ( "Couple genetic analyses contain an offspring's risk score for each polygenic disease." )
description2 := getLabelCentered ( "This score describes the average risk score for offspring produced by the couple." )
description3 := getLabelCentered ( "0/10 = Lowest risk, 10/10 = Highest risk." )
description4 := getLabelCentered ( "The more locations that are tested, the more accurate the score is." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 )
setPageContent ( page , window )
}
func setPolygenicDiseaseLociExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Polygenic Disease Loci" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Polygenic Disease Loci" )
description1 := getLabelCentered ( "Each polygenic disease has a set of associated genome loci." )
description2 := getLabelCentered ( "These are locations on the genome that can be tested to determine disease risk." )
description3 := getLabelCentered ( "The more loci that your genome contains, the more accurate your disease risk score will be." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 )
setPageContent ( page , window )
}
func setPolygenicDiseaseNumberOfLociTestedExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Number Of Loci Tested" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Polygenic Disease - Number Of Loci Tested" )
description1 := getLabelCentered ( "A person's polygenic disease risk score is calculated by testing locations on their genome." )
description2 := getLabelCentered ( "Each location will represent either an increased risk, decreased risk, or no impact on risk." )
description3 := getLabelCentered ( "The more locations that are tested, the more accurate the risk score will be." )
description4 := getLabelCentered ( "Import a full genome sequence to test all locations." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 )
setPageContent ( page , window )
}
func setOffspringPolygenicDiseaseNumberOfLociTestedExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Number Of Loci Tested" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Polygenic Disease - Number Of Loci Tested" )
description1 := getLabelCentered ( "An offspring's polygenic disease risk score is calculated by testing locations on their genome." )
description2 := getLabelCentered ( "Each location will represent either an increased risk, decreased risk, or no impact on risk." )
description3 := getLabelCentered ( "The more locations that are tested, the more accurate the risk score will be." )
description4 := getLabelCentered ( "A location will only be considered tested if it exists in both parent's genomes." )
description5 := getLabelCentered ( "Seekia will test all 4 possible outcomes for each location." )
description6 := getLabelCentered ( "Import a full genome sequence for both parents to test all locations." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 )
setPageContent ( page , window )
}
func setPolygenicDiseaseLocusRiskWeightExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Locus Risk Weight" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Locus Risk Weight" )
description1 := getLabelCentered ( "A polygenic disease risk score is calculated by testing many locations on a genome." )
description2 := getLabelCentered ( "A genome will have a risk weight for each locus." )
description3 := getLabelCentered ( "A negative weight reduces the risk of the disease." )
description4 := getLabelCentered ( "A positive weight increases the risk of the disease." )
description5 := getLabelCentered ( "A 0 weight has no effect on the risk." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 )
setPageContent ( page , window )
}
func setOffspringPolygenicDiseaseLocusRiskWeightExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Locus Risk Weight" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Offspring Locus Risk Weight" )
description1 := getLabelCentered ( "A polygenic disease risk score is calculated by testing many locations on a genome." )
description2 := getLabelCentered ( "A genome will have a risk weight for each locus." )
description3 := getLabelCentered ( "A negative weight reduces the risk of the disease." )
description4 := getLabelCentered ( "A positive weight increases the risk of the disease." )
description5 := getLabelCentered ( "A 0 weight has no effect on the risk." )
description6 := getLabelCentered ( "An offspring's locus risk weight represents the average risk weight for all 4 possible locus outcomes." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 )
setPageContent ( page , window )
}
func setPolygenicDiseaseLocusRiskWeightProbabilityExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Risk Weight Probability" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Locus Risk Weight Probability" )
description1 := getLabelCentered ( "A polygenic disease risk score is calculated by testing many locations on a genome." )
description2 := getLabelCentered ( "A genome will have a risk weight for each locus." )
description3 := getLabelCentered ( "A risk weight probability describes the probability of having that risk weight." )
description4 := getLabelCentered ( "For example, lets suppose a risk weight of 2 has a probability of 5%" )
description5 := getLabelCentered ( "This means that 5% of people will have a risk weight of 2 at this locus." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 )
setPageContent ( page , window )
}
2024-07-19 19:16:28 +02:00
func setDiscreteTraitNeuralNetworkPredictionExplainerPage ( window fyne . Window , previousPage func ( ) ) {
2024-04-11 15:51:56 +02:00
2024-07-19 19:16:28 +02:00
title := getPageTitleCentered ( "Help - Neural Network Prediction" )
2024-04-11 15:51:56 +02:00
backButton := getBackButtonCentered ( previousPage )
2024-07-19 19:16:28 +02:00
subtitle := getPageSubtitleCentered ( "Discrete Trait Neural Network Prediction" )
2024-04-11 15:51:56 +02:00
2024-07-19 19:16:28 +02:00
description1 := getLabelCentered ( "Person genetic analyses contain discrete trait analyses." )
description2 := getLabelCentered ( "There are 2 discrete trait analysis methods: Neural Networks and Rules." )
description3 := getLabelCentered ( "Each trait can be analyzed by either rules or a neural network." )
description4 := getLabelCentered ( "Neural network prediction is calculated by inputing a genome's loci into a neural network." )
description5 := getLabelCentered ( "Each trait has multiple outcomes, and the neural network predicts a single outcome." )
description6 := getLabelCentered ( "The higher the quantity of tested loci, the more accurate the result is." )
description7 := getLabelCentered ( "The probability that a neural network's prediction is accurate is called its Confidence." )
2024-04-11 15:51:56 +02:00
2024-07-19 19:16:28 +02:00
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 )
2024-04-11 15:51:56 +02:00
setPageContent ( page , window )
}
2024-07-19 19:16:28 +02:00
func setOffspringDiscreteTraitNeuralNetworkPredictionExplainerPage ( window fyne . Window , previousPage func ( ) ) {
2024-04-11 15:51:56 +02:00
2024-07-19 19:16:28 +02:00
title := getPageTitleCentered ( "Help - Neural Network Prediction" )
2024-04-11 15:51:56 +02:00
backButton := getBackButtonCentered ( previousPage )
2024-07-19 19:16:28 +02:00
subtitle := getPageSubtitleCentered ( "Offspring Discrete Trait Neural Network Prediction" )
2024-04-11 15:51:56 +02:00
2024-07-19 19:16:28 +02:00
description1 := getLabelCentered ( "Couple genetic analyses contain discrete trait analyses." )
description2 := getLabelCentered ( "There are 2 discrete trait analysis methods: Neural Networks and Rules." )
description3 := getLabelCentered ( "Each trait can be analyzed by either rules or a neural network." )
description4 := getLabelCentered ( "Neural network prediction is calculated by inputing a genome's loci into a neural network." )
description5 := getLabelCentered ( "Each trait has multiple outcomes, and the neural network predicts the probability of each outcome." )
description6 := getLabelCentered ( "The higher the quantity of known loci, the more accurate the result is." )
description7 := getLabelCentered ( "The probability that a neural network's prediction is accurate is called its Confidence." )
description8 := getLabelCentered ( "For couples, the Confidence is the average of the confidence of 100 prospective offspring predictions." )
2024-04-11 15:51:56 +02:00
2024-07-19 19:16:28 +02:00
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 , description8 )
setPageContent ( page , window )
}
func setDiscreteTraitRulesPredictionExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Rules Prediction" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Discrete Trait Rules Prediction" )
description1 := getLabelCentered ( "Person genetic analyses contain discrete trait analyses." )
description2 := getLabelCentered ( "There are 2 discrete trait analysis methods: Neural Networks and Rules." )
description3 := getLabelCentered ( "Each trait can be analyzed by either rules or a neural network." )
description4 := getLabelCentered ( "Rule prediction is calculated by testing many predictive rules." )
description5 := getLabelCentered ( "Each trait has multiple outcomes, and each outcome has an associated score." )
description6 := getLabelCentered ( "Points are added to an outcome to represent a higher probability." )
description7 := getLabelCentered ( "Points are subtracted from an outcome to represent a lower probability." )
description8 := getLabelCentered ( "The more rules that are tested, the higher the accuracy of the result will be." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 , description8 )
2024-04-11 15:51:56 +02:00
setPageContent ( page , window )
}
2024-07-19 19:16:28 +02:00
func setOffspringDiscreteTraitRulesPredictionExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Rules Prediction" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Offspring Discrete Trait Rules Prediction" )
description1 := getLabelCentered ( "Couple genetic analyses contain discrete trait analyses for the offspring." )
description2 := getLabelCentered ( "There are 2 discrete trait analysis methods: Neural Networks and Rules." )
description3 := getLabelCentered ( "Each trait can be analyzed by either rules or a neural network." )
description4 := getLabelCentered ( "Rule prediction is calculated by testing many predictive rules." )
description5 := getLabelCentered ( "Each trait has multiple outcomes, and each outcome has an associated score." )
description6 := getLabelCentered ( "Points are added to an outcome to represent a higher probability." )
description7 := getLabelCentered ( "Points are subtracted from an outcome to represent a lower probability." )
description8 := getLabelCentered ( "The more rules that are tested, the higher the accuracy of the result will be." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 , description8 )
setPageContent ( page , window )
}
func setDiscreteTraitRulesExplainerPage ( window fyne . Window , previousPage func ( ) ) {
2024-04-11 15:51:56 +02:00
title := getPageTitleCentered ( "Help - Trait Rules" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Trait Rules" )
2024-07-19 19:16:28 +02:00
description1 := getLabelCentered ( "Person genetic analyses contain discrete trait analyses." )
description2 := getLabelCentered ( "Discrete traits has multiple outcomes, and each outcome has an associated score." )
2024-04-11 15:51:56 +02:00
description3 := getLabelCentered ( "A higher score represents a higher probability, and a lower score represents the opposite." )
description4 := getLabelCentered ( "Each outcome's score is determined by trait rules." )
description5 := getLabelCentered ( "A trait rule will add/subtract values to outcome(s)." )
description6 := getLabelCentered ( "If your genome passes a rule, its effects will be applied to the outcome(s)." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 )
setPageContent ( page , window )
}
2024-07-19 19:16:28 +02:00
func setOffspringDiscreteTraitRulesExplainerPage ( window fyne . Window , previousPage func ( ) ) {
2024-04-11 15:51:56 +02:00
title := getPageTitleCentered ( "Help - Trait Rules" )
backButton := getBackButtonCentered ( previousPage )
2024-07-19 19:16:28 +02:00
subtitle := getPageSubtitleCentered ( "Discrete Trait Rules" )
2024-04-11 15:51:56 +02:00
2024-07-19 19:16:28 +02:00
description1 := getLabelCentered ( "Offspring genetic analyses contain discrete trait analyses for a couple's offspring." )
description2 := getLabelCentered ( "Each discrete trait has multiple outcomes, and each outcome has an associated score." )
2024-04-11 15:51:56 +02:00
description3 := getLabelCentered ( "A higher score represents a higher probability, and a lower score represents the opposite." )
description4 := getLabelCentered ( "Each outcome's score is determined by trait rules." )
description5 := getLabelCentered ( "A trait rule will add/subtract values to outcome(s)." )
description6 := getLabelCentered ( "The probability that an offspring will pass a rule is multiplied by the rule's effects." )
description7 := getLabelCentered ( "This effect is then applied to the outcome(s)." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 )
setPageContent ( page , window )
}
2024-07-19 19:16:28 +02:00
func setDiscreteTraitQuantityOfRulesTestedExplainerPage ( window fyne . Window , previousPage func ( ) ) {
2024-04-11 15:51:56 +02:00
2024-07-19 19:16:28 +02:00
title := getPageTitleCentered ( "Help - Quantity Of Rules Tested" )
2024-04-11 15:51:56 +02:00
backButton := getBackButtonCentered ( previousPage )
2024-07-19 19:16:28 +02:00
subtitle := getPageSubtitleCentered ( "Quantity Of Trait Rules Tested" )
2024-04-11 15:51:56 +02:00
2024-07-19 19:16:28 +02:00
description1 := getLabelCentered ( "Person genetic analyses contain discrete trait analyses." )
2024-04-11 15:51:56 +02:00
description2 := getLabelCentered ( "Each trait has multiple outcomes, and each outcome has an associated score." )
description3 := getLabelCentered ( "A higher score represents a higher probability, and a lower score represent the opposite." )
description4 := getLabelCentered ( "Each outcome's score is determined by trait rules." )
description5 := getLabelCentered ( "A trait rule will add/subtract values to outcome(s)." )
description6 := getLabelCentered ( "If your genome passes a rule, its effects will be applied to the outcome(s)." )
description7 := getLabelCentered ( "The more trait rules which are tested, the more accurate the result will be." )
description8 := getLabelCentered ( "Import a full genome sequence to test all rules." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 , description8 )
setPageContent ( page , window )
}
2024-07-19 19:16:28 +02:00
func setOffspringDiscreteTraitQuantityOfRulesTestedExplainerPage ( window fyne . Window , previousPage func ( ) ) {
2024-04-11 15:51:56 +02:00
2024-07-19 19:16:28 +02:00
title := getPageTitleCentered ( "Help - Quantity Of Rules Tested" )
2024-04-11 15:51:56 +02:00
backButton := getBackButtonCentered ( previousPage )
2024-07-19 19:16:28 +02:00
subtitle := getPageSubtitleCentered ( "Offspring Trait Quantity Of Rules Tested" )
2024-04-11 15:51:56 +02:00
description1 := getLabelCentered ( "Offspring genetic analyses contain trait analyses for a couple's offspring." )
description2 := getLabelCentered ( "Each trait has multiple outcomes, and each outcome has an associated score." )
description3 := getLabelCentered ( "A higher score represents a higher probability, and a lower score represents the opposite." )
description4 := getLabelCentered ( "Each outcome's score is determined by trait rules." )
description5 := getLabelCentered ( "A trait rule will add/subtract values to outcome(s)." )
description6 := getLabelCentered ( "The probability that an offspring will pass a rule is multiplied by the rule's effects." )
description7 := getLabelCentered ( "This effect is then applied to the outcome(s)." )
description8 := getLabelCentered ( "Both parents must have a location in their genome for the rule to be tested." )
description9 := getLabelCentered ( "Import a full genome sequence from both parents to test all offspring rules." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 , description8 , description9 )
setPageContent ( page , window )
}
func setOffspringProbabilityOfPassingTraitRuleExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Probability Of Passing Rule" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Offspring Probability Of Passing Trait Rule" )
2024-07-19 19:16:28 +02:00
description1 := getLabelCentered ( "Offspring genetic analyses contain discrete trait analyses for a couple's offspring." )
description2 := getLabelCentered ( "Each discrete trait has multiple outcomes, and each outcome has an associated score." )
2024-04-11 15:51:56 +02:00
description3 := getLabelCentered ( "A higher score represents a higher probability, and a lower score represents the opposite." )
description4 := getLabelCentered ( "Each outcome's score is determined by trait rules." )
description5 := getLabelCentered ( "A trait rule will add/subtract values to outcome(s)." )
description6 := getLabelCentered ( "There are 4 offspring outcomes for each location." )
description7 := getLabelCentered ( "The probability that an offspring will pass a rule is multiplied by the rule's effects." )
description8 := getLabelCentered ( "This effect is then applied to the outcome(s)." )
description9 := getLabelCentered ( "Both parents must have a location in their genome for the rule to be tested." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 , description8 , description9 )
setPageContent ( page , window )
}
2024-07-19 19:16:28 +02:00
func setPersonPassesDiscreteTraitRuleExplainerPage ( window fyne . Window , previousPage func ( ) ) {
2024-04-11 15:51:56 +02:00
title := getPageTitleCentered ( "Help - Trait Rules" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Person Passes Trait Rule" )
2024-07-19 19:16:28 +02:00
description1 := getLabelCentered ( "Person genetic analyses contain discrete trait analyses." )
description2 := getLabelCentered ( "Each discrete trait has multiple outcomes, and each outcome has an associated score." )
2024-04-11 15:51:56 +02:00
description3 := getLabelCentered ( "A higher score represents a higher probability, and a lower score represents the opposite." )
description4 := getLabelCentered ( "Each outcome's score is determined by trait rules." )
description5 := getLabelCentered ( "A trait rule will add/subtract values to outcome(s)." )
description6 := getLabelCentered ( "If a person passes a rule, its effects will be applied to their outcome(s)." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 )
setPageContent ( page , window )
}
2024-07-19 19:16:28 +02:00
func setGenomePassesDiscreteTraitRuleExplainerPage ( window fyne . Window , previousPage func ( ) ) {
2024-04-11 15:51:56 +02:00
title := getPageTitleCentered ( "Help - Genome Passes Rule" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Genome Passes Trait Rule" )
2024-07-19 19:16:28 +02:00
description1 := getLabelCentered ( "Person genetic analyses contain discrete trait analyses." )
description2 := getLabelCentered ( "There are 2 discrete trait analysis methods: Rules and Neural Networks." )
description3 := getLabelCentered ( "For rule-based analyses, each trait's outcome has an associated score." )
description4 := getLabelCentered ( "A higher score represents a higher probability, and a lower score represents the opposite." )
description5 := getLabelCentered ( "Each outcome's score is determined by trait rules." )
description6 := getLabelCentered ( "A trait rule will add/subtract values to outcome(s)." )
description7 := getLabelCentered ( "If a person passes a rule, its effects will be applied to their outcome(s)." )
description8 := getLabelCentered ( "If a person has imported multiple genomes, each genome may or may not pass the rule." )
description9 := getLabelCentered ( "If one genome passes and another does not, it means that one genome has an invalid value." )
description10 := getLabelCentered ( "This happens because genome sequencing technology is not perfectly accurate." )
2024-04-11 15:51:56 +02:00
2024-07-19 19:16:28 +02:00
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 , description8 , description9 , description10 )
2024-04-11 15:51:56 +02:00
setPageContent ( page , window )
}
2024-07-19 19:16:28 +02:00
func setDiscreteTraitRuleOutcomeEffectsExplainerPage ( window fyne . Window , previousPage func ( ) ) {
2024-04-11 15:51:56 +02:00
title := getPageTitleCentered ( "Help - Outcome Effects" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Trait Rule Outcome Effects" )
description1 := getLabelCentered ( "Each trait rule has an outcome effect." )
description2 := getLabelCentered ( "The outcome effect describes points that are added or subtracted from outcomes." )
description3 := getLabelCentered ( "If the rule is passed, the outcome effect will be applied." )
description4 := getLabelCentered ( "For example, let's suppose a rule has the outcome effect of Blue +2" )
description5 := getLabelCentered ( "This means that 2 points are added to the Blue outcome if the rule is passed." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 )
setPageContent ( page , window )
}
2024-07-19 19:16:28 +02:00
func setWealthIsLowerBoundExplainerPage ( window fyne . Window , previousPage func ( ) ) {
2024-04-11 15:51:56 +02:00
title := getPageTitleCentered ( "Help - Is Lower Bound" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Is Lower Bound" )
description1 := getLabelCentered ( "If a wealth value is a lower bound, its true value may be higher." )
description2 := getLabelCentered ( "Select this if you wish to represent a monetary value that is lower that your true value." )
description3 := getLabelCentered ( "For example, if $5000 is a lower bound, then the user has at least $5000, and may have more." )
description4 := getLabelCentered ( "This is recommended to protect your privacy." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 )
setPageContent ( page , window )
}
func setMemoExplainerPage ( window fyne . Window , previousPage func ( ) ) {
2024-07-19 19:16:28 +02:00
2024-04-11 15:51:56 +02:00
title := getPageTitleCentered ( "Help - Memo" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Memo" )
description1 := getLabelCentered ( "A Memo is a message signed with a Seekia identity key." )
description2 := getLabelCentered ( "You can share a memo anywhere, and others can use Seekia to verify it." )
description3 := getLabelCentered ( "You can timestamp a memo on the blockchain to verify it existed before a certain time." )
description5 := getLabelCentered ( "You can include a cryptocurrency block hash in the memo to prove it was created after that block." )
description6 := getLabelCentered ( "You must verify all Seekia memos using the Seekia app to verify their author's signature." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description5 , description6 )
setPageContent ( page , window )
}
func setAllowOtherExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Allow Other" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Allow Other" )
description1 := getLabelCentered ( "When choosing your desires, you can select the Other category." )
description2 := getLabelCentered ( "Some attributes allow users to provide a custom value." )
description3 := getLabelCentered ( "Examples of these are Gender Identity and Language." )
description4 := getLabelCentered ( "If you select Other, you will be allowing users who provide a custom value." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 )
setPageContent ( page , window )
}
func setOffspringMonogenicDiseaseProbabilityDesireExplainerPage ( window fyne . Window , previousPage func ( ) ) {
currentPage := func ( ) { setOffspringMonogenicDiseaseProbabilityDesireExplainerPage ( window , previousPage ) }
title := getPageTitleCentered ( "Help - Monogenic Disease Probability Desire" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Offspring Monogenic Disease Probability Desire" )
description1 := getLabelCentered ( "This desire allows you to filter users based on your offspring's probability of monogenic disease." )
description2 := getLabelCentered ( "This probability is based on the monogenic diseases that you or the user have been tested for." )
description3 := getLabelCentered ( "The more diseases and variants that have been tested for, the more accurate the result will be." )
description4 := getLabelCentered ( "If you sequence your entire genome, Seekia will be able to test for all variants." )
description5 := getLabelCentered ( "You can sort your matches by how many variants they have tested." )
viewListOfMonogenicDiseasesButton := getWidgetCentered ( widget . NewButtonWithIcon ( "View List Of Monogenic Diseases" , theme . VisibilityIcon ( ) , func ( ) {
setViewMonogenicDiseasesList ( window , currentPage )
} ) )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , viewListOfMonogenicDiseasesButton )
setPageContent ( page , window )
}
func setViewMonogenicDiseasesList ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "View All Monogenic Diseases" )
backButton := getBackButtonCentered ( previousPage )
description := getLabelCentered ( "Below are all the monogenic diseases that Seekia can test for." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , description , widget . NewSeparator ( ) )
monogenicDiseaseNamesList , err := monogenicDiseases . GetMonogenicDiseaseNamesList ( )
if ( err != nil ) {
setErrorEncounteredPage ( window , err , previousPage )
return
}
for _ , diseaseName := range monogenicDiseaseNamesList {
diseaseLabel := getBoldLabelCentered ( translate ( diseaseName ) )
page . Add ( diseaseLabel )
}
setPageContent ( page , window )
}
func setGeneticTestingExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Genetic Testing" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Offspring Embryo Genetic Testing" )
description1 := getLabelCentered ( "Using embryo genetic testing, you can ensure your offspring will not have any monogenic disease." )
description2 := getLabelCentered ( "You can always have healthy children with someone for whom your offspring has a <100% probability of monogenic disease." )
description3 := getLabelCentered ( "You must find a company offering embryo testing." )
description4 := getLabelCentered ( "The technology is sometimes called Preimplantation Genetic Testing, or PGT." )
description5 := getLabelCentered ( "This technology requires the use of in-vitro fertilization." )
description6 := getLabelCentered ( "Choosing someone for whom your offspring has a 0% probability of monogenic diseases is still valuable." )
description7 := getLabelCentered ( "You could accidentally have children through natural conception, even if you were planning on using PGT." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , description6 , description7 )
setPageContent ( page , window )
}
func setHostingHelpPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Hosting" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Hosting" )
description1 := getLabelCentered ( "Be a Seekia host." )
description2 := getLabelCentered ( "Your computer will seed content to the network." )
description3 := getLabelCentered ( "You can choose to host as much or as little as you desire." )
2024-07-19 19:16:28 +02:00
2024-04-11 15:51:56 +02:00
//TODO: Add buttons to show more help
//TODO: Describe how hosting works and associated risks
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 )
setPageContent ( page , window )
}
func setMateDesireStatisticsWarningPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Desire Statistics Warning" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Mate Desire Statistics Warning" )
description1 := getBoldLabelCentered ( "Your mate desire statistics may not describe the statistics of the network accurately." )
description2 := getLabelCentered ( "In Mate mode, you will only download profiles which fulfill your download desires." )
description3 := getLabelCentered ( "Your download desires are the desires you share with hosts." )
description4 := getLabelCentered ( "These desires prevent you from having to download all profiles from the network." )
description5 := getLabelCentered ( "If you are only in Mate mode, you are viewing the statistics of users who fulfill your download desires." )
description6 := getLabelCentered ( "To view statistics of the entire network, you should disable Mate/Moderator mode and enable Host mode." )
description7 := getLabelCentered ( "In Host mode, you will download a random portion of the network, allowing you to see accurate statistics." )
description8 := getLabelCentered ( "Moderator mode will also skew your statistics." )
description9 := getLabelCentered ( "In moderator mode, you will only download profiles which are written in your understood language(s)." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 , widget . NewSeparator ( ) , description6 , description7 , widget . NewSeparator ( ) , description8 , description9 )
setPageContent ( page , window )
}
func setNetworkStatisticsInaccuracyWarningPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Network Statistics Warning" )
backButton := getBackButtonCentered ( previousPage )
//TODO: Improve this page
// We need to make it clear that the statistics may still be accurate, but the numberOfUsers will not reflect the total number of network users
// This will become more obvious when we eventually start to only sample a portion of stored profiles, so results are generated faster
subtitle := getPageSubtitleCentered ( "Network Statistics Warning" )
description1 := getBoldLabelCentered ( "Viewed statistics about users may not describe the statistics of the network accurately." )
description2 := getLabelCentered ( "To view statistics of the entire network, you should disable Mate/Moderator mode and enable Host mode." )
description3 := getLabelCentered ( "In Host mode, you will download a random portion of the network, allowing you to see accurate statistics." )
description4 := getLabelCentered ( "In Mate mode, you will only download profiles which fulfill your download desires." )
description5 := getLabelCentered ( "Your download desires are the desires you share with hosts." )
description6 := getLabelCentered ( "These desires prevent you from having to download all profiles from the network." )
description7 := getLabelCentered ( "If you are only in Mate mode, you are viewing the statistics of users who fulfill your download desires." )
description8 := getLabelCentered ( "Moderator mode will also skew your statistics." )
description9 := getLabelCentered ( "In moderator mode, you will only download profiles which are written in your understood language(s)." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , widget . NewSeparator ( ) , description4 , description5 , description6 , description7 , widget . NewSeparator ( ) , description8 , description9 )
setPageContent ( page , window )
}
func setAttributeIsCanonicalExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Attribute Is Canonical" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Attribute Is Canonical" )
description1 := getLabelCentered ( "Profile attributes are either canonical or not." )
description2 := getLabelCentered ( "Canonical attributes are attributes that do not allow a custom value." )
description3 := getLabelCentered ( "They only allow predefined values or numerical values." )
description4 := getLabelCentered ( "An example is Age, which must be a number." )
description5 := getLabelCentered ( "Canonical Mate attributes only have to be approved if they are banned by at least 1 moderator." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , description5 )
setPageContent ( page , window )
}
func setAnyUnreviewedAttributesExistExplainerPage ( window fyne . Window , previousPage func ( ) ) {
title := getPageTitleCentered ( "Help - Unreviewed Attributes" )
backButton := getBackButtonCentered ( previousPage )
subtitle := getPageSubtitleCentered ( "Unreviewed Attributes Exist" )
description1 := getLabelCentered ( "Seekia will serve moderators attributes to review." )
description2 := getLabelCentered ( "These attributes are served in order of least to most reviewed by other moderators." )
description3 := getLabelCentered ( "Once you approve/ban/skip an attribute, it is removed from your moderator queue." )
description4 := getLabelCentered ( "If you have banned a profile or any of its attributes, the rest of the profile's attributes do not need review." )
description5 := getLabelCentered ( "If you have banned a user, profiles authored by them do not need review." )
description6 := getLabelCentered ( "You can change this behavior on the Settings page (under construction)." )
page := container . NewVBox ( title , backButton , widget . NewSeparator ( ) , subtitle , widget . NewSeparator ( ) , description1 , description2 , description3 , description4 , widget . NewSeparator ( ) , description5 , description6 )
setPageContent ( page , window )
}