From 4b27252c91044af5514988c866f6ca93b25e6d26 Mon Sep 17 00:00:00 2001 From: nevrome Date: Wed, 23 Oct 2024 19:56:12 +0000 Subject: [PATCH] deploy: 683d3ce2fe4bd0ca38b2af53c72d96d6d5885715 --- Poseidon-BibFile.html | 2 +- Poseidon-CLI-Chronicle.html | 2 +- Poseidon-CLI-Fetch.html | 2 +- Poseidon-CLI-Forge.html | 2 +- Poseidon-CLI-Genoconvert.html | 2 +- Poseidon-CLI-Init.html | 2 +- Poseidon-CLI-Jannocoalesce.html | 2 +- Poseidon-CLI-List.html | 2 +- Poseidon-CLI-OptparseApplicativeParsers.html | 2 +- Poseidon-CLI-Rectify.html | 2 +- Poseidon-CLI-Serve.html | 2 +- Poseidon-CLI-Summarise.html | 2 +- Poseidon-CLI-Survey.html | 2 +- Poseidon-CLI-Timetravel.html | 2 +- Poseidon-CLI-Validate.html | 2 +- Poseidon-Chronicle.html | 2 +- Poseidon-ColumnTypes.html | 1 + Poseidon-ColumnTypesUtils.html | 1 + Poseidon-Contributor.html | 2 +- Poseidon-EntityTypes.html | 4 +- Poseidon-GenotypeData.html | 2 +- Poseidon-Janno.html | 4 +- Poseidon-MathHelpers.html | 2 +- Poseidon-Package.html | 2 +- Poseidon-PoseidonVersion.html | 2 +- Poseidon-SequencingSource.html | 4 +- Poseidon-ServerClient.html | 2 +- Poseidon-Utils.html | 2 +- Poseidon-Version.html | 2 +- doc-index-43.html | 2 +- doc-index-95.html | 2 +- doc-index-A.html | 2 +- doc-index-All.html | 2 +- doc-index-B.html | 2 +- doc-index-C.html | 2 +- doc-index-D.html | 2 +- doc-index-E.html | 2 +- doc-index-F.html | 2 +- doc-index-G.html | 2 +- doc-index-H.html | 2 +- doc-index-I.html | 2 +- doc-index-J.html | 2 +- doc-index-L.html | 2 +- doc-index-M.html | 2 +- doc-index-N.html | 2 +- doc-index-O.html | 2 +- doc-index-P.html | 2 +- doc-index-Q.html | 2 +- doc-index-R.html | 2 +- doc-index-S.html | 2 +- doc-index-T.html | 2 +- doc-index-U.html | 2 +- doc-index-V.html | 2 +- doc-index-W.html | 2 +- doc-index-Z.html | 2 +- doc-index.html | 2 +- doc-index.json | 2 +- index.html | 2 +- poseidon-hs.haddock | Bin 52674 -> 63070 bytes poseidon-hs.txt | 894 +- src/Paths_poseidon_hs.html | 62 +- src/Poseidon.BibFile.html | 176 +- src/Poseidon.CLI.Chronicle.html | 60 +- src/Poseidon.CLI.Fetch.html | 552 +- src/Poseidon.CLI.Forge.html | 1419 +-- src/Poseidon.CLI.Genoconvert.html | 302 +- src/Poseidon.CLI.Init.html | 148 +- src/Poseidon.CLI.Jannocoalesce.html | 510 +- src/Poseidon.CLI.List.html | 388 +- ...seidon.CLI.OptparseApplicativeParsers.html | 486 +- src/Poseidon.CLI.Rectify.html | 452 +- src/Poseidon.CLI.Serve.html | 984 +- src/Poseidon.CLI.Summarise.html | 726 +- src/Poseidon.CLI.Survey.html | 354 +- src/Poseidon.CLI.Timetravel.html | 258 +- src/Poseidon.CLI.Validate.html | 214 +- src/Poseidon.Chronicle.html | 400 +- src/Poseidon.ColumnTypes.html | 4367 ++++++++ src/Poseidon.ColumnTypesUtils.html | 111 + src/Poseidon.Contributor.html | 258 +- src/Poseidon.EntityTypes.html | 1036 +- src/Poseidon.GenotypeData.html | 912 +- src/Poseidon.Janno.html | 9790 ++++++----------- src/Poseidon.MathHelpers.html | 92 +- src/Poseidon.Package.html | 3730 +++---- src/Poseidon.PoseidonVersion.html | 18 +- src/Poseidon.SequencingSource.html | 2450 +++-- src/Poseidon.ServerClient.html | 798 +- src/Poseidon.Utils.html | 578 +- src/Poseidon.Version.html | 52 +- 90 files changed, 17470 insertions(+), 15227 deletions(-) create mode 100644 Poseidon-ColumnTypes.html create mode 100644 Poseidon-ColumnTypesUtils.html create mode 100644 src/Poseidon.ColumnTypes.html create mode 100644 src/Poseidon.ColumnTypesUtils.html diff --git a/Poseidon-BibFile.html b/Poseidon-BibFile.html index dc0b2f6b..e3c445ca 100644 --- a/Poseidon-BibFile.html +++ b/Poseidon-BibFile.html @@ -1 +1 @@ -Poseidon.BibFile
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.BibFile

Documentation

data BibEntry Source #

Instances

Instances details
Show BibEntry Source # 
Instance details

Defined in Poseidon.BibFile

Eq BibEntry Source # 
Instance details

Defined in Poseidon.BibFile

Ord BibEntry Source # 
Instance details

Defined in Poseidon.BibFile

\ No newline at end of file +Poseidon.BibFile
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.BibFile

Documentation

data BibEntry Source #

Instances

Instances details
Show BibEntry Source # 
Instance details

Defined in Poseidon.BibFile

Eq BibEntry Source # 
Instance details

Defined in Poseidon.BibFile

Ord BibEntry Source # 
Instance details

Defined in Poseidon.BibFile

\ No newline at end of file diff --git a/Poseidon-CLI-Chronicle.html b/Poseidon-CLI-Chronicle.html index 92511538..0cff872c 100644 --- a/Poseidon-CLI-Chronicle.html +++ b/Poseidon-CLI-Chronicle.html @@ -1 +1 @@ -Poseidon.CLI.Chronicle
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Chronicle

\ No newline at end of file +Poseidon.CLI.Chronicle
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Chronicle

\ No newline at end of file diff --git a/Poseidon-CLI-Fetch.html b/Poseidon-CLI-Fetch.html index 9cbd324a..ba9413c5 100644 --- a/Poseidon-CLI-Fetch.html +++ b/Poseidon-CLI-Fetch.html @@ -1 +1 @@ -Poseidon.CLI.Fetch
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Fetch

\ No newline at end of file +Poseidon.CLI.Fetch
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Fetch

\ No newline at end of file diff --git a/Poseidon-CLI-Forge.html b/Poseidon-CLI-Forge.html index 1df19e6c..6da1d938 100644 --- a/Poseidon-CLI-Forge.html +++ b/Poseidon-CLI-Forge.html @@ -1 +1 @@ -Poseidon.CLI.Forge
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Forge

\ No newline at end of file +Poseidon.CLI.Forge
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Forge

\ No newline at end of file diff --git a/Poseidon-CLI-Genoconvert.html b/Poseidon-CLI-Genoconvert.html index 89aa43b6..76116cb0 100644 --- a/Poseidon-CLI-Genoconvert.html +++ b/Poseidon-CLI-Genoconvert.html @@ -1 +1 @@ -Poseidon.CLI.Genoconvert
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Genoconvert

\ No newline at end of file +Poseidon.CLI.Genoconvert
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Genoconvert

\ No newline at end of file diff --git a/Poseidon-CLI-Init.html b/Poseidon-CLI-Init.html index 7db6105d..bd8ca904 100644 --- a/Poseidon-CLI-Init.html +++ b/Poseidon-CLI-Init.html @@ -1 +1 @@ -Poseidon.CLI.Init
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Init

\ No newline at end of file +Poseidon.CLI.Init
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Init

\ No newline at end of file diff --git a/Poseidon-CLI-Jannocoalesce.html b/Poseidon-CLI-Jannocoalesce.html index ed2f5599..4281cf98 100644 --- a/Poseidon-CLI-Jannocoalesce.html +++ b/Poseidon-CLI-Jannocoalesce.html @@ -1 +1 @@ -Poseidon.CLI.Jannocoalesce
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Jannocoalesce

\ No newline at end of file +Poseidon.CLI.Jannocoalesce
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Jannocoalesce

\ No newline at end of file diff --git a/Poseidon-CLI-List.html b/Poseidon-CLI-List.html index 7090a0f7..ef26554d 100644 --- a/Poseidon-CLI-List.html +++ b/Poseidon-CLI-List.html @@ -1 +1 @@ -Poseidon.CLI.List
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.List

Documentation

runList :: ListOptions -> PoseidonIO () Source #

The main function running the list command

data ListOptions Source #

A datatype representing command line options for the list command

Constructors

ListOptions 

Fields

data ListEntity Source #

A datatype to represent the options what to list

\ No newline at end of file +Poseidon.CLI.List
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.List

Documentation

runList :: ListOptions -> PoseidonIO () Source #

The main function running the list command

data ListOptions Source #

A datatype representing command line options for the list command

Constructors

ListOptions 

Fields

data ListEntity Source #

A datatype to represent the options what to list

\ No newline at end of file diff --git a/Poseidon-CLI-OptparseApplicativeParsers.html b/Poseidon-CLI-OptparseApplicativeParsers.html index 2146663e..14521c3b 100644 --- a/Poseidon-CLI-OptparseApplicativeParsers.html +++ b/Poseidon-CLI-OptparseApplicativeParsers.html @@ -1 +1 @@ -Poseidon.CLI.OptparseApplicativeParsers
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.OptparseApplicativeParsers

Documentation

onlyGenoOutputDocu :: Mod FlagFields a Source #

minimalOutputDocu :: Mod FlagFields a Source #

parsePort :: Parser Int Source #

\ No newline at end of file +Poseidon.CLI.OptparseApplicativeParsers
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.OptparseApplicativeParsers

Documentation

onlyGenoOutputDocu :: Mod FlagFields a Source #

minimalOutputDocu :: Mod FlagFields a Source #

parsePort :: Parser Int Source #

\ No newline at end of file diff --git a/Poseidon-CLI-Rectify.html b/Poseidon-CLI-Rectify.html index 23eed295..e28cac51 100644 --- a/Poseidon-CLI-Rectify.html +++ b/Poseidon-CLI-Rectify.html @@ -1 +1 @@ -Poseidon.CLI.Rectify
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Rectify

\ No newline at end of file +Poseidon.CLI.Rectify
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Rectify

\ No newline at end of file diff --git a/Poseidon-CLI-Serve.html b/Poseidon-CLI-Serve.html index c78a2b9e..6ba81cd2 100644 --- a/Poseidon-CLI-Serve.html +++ b/Poseidon-CLI-Serve.html @@ -1 +1 @@ -Poseidon.CLI.Serve
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Serve

\ No newline at end of file +Poseidon.CLI.Serve
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Serve

\ No newline at end of file diff --git a/Poseidon-CLI-Summarise.html b/Poseidon-CLI-Summarise.html index 00b8abe1..4c6bda8f 100644 --- a/Poseidon-CLI-Summarise.html +++ b/Poseidon-CLI-Summarise.html @@ -1,2 +1,2 @@ -Poseidon.CLI.Summarise
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Summarise

Documentation

data SummariseOptions Source #

A datatype representing command line options for the summarise command

runSummarise :: SummariseOptions -> PoseidonIO () Source #

The main function running the janno command

summariseJannoRows :: JannoRows -> Bool -> IO () Source #

A function to print meaningful summary information for a list of poseidon samples

paste :: [String] -> String Source #

A helper function to concat the first N elements of a string list in a nice way

uniqueNumber :: Ord a => [a] -> String Source #

frequency :: Ord a => [a] -> [(a, Int)] Source #

A helper function to determine the frequency of objects in a list +Poseidon.CLI.Summarise

poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Summarise

Documentation

data SummariseOptions Source #

A datatype representing command line options for the summarise command

runSummarise :: SummariseOptions -> PoseidonIO () Source #

The main function running the janno command

summariseJannoRows :: JannoRows -> Bool -> IO () Source #

A function to print meaningful summary information for a list of poseidon samples

paste :: [String] -> String Source #

A helper function to concat the first N elements of a string list in a nice way

uniqueNumber :: Ord a => [a] -> String Source #

frequency :: Ord a => [a] -> [(a, Int)] Source #

A helper function to determine the frequency of objects in a list (similar to the table function in R)

sortTupelsBySndDesc :: (Ord a, Ord b) => (a, b) -> (a, b) -> Ordering Source #

printFrequency :: Show a => String -> [(a, Int)] -> String Source #

A helper function to print the output of frequency nicely

printFrequencyMaybe :: Show a => String -> [(Maybe a, Int)] -> String Source #

A helper function to print the output of frequency over Maybe values nicely

maybeShow :: Show a => Maybe a -> String Source #

A helper function to unwrap a maybe

printFrequencyString :: String -> [(String, Int)] -> String Source #

As printFrequency, but without additional quoting of strings

printFrequencyMaybeString :: String -> [(Maybe String, Int)] -> String Source #

As printFrequencyMaybe, but without additional quoting of strings

maybeShowString :: Maybe String -> String Source #

As maybeShow, but without additional quoting of strings

\ No newline at end of file diff --git a/Poseidon-CLI-Survey.html b/Poseidon-CLI-Survey.html index 783f4e2d..e903c526 100644 --- a/Poseidon-CLI-Survey.html +++ b/Poseidon-CLI-Survey.html @@ -1 +1 @@ -Poseidon.CLI.Survey
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Survey

Documentation

data SurveyOptions Source #

A datatype representing command line options for the survey command

runSurvey :: SurveyOptions -> PoseidonIO () Source #

The main function running the janno command

class PresenceCountable a where Source #

Methods

countPresence :: a -> Int Source #

Instances

Instances details
PresenceCountable CsvNamedRecord Source # 
Instance details

Defined in Poseidon.CLI.Survey

PresenceCountable JannoSex Source # 
Instance details

Defined in Poseidon.CLI.Survey

PresenceCountable JannoStringList Source # 
Instance details

Defined in Poseidon.CLI.Survey

PresenceCountable String Source # 
Instance details

Defined in Poseidon.CLI.Survey

PresenceCountable (Maybe a) Source # 
Instance details

Defined in Poseidon.CLI.Survey

Methods

countPresence :: Maybe a -> Int Source #

\ No newline at end of file +Poseidon.CLI.Survey
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.Survey

Documentation

data SurveyOptions Source #

A datatype representing command line options for the survey command

runSurvey :: SurveyOptions -> PoseidonIO () Source #

The main function running the janno command

class PresenceCountable a where Source #

Methods

countPresence :: a -> Int Source #

Instances

Instances details
PresenceCountable GeneticSex Source # 
Instance details

Defined in Poseidon.CLI.Survey

PresenceCountable CsvNamedRecord Source # 
Instance details

Defined in Poseidon.CLI.Survey

PresenceCountable String Source # 
Instance details

Defined in Poseidon.CLI.Survey

PresenceCountable (ListColumn a) Source # 
Instance details

Defined in Poseidon.CLI.Survey

PresenceCountable (Maybe a) Source # 
Instance details

Defined in Poseidon.CLI.Survey

Methods

countPresence :: Maybe a -> Int Source #

\ No newline at end of file diff --git a/Poseidon-CLI-Timetravel.html b/Poseidon-CLI-Timetravel.html index 59939577..bfd707ef 100644 --- a/Poseidon-CLI-Timetravel.html +++ b/Poseidon-CLI-Timetravel.html @@ -1 +1 @@ -Poseidon.CLI.Timetravel
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file +Poseidon.CLI.Timetravel
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file diff --git a/Poseidon-CLI-Validate.html b/Poseidon-CLI-Validate.html index bedb53f4..9711f885 100644 --- a/Poseidon-CLI-Validate.html +++ b/Poseidon-CLI-Validate.html @@ -1 +1 @@ -Poseidon.CLI.Validate
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file +Poseidon.CLI.Validate
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file diff --git a/Poseidon-Chronicle.html b/Poseidon-Chronicle.html index 368546de..299256cd 100644 --- a/Poseidon-Chronicle.html +++ b/Poseidon-Chronicle.html @@ -1 +1 @@ -Poseidon.Chronicle
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.Chronicle

Documentation

data PackageIteration Source #

A data type to represent a package state

Constructors

PackageIteration 

Fields

Instances

Instances details
FromJSON PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

Methods

parseJSON :: Value -> Parser PackageIteration

parseJSONList :: Value -> Parser [PackageIteration]

ToJSON PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

Show PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

Eq PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

Ord PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

HasNameAndVersion PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

\ No newline at end of file +Poseidon.Chronicle
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.Chronicle

Documentation

data PackageIteration Source #

A data type to represent a package state

Constructors

PackageIteration 

Fields

Instances

Instances details
FromJSON PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

Methods

parseJSON :: Value -> Parser PackageIteration

parseJSONList :: Value -> Parser [PackageIteration]

ToJSON PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

Show PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

Eq PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

Ord PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

HasNameAndVersion PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

\ No newline at end of file diff --git a/Poseidon-ColumnTypes.html b/Poseidon-ColumnTypes.html new file mode 100644 index 00000000..01e17765 --- /dev/null +++ b/Poseidon-ColumnTypes.html @@ -0,0 +1 @@ +Poseidon.ColumnTypes
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.ColumnTypes

Synopsis

Documentation

newtype GeneticSex Source #

A datatype for the Genetic_Sex .janno column

Constructors

GeneticSex 

Fields

Instances

Instances details
Show GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser GeneticSex

ToField GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: GeneticSex -> Field

Eq GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

PresenceCountable GeneticSex Source # 
Instance details

Defined in Poseidon.CLI.Survey

Makeable GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m GeneticSex Source #

newtype GroupName Source #

A datatype for the Group_Name .janno column

Constructors

GroupName Text 

Instances

Instances details
Show GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser GroupName

ToField GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: GroupName -> Field

Eq GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m GroupName Source #

newtype JannoAlternativeID Source #

A datatype for the Alternative_IDs .janno column

Constructors

JannoAlternativeID Text 

Instances

Instances details
Show JannoAlternativeID Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoAlternativeID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoAlternativeID

ToField JannoAlternativeID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoAlternativeID -> Field

Eq JannoAlternativeID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoAlternativeID Source # 
Instance details

Defined in Poseidon.ColumnTypes

newtype JannoRelationTo Source #

A datatype for the Relation_To .janno column

Constructors

JannoRelationTo Text 

Instances

Instances details
Show JannoRelationTo Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoRelationTo Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoRelationTo

ToField JannoRelationTo Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoRelationTo -> Field

Eq JannoRelationTo Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoRelationTo Source # 
Instance details

Defined in Poseidon.ColumnTypes

data JannoRelationDegree Source #

A datatype for the Relation_Degree .janno column

Instances

Instances details
Bounded JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Enum JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Generic JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoRelationDegree :: Type -> Type #

Show JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoRelationDegree

ToField JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoRelationDegree -> Field

Eq JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoRelationDegree = D1 ('MetaData "JannoRelationDegree" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) ((C1 ('MetaCons "Identical" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "First" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Second" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ThirdToFifth" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SixthToTenth" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Unrelated" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OtherDegree" 'PrefixI 'False) (U1 :: Type -> Type))))

newtype JannoRelationType Source #

A datatype for the Relation_Type .janno column

Constructors

JannoRelationType Text 

Instances

Instances details
Show JannoRelationType Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoRelationType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoRelationType

ToField JannoRelationType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoRelationType -> Field

Eq JannoRelationType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoRelationType Source # 
Instance details

Defined in Poseidon.ColumnTypes

newtype JannoRelationNote Source #

A datatype for the Relation_Note .janno column

Constructors

JannoRelationNote Text 

Instances

Instances details
Show JannoRelationNote Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoRelationNote Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoRelationNote

ToField JannoRelationNote Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoRelationNote -> Field

Eq JannoRelationNote Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoRelationNote Source # 
Instance details

Defined in Poseidon.ColumnTypes

newtype JannoCollectionID Source #

A datatype for the Collection_ID .janno column

Constructors

JannoCollectionID Text 

Instances

Instances details
Show JannoCollectionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoCollectionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoCollectionID

ToField JannoCollectionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoCollectionID -> Field

Eq JannoCollectionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoCollectionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

newtype JannoCountry Source #

A datatype for the Country .janno column

Constructors

JannoCountry Text 

Instances

Instances details
Show JannoCountry Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoCountry Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoCountry

ToField JannoCountry Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoCountry -> Field

Eq JannoCountry Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoCountry Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoCountry Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoCountry Source #

newtype JannoCountryISO Source #

A datatype for countries in ISO-alpha2 code format

Constructors

JannoCountryISO Country 

newtype JannoLocation Source #

A datatype for the Location .janno column

Constructors

JannoLocation Text 

Instances

Instances details
Show JannoLocation Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoLocation Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoLocation

ToField JannoLocation Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoLocation -> Field

Eq JannoLocation Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoLocation Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoLocation Source #

newtype JannoSite Source #

A datatype for the Site .janno column

Constructors

JannoSite Text 

Instances

Instances details
Show JannoSite Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoSite Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoSite

ToField JannoSite Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoSite -> Field

Eq JannoSite Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoSite Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoSite Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoSite Source #

newtype JannoLatitude Source #

A datatype for the Latitude .janno column

Constructors

JannoLatitude Double 

Instances

Instances details
Generic JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoLatitude :: Type -> Type #

Show JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoLatitude

ToField JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoLatitude -> Field

Eq JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoLatitude Source #

type Rep JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoLatitude = D1 ('MetaData "JannoLatitude" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoLatitude" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))

newtype JannoLongitude Source #

A datatype for the Longitude .janno column

Constructors

JannoLongitude Double 

Instances

Instances details
Generic JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoLongitude :: Type -> Type #

Show JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoLongitude

ToField JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoLongitude -> Field

Eq JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoLongitude = D1 ('MetaData "JannoLongitude" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoLongitude" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))

data JannoDateType Source #

A datatype for the Date_Type .janno column

Constructors

C14 
Contextual 
Modern 

Instances

Instances details
Bounded JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Enum JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Generic JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoDateType :: Type -> Type #

Show JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoDateType

ToField JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoDateType -> Field

Eq JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoDateType Source #

type Rep JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateType = D1 ('MetaData "JannoDateType" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (C1 ('MetaCons "C14" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Contextual" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Modern" 'PrefixI 'False) (U1 :: Type -> Type)))

newtype JannoDateC14Labnr Source #

A datatype for the Date_C14_Labnr .janno column

Constructors

JannoDateC14Labnr Text 

Instances

Instances details
Show JannoDateC14Labnr Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoDateC14Labnr Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoDateC14Labnr

ToField JannoDateC14Labnr Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoDateC14Labnr -> Field

Eq JannoDateC14Labnr Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateC14Labnr Source # 
Instance details

Defined in Poseidon.ColumnTypes

newtype JannoDateC14UncalBP Source #

A datatype for the Date_C14_Uncal_BP .janno column

Constructors

JannoDateC14UncalBP Int 

Instances

Instances details
Generic JannoDateC14UncalBP Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoDateC14UncalBP :: Type -> Type #

Show JannoDateC14UncalBP Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoDateC14UncalBP Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoDateC14UncalBP

ToField JannoDateC14UncalBP Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoDateC14UncalBP -> Field

Eq JannoDateC14UncalBP Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoDateC14UncalBP Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateC14UncalBP Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateC14UncalBP Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateC14UncalBP = D1 ('MetaData "JannoDateC14UncalBP" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoDateC14UncalBP" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

newtype JannoDateC14UncalBPErr Source #

A datatype for the Date_C14_Uncal_BP_Err .janno column

Instances

Instances details
Generic JannoDateC14UncalBPErr Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoDateC14UncalBPErr :: Type -> Type #

Show JannoDateC14UncalBPErr Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoDateC14UncalBPErr Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoDateC14UncalBPErr

ToField JannoDateC14UncalBPErr Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoDateC14UncalBPErr -> Field

Eq JannoDateC14UncalBPErr Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoDateC14UncalBPErr Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateC14UncalBPErr Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateC14UncalBPErr Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateC14UncalBPErr = D1 ('MetaData "JannoDateC14UncalBPErr" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoDateC14UncalBPErr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

newtype JannoDateBCADStart Source #

A datatype for the Date_BC_AD_Start .janno column

Constructors

JannoDateBCADStart Int 

Instances

Instances details
Generic JannoDateBCADStart Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoDateBCADStart :: Type -> Type #

Show JannoDateBCADStart Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoDateBCADStart Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoDateBCADStart

ToField JannoDateBCADStart Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoDateBCADStart -> Field

Eq JannoDateBCADStart Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoDateBCADStart Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateBCADStart Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateBCADStart Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateBCADStart = D1 ('MetaData "JannoDateBCADStart" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoDateBCADStart" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

newtype JannoDateBCADMedian Source #

A datatype for the Date_BC_AD_Median .janno column

Constructors

JannoDateBCADMedian Int 

Instances

Instances details
Generic JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoDateBCADMedian :: Type -> Type #

Show JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoDateBCADMedian

ToField JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoDateBCADMedian -> Field

Eq JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateBCADMedian = D1 ('MetaData "JannoDateBCADMedian" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoDateBCADMedian" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

newtype JannoDateBCADStop Source #

A datatype for the Date_BC_AD_Stop .janno column

Constructors

JannoDateBCADStop Int 

Instances

Instances details
Generic JannoDateBCADStop Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoDateBCADStop :: Type -> Type #

Show JannoDateBCADStop Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoDateBCADStop Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoDateBCADStop

ToField JannoDateBCADStop Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoDateBCADStop -> Field

Eq JannoDateBCADStop Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoDateBCADStop Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateBCADStop Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateBCADStop Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateBCADStop = D1 ('MetaData "JannoDateBCADStop" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoDateBCADStop" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

newtype JannoDateNote Source #

A datatype for the Date_Note .janno column

Constructors

JannoDateNote Text 

newtype JannoSourceTissue Source #

A datatype for the Source_Tissue .janno column

Constructors

JannoSourceTissue Text 

Instances

Instances details
Show JannoSourceTissue Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoSourceTissue Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoSourceTissue

ToField JannoSourceTissue Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoSourceTissue -> Field

Eq JannoSourceTissue Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoSourceTissue Source # 
Instance details

Defined in Poseidon.ColumnTypes

newtype JannoNrLibraries Source #

A datatype for the Nr_Libraries .janno column

Constructors

JannoNrLibraries Int 

Instances

Instances details
Generic JannoNrLibraries Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoNrLibraries :: Type -> Type #

Show JannoNrLibraries Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoNrLibraries Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoNrLibraries

ToField JannoNrLibraries Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoNrLibraries -> Field

Eq JannoNrLibraries Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoNrLibraries Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoNrLibraries Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoNrLibraries Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoNrLibraries = D1 ('MetaData "JannoNrLibraries" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoNrLibraries" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

newtype JannoLibraryName Source #

A datatype for the Library_Names .janno column

Constructors

JannoLibraryName Text 

Instances

Instances details
Show JannoLibraryName Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoLibraryName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoLibraryName

ToField JannoLibraryName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoLibraryName -> Field

Eq JannoLibraryName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoLibraryName Source # 
Instance details

Defined in Poseidon.ColumnTypes

data JannoCaptureType Source #

A datatype for the Capture_Type .janno column

Instances

Instances details
Bounded JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Enum JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Generic JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoCaptureType :: Type -> Type #

Show JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoCaptureType

ToField JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoCaptureType -> Field

Eq JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoCaptureType = D1 ('MetaData "JannoCaptureType" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (((C1 ('MetaCons "Shotgun" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "A1240K" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ArborComplete" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ArborPrimePlus" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ArborAncestralPlus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TwistAncientDNA" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "OtherCapture" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ReferenceGenome" 'PrefixI 'False) (U1 :: Type -> Type))))

data JannoUDG Source #

A datatype for the UDG .janno column

Constructors

Minus 
Half 
Plus 
Mixed 

Instances

Instances details
Bounded JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Enum JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Generic JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoUDG :: Type -> Type #

Methods

from :: JannoUDG -> Rep JannoUDG x #

to :: Rep JannoUDG x -> JannoUDG #

Show JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoUDG

ToField JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoUDG -> Field

Eq JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoUDG Source #

type Rep JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoUDG = D1 ('MetaData "JannoUDG" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) ((C1 ('MetaCons "Minus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Half" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Plus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Mixed" 'PrefixI 'False) (U1 :: Type -> Type)))

data JannoLibraryBuilt Source #

A datatype for the Library_Built .janno column

Constructors

DS 
SS 
MixedSSDS 
Other 

Instances

Instances details
Bounded JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Enum JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Generic JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoLibraryBuilt :: Type -> Type #

Show JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoLibraryBuilt

ToField JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoLibraryBuilt -> Field

Eq JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoLibraryBuilt = D1 ('MetaData "JannoLibraryBuilt" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) ((C1 ('MetaCons "DS" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SS" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MixedSSDS" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Other" 'PrefixI 'False) (U1 :: Type -> Type)))

data JannoGenotypePloidy Source #

A datatype for the Genotype_Ploidy .janno column

Constructors

Diploid 
Haploid 

Instances

Instances details
Bounded JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Enum JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Generic JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoGenotypePloidy :: Type -> Type #

Show JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoGenotypePloidy

ToField JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoGenotypePloidy -> Field

Eq JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoGenotypePloidy = D1 ('MetaData "JannoGenotypePloidy" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (C1 ('MetaCons "Diploid" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Haploid" 'PrefixI 'False) (U1 :: Type -> Type))

newtype JannoDataPreparationPipelineURL Source #

A datatype for the Genotype_Ploidy .janno column

Instances

Instances details
Generic JannoDataPreparationPipelineURL Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoDataPreparationPipelineURL :: Type -> Type #

Show JannoDataPreparationPipelineURL Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoDataPreparationPipelineURL Source # 
Instance details

Defined in Poseidon.ColumnTypes

ToField JannoDataPreparationPipelineURL Source # 
Instance details

Defined in Poseidon.ColumnTypes

Eq JannoDataPreparationPipelineURL Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoDataPreparationPipelineURL Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDataPreparationPipelineURL Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDataPreparationPipelineURL Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDataPreparationPipelineURL = D1 ('MetaData "JannoDataPreparationPipelineURL" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoDataPreparationPipelineURL" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

newtype JannoEndogenous Source #

A datatype for the Endogenous .janno column

Constructors

JannoEndogenous Double 

Instances

Instances details
Generic JannoEndogenous Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoEndogenous :: Type -> Type #

Show JannoEndogenous Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoEndogenous Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoEndogenous

ToField JannoEndogenous Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoEndogenous -> Field

Eq JannoEndogenous Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoEndogenous Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoEndogenous Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoEndogenous Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoEndogenous = D1 ('MetaData "JannoEndogenous" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoEndogenous" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))

newtype JannoNrSNPs Source #

A datatype for the Nr_SNPs .janno column

Constructors

JannoNrSNPs Int 

Instances

Instances details
Generic JannoNrSNPs Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoNrSNPs :: Type -> Type #

Show JannoNrSNPs Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoNrSNPs Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoNrSNPs

ToField JannoNrSNPs Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoNrSNPs -> Field

Eq JannoNrSNPs Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoNrSNPs Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoNrSNPs Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoNrSNPs Source #

type Rep JannoNrSNPs Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoNrSNPs = D1 ('MetaData "JannoNrSNPs" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoNrSNPs" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

newtype JannoCoverageOnTargets Source #

A datatype for the Coverage_on_Target_SNPs .janno column

Instances

Instances details
Generic JannoCoverageOnTargets Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoCoverageOnTargets :: Type -> Type #

Show JannoCoverageOnTargets Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoCoverageOnTargets Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoCoverageOnTargets

ToField JannoCoverageOnTargets Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoCoverageOnTargets -> Field

Eq JannoCoverageOnTargets Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoCoverageOnTargets Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoCoverageOnTargets Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoCoverageOnTargets Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoCoverageOnTargets = D1 ('MetaData "JannoCoverageOnTargets" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoCoverageOnTargets" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))

newtype JannoDamage Source #

A datatype for the Damage .janno column

Constructors

JannoDamage Double 

Instances

Instances details
Generic JannoDamage Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoDamage :: Type -> Type #

Show JannoDamage Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoDamage Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoDamage

ToField JannoDamage Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoDamage -> Field

Eq JannoDamage Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoDamage Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDamage Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoDamage Source #

type Rep JannoDamage Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDamage = D1 ('MetaData "JannoDamage" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoDamage" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))

newtype JannoContamination Source #

A datatype for the Contamination .janno column

Constructors

JannoContamination Text 

Instances

Instances details
Show JannoContamination Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoContamination Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoContamination

ToField JannoContamination Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoContamination -> Field

Eq JannoContamination Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoContamination Source # 
Instance details

Defined in Poseidon.ColumnTypes

newtype JannoContaminationErr Source #

A datatype for the Contamination_Err .janno column

newtype JannoContaminationMeas Source #

A datatype for the Contamination_Meas .janno column

newtype JannoContaminationNote Source #

A datatype for the Contamination_Note .janno column

data JannoGeneticSourceAccessionID Source #

A datatype for the Genetic_Source_Accession_IDs .janno column

Instances

Instances details
Generic JannoGeneticSourceAccessionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoGeneticSourceAccessionID :: Type -> Type #

Show JannoGeneticSourceAccessionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoGeneticSourceAccessionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoGeneticSourceAccessionID

ToField JannoGeneticSourceAccessionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Eq JannoGeneticSourceAccessionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoGeneticSourceAccessionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoGeneticSourceAccessionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoGeneticSourceAccessionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

newtype JannoPrimaryContact Source #

A datatype for the Primary_Contact .janno column

newtype JannoComment Source #

A datatype for the Note .janno column

Constructors

JannoComment Text 

Instances

Instances details
Show JannoComment Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoComment Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoComment

ToField JannoComment Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoComment -> Field

Eq JannoComment Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoComment Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoComment Source #

newtype JannoKeyword Source #

A datatype for the Keywords .janno column

Constructors

JannoKeyword Text 

Instances

Instances details
Show JannoKeyword Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoKeyword Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoKeyword

ToField JannoKeyword Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoKeyword -> Field

Eq JannoKeyword Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoKeyword Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoKeyword Source #

\ No newline at end of file diff --git a/Poseidon-ColumnTypesUtils.html b/Poseidon-ColumnTypesUtils.html new file mode 100644 index 00000000..f1270535 --- /dev/null +++ b/Poseidon-ColumnTypesUtils.html @@ -0,0 +1 @@ +Poseidon.ColumnTypesUtils
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.ColumnTypesUtils

Documentation

class Makeable a where Source #

Methods

make :: MonadFail m => Text -> m a Source #

Instances

Instances details
Makeable GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m GeneticSex Source #

Makeable GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m GroupName Source #

Makeable JannoAlternativeID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoCollectionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoComment Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoComment Source #

Makeable JannoContamination Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoContaminationErr Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoContaminationMeas Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoContaminationNote Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoCountry Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoCountry Source #

Makeable JannoCountryISO Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoCoverageOnTargets Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDamage Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoDamage Source #

Makeable JannoDataPreparationPipelineURL Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateBCADStart Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateBCADStop Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateC14Labnr Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateC14UncalBP Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateC14UncalBPErr Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateNote Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoDateNote Source #

Makeable JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoDateType Source #

Makeable JannoEndogenous Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoGeneticSourceAccessionID Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoKeyword Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoKeyword Source #

Makeable JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoLatitude Source #

Makeable JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoLibraryName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoLocation Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoLocation Source #

Makeable JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoMTHaplogroup Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoNrLibraries Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoNrSNPs Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoNrSNPs Source #

Makeable JannoPrimaryContact Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoPublication Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoRelationNote Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoRelationTo Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoRelationType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoSite Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoSite Source #

Makeable JannoSourceTissue Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoUDG Source #

Makeable JannoYHaplogroup Source # 
Instance details

Defined in Poseidon.ColumnTypes

parseTypeCSV :: forall a m. (MonadFail m, Makeable a, Typeable a) => String -> ByteString -> m a Source #

\ No newline at end of file diff --git a/Poseidon-Contributor.html b/Poseidon-Contributor.html index 07d84aa6..44b80e00 100644 --- a/Poseidon-Contributor.html +++ b/Poseidon-Contributor.html @@ -1,2 +1,2 @@ -Poseidon.Contributor
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.Contributor

Documentation

data ContributorSpec Source #

A data type to represent a contributor

Constructors

ContributorSpec 

Fields

Instances

Instances details
FromJSON ContributorSpec Source #

To facilitate automatic parsing of ContributorSpec from JSON files

Instance details

Defined in Poseidon.Contributor

Methods

parseJSON :: Value -> Parser ContributorSpec

parseJSONList :: Value -> Parser [ContributorSpec]

ToJSON ContributorSpec Source # 
Instance details

Defined in Poseidon.Contributor

Methods

toJSON :: ContributorSpec -> Value

toEncoding :: ContributorSpec -> Encoding

toJSONList :: [ContributorSpec] -> Value

toEncodingList :: [ContributorSpec] -> Encoding

Show ContributorSpec Source # 
Instance details

Defined in Poseidon.Contributor

Eq ContributorSpec Source # 
Instance details

Defined in Poseidon.Contributor

data ORCID Source #

A data type to represent an ORCID +Poseidon.Contributor

poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.Contributor

Documentation

data ContributorSpec Source #

A data type to represent a contributor

Constructors

ContributorSpec 

Fields

Instances

Instances details
FromJSON ContributorSpec Source #

To facilitate automatic parsing of ContributorSpec from JSON files

Instance details

Defined in Poseidon.Contributor

Methods

parseJSON :: Value -> Parser ContributorSpec

parseJSONList :: Value -> Parser [ContributorSpec]

ToJSON ContributorSpec Source # 
Instance details

Defined in Poseidon.Contributor

Methods

toJSON :: ContributorSpec -> Value

toEncoding :: ContributorSpec -> Encoding

toJSONList :: [ContributorSpec] -> Value

toEncodingList :: [ContributorSpec] -> Encoding

Show ContributorSpec Source # 
Instance details

Defined in Poseidon.Contributor

Eq ContributorSpec Source # 
Instance details

Defined in Poseidon.Contributor

data ORCID Source #

Constructors

ORCID 

Instances

Instances details
FromJSON ORCID Source # 
Instance details

Defined in Poseidon.Contributor

Methods

parseJSON :: Value -> Parser ORCID

parseJSONList :: Value -> Parser [ORCID]

ToJSON ORCID Source # 
Instance details

Defined in Poseidon.Contributor

Methods

toJSON :: ORCID -> Value

toEncoding :: ORCID -> Encoding

toJSONList :: [ORCID] -> Value

toEncodingList :: [ORCID] -> Encoding

Show ORCID Source # 
Instance details

Defined in Poseidon.Contributor

Methods

showsPrec :: Int -> ORCID -> ShowS #

show :: ORCID -> String #

showList :: [ORCID] -> ShowS #

Eq ORCID Source # 
Instance details

Defined in Poseidon.Contributor

Methods

(==) :: ORCID -> ORCID -> Bool #

(/=) :: ORCID -> ORCID -> Bool #

\ No newline at end of file diff --git a/Poseidon-EntityTypes.html b/Poseidon-EntityTypes.html index 615641ed..293c085c 100644 --- a/Poseidon-EntityTypes.html +++ b/Poseidon-EntityTypes.html @@ -1,3 +1,3 @@ -Poseidon.EntityTypes
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.EntityTypes

Synopsis

Documentation

data IndividualInfo Source #

a minimal datatype representing an individual in a collection of packages

Constructors

IndividualInfo 

Fields

Instances

Instances details
Generic IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

Associated Types

type Rep IndividualInfo :: Type -> Type #

Show IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

Eq IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

Ord IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

HasNameAndVersion IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

type Rep IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

type Rep IndividualInfo = D1 ('MetaData "IndividualInfo" "Poseidon.EntityTypes" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) (C1 ('MetaCons "IndividualInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "indInfoName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel ('Just "indInfoGroups") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: S1 ('MetaSel ('Just "indInfoPac") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PacNameAndVersion))))

type IndividualInfoCollection = ([IndividualInfo], [Bool]) Source #

a tuple of a collection of IndividualInfos and a list of bools - indicating whether the given sample is in the latest version of packages

renderNameWithVersion :: HasNameAndVersion a => a -> String Source #

universal rendering of package names and version

class Eq a => HasNameAndVersion a where Source #

A class to represent a package-identifying property

Methods

getPacName Source #

Arguments

:: a 
-> String

a name property

getPacVersion Source #

Arguments

:: a 
-> Maybe Version

a version property

Instances

Instances details
HasNameAndVersion PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

HasNameAndVersion IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

HasNameAndVersion PacNameAndVersion Source # 
Instance details

Defined in Poseidon.EntityTypes

HasNameAndVersion PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

HasNameAndVersion PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

HasNameAndVersion ExtendedIndividualInfo Source # 
Instance details

Defined in Poseidon.ServerClient

HasNameAndVersion GroupInfo Source # 
Instance details

Defined in Poseidon.ServerClient

HasNameAndVersion PackageInfo Source # 
Instance details

Defined in Poseidon.ServerClient

data PoseidonEntity Source #

A datatype to represent a requested package, group or individual

Constructors

Pac PacNameAndVersion

all individuals in a package. A version can be specified, if not implicitly request the latest

Group String

all individuals with a given group, in all of the latest packages

Ind String

all individuals with the given name, in all of the latest packages

SpecificInd String String PacNameAndVersion

the individual specified by its name, group and package. If not versioned, then take the latest version.

Instances

Instances details
FromJSON PoseidonEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Methods

parseJSON :: Value -> Parser PoseidonEntity

parseJSONList :: Value -> Parser [PoseidonEntity]

ToJSON PoseidonEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Methods

toJSON :: PoseidonEntity -> Value

toEncoding :: PoseidonEntity -> Encoding

toJSONList :: [PoseidonEntity] -> Value

toEncodingList :: [PoseidonEntity] -> Encoding

Show PoseidonEntity Source #

A show instance for rendering entities in forgescript

Instance details

Defined in Poseidon.EntityTypes

Eq PoseidonEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Ord PoseidonEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

EntitySpec PoseidonEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

data SignedEntity Source #

a signed entity specification, denoting inclusion or exclusion of an entity

Instances

Instances details
FromJSON SignedEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Methods

parseJSON :: Value -> Parser SignedEntity

parseJSONList :: Value -> Parser [SignedEntity]

ToJSON SignedEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Methods

toJSON :: SignedEntity -> Value

toEncoding :: SignedEntity -> Encoding

toJSONList :: [SignedEntity] -> Value

toEncodingList :: [SignedEntity] -> Encoding

Show SignedEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Eq SignedEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Ord SignedEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

EntitySpec SignedEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

hasVersion :: HasNameAndVersion a => a -> Bool Source #

a convenience function

makePacNameAndVersion :: HasNameAndVersion a => a -> PacNameAndVersion Source #

a function to normalise any instance of HasNameAndVersion to the minimal concrete type PacNameAndVersion

isLatestInCollection :: (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool Source #

a function to check whether a given package is the latest within a collection

class EntitySpec a Source #

A class to generalise signed and unsigned Entity Lists. +Poseidon.EntityTypes

poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.EntityTypes

Synopsis

Documentation

data IndividualInfo Source #

a minimal datatype representing an individual in a collection of packages

Constructors

IndividualInfo 

Fields

Instances

Instances details
Generic IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

Associated Types

type Rep IndividualInfo :: Type -> Type #

Show IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

Eq IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

Ord IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

HasNameAndVersion IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

type Rep IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

type Rep IndividualInfo = D1 ('MetaData "IndividualInfo" "Poseidon.EntityTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (C1 ('MetaCons "IndividualInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "indInfoName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: (S1 ('MetaSel ('Just "indInfoGroups") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: S1 ('MetaSel ('Just "indInfoPac") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PacNameAndVersion))))

type IndividualInfoCollection = ([IndividualInfo], [Bool]) Source #

a tuple of a collection of IndividualInfos and a list of bools + indicating whether the given sample is in the latest version of packages

renderNameWithVersion :: HasNameAndVersion a => a -> String Source #

universal rendering of package names and version

class Eq a => HasNameAndVersion a where Source #

A class to represent a package-identifying property

Methods

getPacName Source #

Arguments

:: a 
-> String

a name property

getPacVersion Source #

Arguments

:: a 
-> Maybe Version

a version property

Instances

Instances details
HasNameAndVersion PackageIteration Source # 
Instance details

Defined in Poseidon.Chronicle

HasNameAndVersion IndividualInfo Source # 
Instance details

Defined in Poseidon.EntityTypes

HasNameAndVersion PacNameAndVersion Source # 
Instance details

Defined in Poseidon.EntityTypes

HasNameAndVersion PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

HasNameAndVersion PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

HasNameAndVersion ExtendedIndividualInfo Source # 
Instance details

Defined in Poseidon.ServerClient

HasNameAndVersion GroupInfo Source # 
Instance details

Defined in Poseidon.ServerClient

HasNameAndVersion PackageInfo Source # 
Instance details

Defined in Poseidon.ServerClient

data PoseidonEntity Source #

A datatype to represent a requested package, group or individual

Constructors

Pac PacNameAndVersion

all individuals in a package. A version can be specified, if not implicitly request the latest

Group String

all individuals with a given group, in all of the latest packages

Ind String

all individuals with the given name, in all of the latest packages

SpecificInd String String PacNameAndVersion

the individual specified by its name, group and package. If not versioned, then take the latest version.

Instances

Instances details
FromJSON PoseidonEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Methods

parseJSON :: Value -> Parser PoseidonEntity

parseJSONList :: Value -> Parser [PoseidonEntity]

ToJSON PoseidonEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Methods

toJSON :: PoseidonEntity -> Value

toEncoding :: PoseidonEntity -> Encoding

toJSONList :: [PoseidonEntity] -> Value

toEncodingList :: [PoseidonEntity] -> Encoding

Show PoseidonEntity Source #

A show instance for rendering entities in forgescript

Instance details

Defined in Poseidon.EntityTypes

Eq PoseidonEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Ord PoseidonEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

EntitySpec PoseidonEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

data SignedEntity Source #

a signed entity specification, denoting inclusion or exclusion of an entity

Instances

Instances details
FromJSON SignedEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Methods

parseJSON :: Value -> Parser SignedEntity

parseJSONList :: Value -> Parser [SignedEntity]

ToJSON SignedEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Methods

toJSON :: SignedEntity -> Value

toEncoding :: SignedEntity -> Encoding

toJSONList :: [SignedEntity] -> Value

toEncodingList :: [SignedEntity] -> Encoding

Show SignedEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Eq SignedEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

Ord SignedEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

EntitySpec SignedEntity Source # 
Instance details

Defined in Poseidon.EntityTypes

hasVersion :: HasNameAndVersion a => a -> Bool Source #

a convenience function

makePacNameAndVersion :: HasNameAndVersion a => a -> PacNameAndVersion Source #

a function to normalise any instance of HasNameAndVersion to the minimal concrete type PacNameAndVersion

isLatestInCollection :: (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool Source #

a function to check whether a given package is the latest within a collection

class EntitySpec a Source #

A class to generalise signed and unsigned Entity Lists. Both have the feature that they can be used to filter individuals.

Minimal complete definition

indInfoConformsToEntitySpec, underlyingEntity, entitySpecParser

indInfoConformsToEntitySpecs :: EntitySpec a => IndividualInfo -> Bool -> [a] -> Bool Source #

this function checks whether a given individual info is selected by a given list of entities.

underlyingEntity Source #

Arguments

:: EntitySpec a 
=> a 
-> PoseidonEntity

returns the unterlying entity

entitySpecParser Source #

Arguments

:: EntitySpec a 
=> Parser a

a parser

determineNonExistentEntities :: EntitySpec a => [a] -> IndividualInfoCollection -> EntitiesList Source #

this returns a list of entities which could not be found

determineRelevantPackages :: (MonadThrow m, EntitySpec a) => [a] -> IndividualInfoCollection -> m [PacNameAndVersion] Source #

determine all packages with versions that contain individuals covered by the given entities

reportDuplicateIndividuals :: [IndividualInfo] -> [(IndividualInfo, [PoseidonEntity])] Source #

takes a list of selected individuals, checks for duplicates and reports a list of individuals with suggested Entity specifications

\ No newline at end of file diff --git a/Poseidon-GenotypeData.html b/Poseidon-GenotypeData.html index 8c09da83..981611a5 100644 --- a/Poseidon-GenotypeData.html +++ b/Poseidon-GenotypeData.html @@ -1 +1 @@ -Poseidon.GenotypeData
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.GenotypeData

Synopsis

Documentation

data GenotypeDataSpec Source #

A datatype to specify genotype files

Constructors

GenotypeDataSpec 

Fields

Instances

Instances details
FromJSON GenotypeDataSpec Source #

To facilitate automatic parsing of GenotypeDataSpec from JSON files

Instance details

Defined in Poseidon.GenotypeData

Methods

parseJSON :: Value -> Parser GenotypeDataSpec

parseJSONList :: Value -> Parser [GenotypeDataSpec]

ToJSON GenotypeDataSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Show GenotypeDataSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Eq GenotypeDataSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

data GenotypeFormatSpec Source #

A data type representing the options fo the genotype format

Instances

Instances details
FromJSON GenotypeFormatSpec Source #

To facilitate automatic parsing of GenotypeFormatSpec from JSON files

Instance details

Defined in Poseidon.GenotypeData

Methods

parseJSON :: Value -> Parser GenotypeFormatSpec

parseJSONList :: Value -> Parser [GenotypeFormatSpec]

ToJSON GenotypeFormatSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Show GenotypeFormatSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Eq GenotypeFormatSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

data SNPSetSpec Source #

Instances

Instances details
FromJSON SNPSetSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Methods

parseJSON :: Value -> Parser SNPSetSpec

parseJSONList :: Value -> Parser [SNPSetSpec]

ToJSON SNPSetSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Methods

toJSON :: SNPSetSpec -> Value

toEncoding :: SNPSetSpec -> Encoding

toJSONList :: [SNPSetSpec] -> Value

toEncodingList :: [SNPSetSpec] -> Encoding

Show SNPSetSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Eq SNPSetSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

loadIndividuals Source #

Arguments

:: FilePath

the base directory

-> GenotypeDataSpec

the Genotype spec

-> PoseidonIO [EigenstratIndEntry]

the returned list of EigenstratIndEntries.

A function to return a list of all individuals in the genotype files of a package.

loadGenotypeData Source #

Arguments

:: MonadSafe m 
=> FilePath

the base path

-> GenotypeDataSpec

the genotype spec

-> PlinkPopNameMode

The Plink PopName Mode

-> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())

a pair of the EigenstratIndEntries and a Producer over the Snp position values and the genotype line.

A function to read the genotype data of a package

joinEntries :: MonadIO m => LogA -> [Int] -> [String] -> [Maybe (EigenstratSnpEntry, GenoLine)] -> m (EigenstratSnpEntry, GenoLine) Source #

getConsensusSnpEntry :: MonadIO m => LogA -> [EigenstratSnpEntry] -> m EigenstratSnpEntry Source #

recodeAlleles :: EigenstratSnpEntry -> EigenstratSnpEntry -> GenoLine -> Either String GenoLine Source #

printSNPCopyProgress :: MonadIO m => LogA -> UTCTime -> Pipe a a m () Source #

selectIndices :: [Int] -> (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) Source #

\ No newline at end of file +Poseidon.GenotypeData
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.GenotypeData

Synopsis

Documentation

data GenotypeDataSpec Source #

A datatype to specify genotype files

Constructors

GenotypeDataSpec 

Fields

Instances

Instances details
FromJSON GenotypeDataSpec Source #

To facilitate automatic parsing of GenotypeDataSpec from JSON files

Instance details

Defined in Poseidon.GenotypeData

Methods

parseJSON :: Value -> Parser GenotypeDataSpec

parseJSONList :: Value -> Parser [GenotypeDataSpec]

ToJSON GenotypeDataSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Show GenotypeDataSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Eq GenotypeDataSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

data GenotypeFormatSpec Source #

A data type representing the options fo the genotype format

Instances

Instances details
FromJSON GenotypeFormatSpec Source #

To facilitate automatic parsing of GenotypeFormatSpec from JSON files

Instance details

Defined in Poseidon.GenotypeData

Methods

parseJSON :: Value -> Parser GenotypeFormatSpec

parseJSONList :: Value -> Parser [GenotypeFormatSpec]

ToJSON GenotypeFormatSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Show GenotypeFormatSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Eq GenotypeFormatSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

data SNPSetSpec Source #

Instances

Instances details
FromJSON SNPSetSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Methods

parseJSON :: Value -> Parser SNPSetSpec

parseJSONList :: Value -> Parser [SNPSetSpec]

ToJSON SNPSetSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Methods

toJSON :: SNPSetSpec -> Value

toEncoding :: SNPSetSpec -> Encoding

toJSONList :: [SNPSetSpec] -> Value

toEncodingList :: [SNPSetSpec] -> Encoding

Show SNPSetSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

Eq SNPSetSpec Source # 
Instance details

Defined in Poseidon.GenotypeData

loadIndividuals Source #

Arguments

:: FilePath

the base directory

-> GenotypeDataSpec

the Genotype spec

-> PoseidonIO [EigenstratIndEntry]

the returned list of EigenstratIndEntries.

A function to return a list of all individuals in the genotype files of a package.

loadGenotypeData Source #

Arguments

:: MonadSafe m 
=> FilePath

the base path

-> GenotypeDataSpec

the genotype spec

-> PlinkPopNameMode

The Plink PopName Mode

-> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())

a pair of the EigenstratIndEntries and a Producer over the Snp position values and the genotype line.

A function to read the genotype data of a package

joinEntries :: MonadIO m => LogA -> [Int] -> [String] -> [Maybe (EigenstratSnpEntry, GenoLine)] -> m (EigenstratSnpEntry, GenoLine) Source #

getConsensusSnpEntry :: MonadIO m => LogA -> [EigenstratSnpEntry] -> m EigenstratSnpEntry Source #

recodeAlleles :: EigenstratSnpEntry -> EigenstratSnpEntry -> GenoLine -> Either String GenoLine Source #

printSNPCopyProgress :: MonadIO m => LogA -> UTCTime -> Pipe a a m () Source #

selectIndices :: [Int] -> (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) Source #

\ No newline at end of file diff --git a/Poseidon-Janno.html b/Poseidon-Janno.html index 81aec618..3f1ec9cf 100644 --- a/Poseidon-Janno.html +++ b/Poseidon-Janno.html @@ -1,3 +1,3 @@ -Poseidon.Janno
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.Janno

Synopsis

Documentation

data JannoRow Source #

A data type to represent a sample/janno file row +Poseidon.Janno

poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.Janno

Synopsis

Documentation

data JannoRow Source #

A data type to represent a sample/janno file row See https://github.com/poseidon-framework/poseidon2-schema/blob/master/janno_columns.tsv - for more details

Constructors

JannoRow 

Fields

Instances

Instances details
FromJSON JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser JannoRow

parseJSONList :: Value -> Parser [JannoRow]

ToJSON JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: JannoRow -> Value

toEncoding :: JannoRow -> Encoding

toJSONList :: [JannoRow] -> Value

toEncodingList :: [JannoRow] -> Encoding

Generic JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep JannoRow :: Type -> Type #

Methods

from :: JannoRow -> Rep JannoRow x #

to :: Rep JannoRow x -> JannoRow #

Show JannoRow Source # 
Instance details

Defined in Poseidon.Janno

DefaultOrdered JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Methods

headerOrder :: JannoRow -> Header

FromNamedRecord JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseNamedRecord :: NamedRecord -> Parser JannoRow

ToNamedRecord JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Methods

toNamedRecord :: JannoRow -> NamedRecord

Generic JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Code JannoRow :: [[Type]]

Methods

from :: JannoRow -> Rep JannoRow

to :: Rep JannoRow -> JannoRow

HasDatatypeInfo JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type DatatypeInfoOf JannoRow :: DatatypeInfo

Methods

datatypeInfo :: proxy JannoRow -> DatatypeInfo (Code JannoRow)

Eq JannoRow Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoRow Source # 
Instance details

Defined in Poseidon.Janno

type Code JannoRow Source # 
Instance details

Defined in Poseidon.Janno

type Code JannoRow
type DatatypeInfoOf JannoRow Source # 
Instance details

Defined in Poseidon.Janno

type DatatypeInfoOf JannoRow = 'ADT "Poseidon.Janno" "JannoRow" '['Record "JannoRow" '['FieldInfo "jPoseidonID", 'FieldInfo "jGeneticSex", 'FieldInfo "jGroupName", 'FieldInfo "jAlternativeIDs", 'FieldInfo "jRelationTo", 'FieldInfo "jRelationDegree", 'FieldInfo "jRelationType", 'FieldInfo "jRelationNote", 'FieldInfo "jCollectionID", 'FieldInfo "jCountry", 'FieldInfo "jCountryISO", 'FieldInfo "jLocation", 'FieldInfo "jSite", 'FieldInfo "jLatitude", 'FieldInfo "jLongitude", 'FieldInfo "jDateType", 'FieldInfo "jDateC14Labnr", 'FieldInfo "jDateC14UncalBP", 'FieldInfo "jDateC14UncalBPErr", 'FieldInfo "jDateBCADStart", 'FieldInfo "jDateBCADMedian", 'FieldInfo "jDateBCADStop", 'FieldInfo "jDateNote", 'FieldInfo "jMTHaplogroup", 'FieldInfo "jYHaplogroup", 'FieldInfo "jSourceTissue", 'FieldInfo "jNrLibraries", 'FieldInfo "jLibraryNames", 'FieldInfo "jCaptureType", 'FieldInfo "jUDG", 'FieldInfo "jLibraryBuilt", 'FieldInfo "jGenotypePloidy", 'FieldInfo "jDataPreparationPipelineURL", 'FieldInfo "jEndogenous", 'FieldInfo "jNrSNPs", 'FieldInfo "jCoverageOnTargets", 'FieldInfo "jDamage", 'FieldInfo "jContamination", 'FieldInfo "jContaminationErr", 'FieldInfo "jContaminationMeas", 'FieldInfo "jContaminationNote", 'FieldInfo "jGeneticSourceAccessionIDs", 'FieldInfo "jPrimaryContact", 'FieldInfo "jPublication", 'FieldInfo "jComments", 'FieldInfo "jKeywords", 'FieldInfo "jAdditionalColumns"]] '['['StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy]]

newtype JannoSex Source #

A datatype for genetic sex

Constructors

JannoSex 

Fields

Instances

Instances details
FromJSON JannoSex Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser JannoSex

parseJSONList :: Value -> Parser [JannoSex]

ToJSON JannoSex Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: JannoSex -> Value

toEncoding :: JannoSex -> Encoding

toJSONList :: [JannoSex] -> Value

toEncodingList :: [JannoSex] -> Encoding

Show JannoSex Source # 
Instance details

Defined in Poseidon.Janno

FromField JannoSex Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser JannoSex

ToField JannoSex Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: JannoSex -> Field

Eq JannoSex Source # 
Instance details

Defined in Poseidon.Janno

Ord JannoSex Source # 
Instance details

Defined in Poseidon.Janno

PresenceCountable JannoSex Source # 
Instance details

Defined in Poseidon.CLI.Survey

newtype JannoList a Source #

A general datatype for janno list columns

Constructors

JannoList 

Fields

Instances

Instances details
PresenceCountable JannoStringList Source # 
Instance details

Defined in Poseidon.CLI.Survey

FromJSON a => FromJSON (JannoList a) Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser (JannoList a)

parseJSONList :: Value -> Parser [JannoList a]

ToJSON a => ToJSON (JannoList a) Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: JannoList a -> Value

toEncoding :: JannoList a -> Encoding

toJSONList :: [JannoList a] -> Value

toEncodingList :: [JannoList a] -> Encoding

Generic (JannoList a) Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep (JannoList a) :: Type -> Type #

Methods

from :: JannoList a -> Rep (JannoList a) x #

to :: Rep (JannoList a) x -> JannoList a #

Show a => Show (JannoList a) Source # 
Instance details

Defined in Poseidon.Janno

FromField a => FromField (JannoList a) Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser (JannoList a)

(ToField a, Show a) => ToField (JannoList a) Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: JannoList a -> Field

Eq a => Eq (JannoList a) Source # 
Instance details

Defined in Poseidon.Janno

Methods

(==) :: JannoList a -> JannoList a -> Bool #

(/=) :: JannoList a -> JannoList a -> Bool #

Ord a => Ord (JannoList a) Source # 
Instance details

Defined in Poseidon.Janno

type Rep (JannoList a) Source # 
Instance details

Defined in Poseidon.Janno

type Rep (JannoList a) = D1 ('MetaData "JannoList" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "JannoList" 'PrefixI 'True) (S1 ('MetaSel ('Just "getJannoList") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [a])))

data Sex #

Constructors

Male 
Female 
Unknown 

Instances

Instances details
Show Sex 
Instance details

Defined in SequenceFormats.Eigenstrat

Methods

showsPrec :: Int -> Sex -> ShowS #

show :: Sex -> String #

showList :: [Sex] -> ShowS #

Eq Sex 
Instance details

Defined in SequenceFormats.Eigenstrat

Methods

(==) :: Sex -> Sex -> Bool #

(/=) :: Sex -> Sex -> Bool #

newtype BCADAge Source #

A datatype for BC-AD ages

Constructors

BCADAge Int 

Instances

Instances details
FromJSON BCADAge Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser BCADAge

parseJSONList :: Value -> Parser [BCADAge]

ToJSON BCADAge Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: BCADAge -> Value

toEncoding :: BCADAge -> Encoding

toJSONList :: [BCADAge] -> Value

toEncodingList :: [BCADAge] -> Encoding

Generic BCADAge Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep BCADAge :: Type -> Type #

Methods

from :: BCADAge -> Rep BCADAge x #

to :: Rep BCADAge x -> BCADAge #

Show BCADAge Source # 
Instance details

Defined in Poseidon.Janno

FromField BCADAge Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser BCADAge

ToField BCADAge Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: BCADAge -> Field

Eq BCADAge Source # 
Instance details

Defined in Poseidon.Janno

Methods

(==) :: BCADAge -> BCADAge -> Bool #

(/=) :: BCADAge -> BCADAge -> Bool #

Ord BCADAge Source # 
Instance details

Defined in Poseidon.Janno

type Rep BCADAge Source # 
Instance details

Defined in Poseidon.Janno

type Rep BCADAge = D1 ('MetaData "BCADAge" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "BCADAge" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

newtype JannoCountry Source #

A datatype for countries in ISO-alpha2 code format

Constructors

JannoCountry Country 

Instances

Instances details
FromJSON JannoCountry Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser JannoCountry

parseJSONList :: Value -> Parser [JannoCountry]

ToJSON JannoCountry Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: JannoCountry -> Value

toEncoding :: JannoCountry -> Encoding

toJSONList :: [JannoCountry] -> Value

toEncodingList :: [JannoCountry] -> Encoding

Show JannoCountry Source # 
Instance details

Defined in Poseidon.Janno

FromField JannoCountry Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser JannoCountry

ToField JannoCountry Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: JannoCountry -> Field

Eq JannoCountry Source # 
Instance details

Defined in Poseidon.Janno

Ord JannoCountry Source # 
Instance details

Defined in Poseidon.Janno

newtype Latitude Source #

A datatype for Latitudes

Constructors

Latitude Double 

Instances

Instances details
FromJSON Latitude Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser Latitude

parseJSONList :: Value -> Parser [Latitude]

ToJSON Latitude Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: Latitude -> Value

toEncoding :: Latitude -> Encoding

toJSONList :: [Latitude] -> Value

toEncodingList :: [Latitude] -> Encoding

Generic Latitude Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep Latitude :: Type -> Type #

Methods

from :: Latitude -> Rep Latitude x #

to :: Rep Latitude x -> Latitude #

Show Latitude Source # 
Instance details

Defined in Poseidon.Janno

FromField Latitude Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser Latitude

ToField Latitude Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: Latitude -> Field

Eq Latitude Source # 
Instance details

Defined in Poseidon.Janno

Ord Latitude Source # 
Instance details

Defined in Poseidon.Janno

type Rep Latitude Source # 
Instance details

Defined in Poseidon.Janno

type Rep Latitude = D1 ('MetaData "Latitude" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "Latitude" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))

newtype Longitude Source #

A datatype for Longitudes

Constructors

Longitude Double 

Instances

Instances details
FromJSON Longitude Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser Longitude

parseJSONList :: Value -> Parser [Longitude]

ToJSON Longitude Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: Longitude -> Value

toEncoding :: Longitude -> Encoding

toJSONList :: [Longitude] -> Value

toEncodingList :: [Longitude] -> Encoding

Generic Longitude Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep Longitude :: Type -> Type #

Show Longitude Source # 
Instance details

Defined in Poseidon.Janno

FromField Longitude Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser Longitude

ToField Longitude Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: Longitude -> Field

Eq Longitude Source # 
Instance details

Defined in Poseidon.Janno

Ord Longitude Source # 
Instance details

Defined in Poseidon.Janno

type Rep Longitude Source # 
Instance details

Defined in Poseidon.Janno

type Rep Longitude = D1 ('MetaData "Longitude" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "Longitude" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))

data JannoDateType Source #

A datatype to represent Date_Type in a janno file

Constructors

C14 
Contextual 
Modern 

Instances

Instances details
FromJSON JannoDateType Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser JannoDateType

parseJSONList :: Value -> Parser [JannoDateType]

ToJSON JannoDateType Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: JannoDateType -> Value

toEncoding :: JannoDateType -> Encoding

toJSONList :: [JannoDateType] -> Value

toEncodingList :: [JannoDateType] -> Encoding

Bounded JannoDateType Source # 
Instance details

Defined in Poseidon.Janno

Enum JannoDateType Source # 
Instance details

Defined in Poseidon.Janno

Generic JannoDateType Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep JannoDateType :: Type -> Type #

Show JannoDateType Source # 
Instance details

Defined in Poseidon.Janno

FromField JannoDateType Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser JannoDateType

ToField JannoDateType Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: JannoDateType -> Field

Eq JannoDateType Source # 
Instance details

Defined in Poseidon.Janno

Ord JannoDateType Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoDateType Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoDateType = D1 ('MetaData "JannoDateType" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) (C1 ('MetaCons "C14" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Contextual" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Modern" 'PrefixI 'False) (U1 :: Type -> Type)))

data JannoCaptureType Source #

A datatype to represent Capture_Type in a janno file

Instances

Instances details
FromJSON JannoCaptureType Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser JannoCaptureType

parseJSONList :: Value -> Parser [JannoCaptureType]

ToJSON JannoCaptureType Source # 
Instance details

Defined in Poseidon.Janno

Bounded JannoCaptureType Source # 
Instance details

Defined in Poseidon.Janno

Enum JannoCaptureType Source # 
Instance details

Defined in Poseidon.Janno

Generic JannoCaptureType Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep JannoCaptureType :: Type -> Type #

Show JannoCaptureType Source # 
Instance details

Defined in Poseidon.Janno

FromField JannoCaptureType Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser JannoCaptureType

ToField JannoCaptureType Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: JannoCaptureType -> Field

Eq JannoCaptureType Source # 
Instance details

Defined in Poseidon.Janno

Ord JannoCaptureType Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoCaptureType Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoCaptureType = D1 ('MetaData "JannoCaptureType" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) (((C1 ('MetaCons "Shotgun" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "A1240K" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ArborComplete" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ArborPrimePlus" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ArborAncestralPlus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TwistAncientDNA" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "OtherCapture" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ReferenceGenome" 'PrefixI 'False) (U1 :: Type -> Type))))

data JannoGenotypePloidy Source #

A datatype to represent Genotype_Ploidy in a janno file

Constructors

Diploid 
Haploid 

Instances

Instances details
FromJSON JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser JannoGenotypePloidy

parseJSONList :: Value -> Parser [JannoGenotypePloidy]

ToJSON JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.Janno

Bounded JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.Janno

Enum JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.Janno

Generic JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep JannoGenotypePloidy :: Type -> Type #

Show JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.Janno

FromField JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser JannoGenotypePloidy

ToField JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: JannoGenotypePloidy -> Field

Eq JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.Janno

Ord JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoGenotypePloidy = D1 ('MetaData "JannoGenotypePloidy" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) (C1 ('MetaCons "Diploid" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Haploid" 'PrefixI 'False) (U1 :: Type -> Type))

newtype Percent Source #

A datatype for Percent values

Constructors

Percent Double 

Instances

Instances details
FromJSON Percent Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser Percent

parseJSONList :: Value -> Parser [Percent]

ToJSON Percent Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: Percent -> Value

toEncoding :: Percent -> Encoding

toJSONList :: [Percent] -> Value

toEncodingList :: [Percent] -> Encoding

Generic Percent Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep Percent :: Type -> Type #

Methods

from :: Percent -> Rep Percent x #

to :: Rep Percent x -> Percent #

Show Percent Source # 
Instance details

Defined in Poseidon.Janno

FromField Percent Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser Percent

ToField Percent Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: Percent -> Field

Eq Percent Source # 
Instance details

Defined in Poseidon.Janno

Methods

(==) :: Percent -> Percent -> Bool #

(/=) :: Percent -> Percent -> Bool #

Ord Percent Source # 
Instance details

Defined in Poseidon.Janno

type Rep Percent Source # 
Instance details

Defined in Poseidon.Janno

type Rep Percent = D1 ('MetaData "Percent" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "Percent" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))

data JannoUDG Source #

A datatype to represent UDG in a janno file

Constructors

Minus 
Half 
Plus 
Mixed 

Instances

Instances details
FromJSON JannoUDG Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser JannoUDG

parseJSONList :: Value -> Parser [JannoUDG]

ToJSON JannoUDG Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: JannoUDG -> Value

toEncoding :: JannoUDG -> Encoding

toJSONList :: [JannoUDG] -> Value

toEncodingList :: [JannoUDG] -> Encoding

Bounded JannoUDG Source # 
Instance details

Defined in Poseidon.Janno

Enum JannoUDG Source # 
Instance details

Defined in Poseidon.Janno

Generic JannoUDG Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep JannoUDG :: Type -> Type #

Methods

from :: JannoUDG -> Rep JannoUDG x #

to :: Rep JannoUDG x -> JannoUDG #

Show JannoUDG Source # 
Instance details

Defined in Poseidon.Janno

FromField JannoUDG Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser JannoUDG

ToField JannoUDG Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: JannoUDG -> Field

Eq JannoUDG Source # 
Instance details

Defined in Poseidon.Janno

Ord JannoUDG Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoUDG Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoUDG = D1 ('MetaData "JannoUDG" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) ((C1 ('MetaCons "Minus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Half" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Plus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Mixed" 'PrefixI 'False) (U1 :: Type -> Type)))

newtype JURI Source #

A datatype to represent URIs in a janno file

Constructors

JURI String 

Instances

Instances details
FromJSON JURI Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser JURI

parseJSONList :: Value -> Parser [JURI]

ToJSON JURI Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: JURI -> Value

toEncoding :: JURI -> Encoding

toJSONList :: [JURI] -> Value

toEncodingList :: [JURI] -> Encoding

Generic JURI Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep JURI :: Type -> Type #

Methods

from :: JURI -> Rep JURI x #

to :: Rep JURI x -> JURI #

Show JURI Source # 
Instance details

Defined in Poseidon.Janno

Methods

showsPrec :: Int -> JURI -> ShowS #

show :: JURI -> String #

showList :: [JURI] -> ShowS #

FromField JURI Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser JURI

ToField JURI Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: JURI -> Field

Eq JURI Source # 
Instance details

Defined in Poseidon.Janno

Methods

(==) :: JURI -> JURI -> Bool #

(/=) :: JURI -> JURI -> Bool #

Ord JURI Source # 
Instance details

Defined in Poseidon.Janno

Methods

compare :: JURI -> JURI -> Ordering #

(<) :: JURI -> JURI -> Bool #

(<=) :: JURI -> JURI -> Bool #

(>) :: JURI -> JURI -> Bool #

(>=) :: JURI -> JURI -> Bool #

max :: JURI -> JURI -> JURI #

min :: JURI -> JURI -> JURI #

type Rep JURI Source # 
Instance details

Defined in Poseidon.Janno

type Rep JURI = D1 ('MetaData "JURI" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "JURI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))

data RelationDegree Source #

Instances

Instances details
FromJSON RelationDegree Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser RelationDegree

parseJSONList :: Value -> Parser [RelationDegree]

ToJSON RelationDegree Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: RelationDegree -> Value

toEncoding :: RelationDegree -> Encoding

toJSONList :: [RelationDegree] -> Value

toEncodingList :: [RelationDegree] -> Encoding

Bounded RelationDegree Source # 
Instance details

Defined in Poseidon.Janno

Enum RelationDegree Source # 
Instance details

Defined in Poseidon.Janno

Generic RelationDegree Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep RelationDegree :: Type -> Type #

Show RelationDegree Source # 
Instance details

Defined in Poseidon.Janno

FromField RelationDegree Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser RelationDegree

ToField RelationDegree Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: RelationDegree -> Field

Eq RelationDegree Source # 
Instance details

Defined in Poseidon.Janno

Ord RelationDegree Source # 
Instance details

Defined in Poseidon.Janno

type Rep RelationDegree Source # 
Instance details

Defined in Poseidon.Janno

type Rep RelationDegree = D1 ('MetaData "RelationDegree" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) ((C1 ('MetaCons "Identical" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "First" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Second" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ThirdToFifth" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SixthToTenth" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Unrelated" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OtherDegree" 'PrefixI 'False) (U1 :: Type -> Type))))

data JannoLibraryBuilt Source #

A datatype to represent Library_Built in a janno file

Constructors

DS 
SS 
MixedSSDS 
Other 

Instances

Instances details
FromJSON JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser JannoLibraryBuilt

parseJSONList :: Value -> Parser [JannoLibraryBuilt]

ToJSON JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.Janno

Bounded JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.Janno

Enum JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.Janno

Generic JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep JannoLibraryBuilt :: Type -> Type #

Show JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.Janno

FromField JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser JannoLibraryBuilt

ToField JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: JannoLibraryBuilt -> Field

Eq JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.Janno

Ord JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoLibraryBuilt = D1 ('MetaData "JannoLibraryBuilt" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) ((C1 ('MetaCons "DS" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SS" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MixedSSDS" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Other" 'PrefixI 'False) (U1 :: Type -> Type)))

data AccessionID Source #

A datatype to represent AccessionIDs in a janno file

Instances

Instances details
FromJSON AccessionID Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser AccessionID

parseJSONList :: Value -> Parser [AccessionID]

ToJSON AccessionID Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: AccessionID -> Value

toEncoding :: AccessionID -> Encoding

toJSONList :: [AccessionID] -> Value

toEncodingList :: [AccessionID] -> Encoding

Generic AccessionID Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep AccessionID :: Type -> Type #

Show AccessionID Source # 
Instance details

Defined in Poseidon.Janno

FromField AccessionID Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser AccessionID

ToField AccessionID Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: AccessionID -> Field

Eq AccessionID Source # 
Instance details

Defined in Poseidon.Janno

Ord AccessionID Source # 
Instance details

Defined in Poseidon.Janno

type Rep AccessionID Source # 
Instance details

Defined in Poseidon.Janno

readJannoFile :: FilePath -> PoseidonIO JannoRows Source #

A function to load one janno file

createMinimalJanno :: [EigenstratIndEntry] -> JannoRows Source #

A function to create empty janno rows for a set of individuals

createMinimalSample :: EigenstratIndEntry -> JannoRow Source #

A function to create an empty janno row for an individual

newtype CsvNamedRecord Source #

A datatype to collect additional, unpecified .janno file columns (a hashmap in cassava/Data.Csv)

Constructors

CsvNamedRecord NamedRecord 

Instances

Instances details
FromJSON CsvNamedRecord Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser CsvNamedRecord

parseJSONList :: Value -> Parser [CsvNamedRecord]

ToJSON CsvNamedRecord Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: CsvNamedRecord -> Value

toEncoding :: CsvNamedRecord -> Encoding

toJSONList :: [CsvNamedRecord] -> Value

toEncodingList :: [CsvNamedRecord] -> Encoding

Generic CsvNamedRecord Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep CsvNamedRecord :: Type -> Type #

Show CsvNamedRecord Source # 
Instance details

Defined in Poseidon.Janno

Eq CsvNamedRecord Source # 
Instance details

Defined in Poseidon.Janno

PresenceCountable CsvNamedRecord Source # 
Instance details

Defined in Poseidon.CLI.Survey

type Rep CsvNamedRecord Source # 
Instance details

Defined in Poseidon.Janno

type Rep CsvNamedRecord = D1 ('MetaData "CsvNamedRecord" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "CsvNamedRecord" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NamedRecord)))

newtype JannoRows Source #

A data type to represent a janno file

Constructors

JannoRows [JannoRow] 

Instances

Instances details
FromJSON JannoRows Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseJSON :: Value -> Parser JannoRows

parseJSONList :: Value -> Parser [JannoRows]

ToJSON JannoRows Source # 
Instance details

Defined in Poseidon.Janno

Methods

toJSON :: JannoRows -> Value

toEncoding :: JannoRows -> Encoding

toJSONList :: [JannoRows] -> Value

toEncodingList :: [JannoRows] -> Encoding

Monoid JannoRows Source # 
Instance details

Defined in Poseidon.Janno

Semigroup JannoRows Source # 
Instance details

Defined in Poseidon.Janno

Generic JannoRows Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep JannoRows :: Type -> Type #

Show JannoRows Source # 
Instance details

Defined in Poseidon.Janno

Eq JannoRows Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoRows Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoRows = D1 ('MetaData "JannoRows" "Poseidon.Janno" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "JannoRows" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [JannoRow])))

filterLookup :: FromField a => NamedRecord -> ByteString -> Parser a Source #

filterLookupOptional :: FromField a => NamedRecord -> ByteString -> Parser (Maybe a) Source #

getCsvNR :: CsvNamedRecord -> NamedRecord Source #

encodingOptions :: EncodeOptions Source #

decodingOptions :: DecodeOptions Source #

explicitNA :: ByteString -> ByteString Source #

A helper functions to replace empty bytestrings values in janno files with explicit "n/a"

renderCsvParseError :: CsvParseError -> String Source #

\ No newline at end of file + for more details

Constructors

JannoRow 

Fields

Instances

Instances details
Generic JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep JannoRow :: Type -> Type #

Methods

from :: JannoRow -> Rep JannoRow x #

to :: Rep JannoRow x -> JannoRow #

Show JannoRow Source # 
Instance details

Defined in Poseidon.Janno

DefaultOrdered JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Methods

headerOrder :: JannoRow -> Header

FromNamedRecord JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseNamedRecord :: NamedRecord -> Parser JannoRow

ToNamedRecord JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Methods

toNamedRecord :: JannoRow -> NamedRecord

Generic JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Code JannoRow :: [[Type]]

Methods

from :: JannoRow -> Rep JannoRow

to :: Rep JannoRow -> JannoRow

HasDatatypeInfo JannoRow Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type DatatypeInfoOf JannoRow :: DatatypeInfo

Methods

datatypeInfo :: proxy JannoRow -> DatatypeInfo (Code JannoRow)

Eq JannoRow Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoRow Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoRow = D1 ('MetaData "JannoRow" "Poseidon.Janno" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (C1 ('MetaCons "JannoRow" 'PrefixI 'True) (((((S1 ('MetaSel ('Just "jPoseidonID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "jGeneticSex") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GeneticSex)) :*: (S1 ('MetaSel ('Just "jGroupName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ListColumn GroupName)) :*: (S1 ('MetaSel ('Just "jAlternativeIDs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoAlternativeID))) :*: S1 ('MetaSel ('Just "jRelationTo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoRelationTo)))))) :*: ((S1 ('MetaSel ('Just "jRelationDegree") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoRelationDegree))) :*: (S1 ('MetaSel ('Just "jRelationType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoRelationType))) :*: S1 ('MetaSel ('Just "jRelationNote") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoRelationNote)))) :*: (S1 ('MetaSel ('Just "jCollectionID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoCollectionID)) :*: (S1 ('MetaSel ('Just "jCountry") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoCountry)) :*: S1 ('MetaSel ('Just "jCountryISO") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoCountryISO)))))) :*: (((S1 ('MetaSel ('Just "jLocation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoLocation)) :*: (S1 ('MetaSel ('Just "jSite") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoSite)) :*: S1 ('MetaSel ('Just "jLatitude") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoLatitude)))) :*: (S1 ('MetaSel ('Just "jLongitude") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoLongitude)) :*: (S1 ('MetaSel ('Just "jDateType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoDateType)) :*: S1 ('MetaSel ('Just "jDateC14Labnr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoDateC14Labnr)))))) :*: ((S1 ('MetaSel ('Just "jDateC14UncalBP") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoDateC14UncalBP))) :*: (S1 ('MetaSel ('Just "jDateC14UncalBPErr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoDateC14UncalBPErr))) :*: S1 ('MetaSel ('Just "jDateBCADStart") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoDateBCADStart)))) :*: (S1 ('MetaSel ('Just "jDateBCADMedian") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoDateBCADMedian)) :*: (S1 ('MetaSel ('Just "jDateBCADStop") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoDateBCADStop)) :*: S1 ('MetaSel ('Just "jDateNote") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoDateNote))))))) :*: ((((S1 ('MetaSel ('Just "jMTHaplogroup") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoMTHaplogroup)) :*: (S1 ('MetaSel ('Just "jYHaplogroup") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoYHaplogroup)) :*: S1 ('MetaSel ('Just "jSourceTissue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoSourceTissue))))) :*: (S1 ('MetaSel ('Just "jNrLibraries") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoNrLibraries)) :*: (S1 ('MetaSel ('Just "jLibraryNames") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoLibraryName))) :*: S1 ('MetaSel ('Just "jCaptureType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoCaptureType)))))) :*: ((S1 ('MetaSel ('Just "jUDG") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoUDG)) :*: (S1 ('MetaSel ('Just "jLibraryBuilt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoLibraryBuilt)) :*: S1 ('MetaSel ('Just "jGenotypePloidy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoGenotypePloidy)))) :*: (S1 ('MetaSel ('Just "jDataPreparationPipelineURL") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoDataPreparationPipelineURL)) :*: (S1 ('MetaSel ('Just "jEndogenous") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoEndogenous)) :*: S1 ('MetaSel ('Just "jNrSNPs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoNrSNPs)))))) :*: (((S1 ('MetaSel ('Just "jCoverageOnTargets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoCoverageOnTargets)) :*: (S1 ('MetaSel ('Just "jDamage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoDamage)) :*: S1 ('MetaSel ('Just "jContamination") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoContamination))))) :*: (S1 ('MetaSel ('Just "jContaminationErr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoContaminationErr))) :*: (S1 ('MetaSel ('Just "jContaminationMeas") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoContaminationMeas))) :*: S1 ('MetaSel ('Just "jContaminationNote") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoContaminationNote))))) :*: ((S1 ('MetaSel ('Just "jGeneticSourceAccessionIDs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoGeneticSourceAccessionID))) :*: (S1 ('MetaSel ('Just "jPrimaryContact") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoPrimaryContact)) :*: S1 ('MetaSel ('Just "jPublication") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoPublication))))) :*: (S1 ('MetaSel ('Just "jComments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoComment)) :*: (S1 ('MetaSel ('Just "jKeywords") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JannoKeyword))) :*: S1 ('MetaSel ('Just "jAdditionalColumns") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CsvNamedRecord))))))))
type Code JannoRow Source # 
Instance details

Defined in Poseidon.Janno

type DatatypeInfoOf JannoRow Source # 
Instance details

Defined in Poseidon.Janno

type DatatypeInfoOf JannoRow = 'ADT "Poseidon.Janno" "JannoRow" '['Record "JannoRow" '['FieldInfo "jPoseidonID", 'FieldInfo "jGeneticSex", 'FieldInfo "jGroupName", 'FieldInfo "jAlternativeIDs", 'FieldInfo "jRelationTo", 'FieldInfo "jRelationDegree", 'FieldInfo "jRelationType", 'FieldInfo "jRelationNote", 'FieldInfo "jCollectionID", 'FieldInfo "jCountry", 'FieldInfo "jCountryISO", 'FieldInfo "jLocation", 'FieldInfo "jSite", 'FieldInfo "jLatitude", 'FieldInfo "jLongitude", 'FieldInfo "jDateType", 'FieldInfo "jDateC14Labnr", 'FieldInfo "jDateC14UncalBP", 'FieldInfo "jDateC14UncalBPErr", 'FieldInfo "jDateBCADStart", 'FieldInfo "jDateBCADMedian", 'FieldInfo "jDateBCADStop", 'FieldInfo "jDateNote", 'FieldInfo "jMTHaplogroup", 'FieldInfo "jYHaplogroup", 'FieldInfo "jSourceTissue", 'FieldInfo "jNrLibraries", 'FieldInfo "jLibraryNames", 'FieldInfo "jCaptureType", 'FieldInfo "jUDG", 'FieldInfo "jLibraryBuilt", 'FieldInfo "jGenotypePloidy", 'FieldInfo "jDataPreparationPipelineURL", 'FieldInfo "jEndogenous", 'FieldInfo "jNrSNPs", 'FieldInfo "jCoverageOnTargets", 'FieldInfo "jDamage", 'FieldInfo "jContamination", 'FieldInfo "jContaminationErr", 'FieldInfo "jContaminationMeas", 'FieldInfo "jContaminationNote", 'FieldInfo "jGeneticSourceAccessionIDs", 'FieldInfo "jPrimaryContact", 'FieldInfo "jPublication", 'FieldInfo "jComments", 'FieldInfo "jKeywords", 'FieldInfo "jAdditionalColumns"]] '['['StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy, 'StrictnessInfo 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy]]

newtype GeneticSex Source #

A datatype for the Genetic_Sex .janno column

Constructors

GeneticSex 

Fields

Instances

Instances details
Show GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser GeneticSex

ToField GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: GeneticSex -> Field

Eq GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

PresenceCountable GeneticSex Source # 
Instance details

Defined in Poseidon.CLI.Survey

Makeable GeneticSex Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m GeneticSex Source #

newtype GroupName Source #

A datatype for the Group_Name .janno column

Constructors

GroupName Text 

Instances

Instances details
Show GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser GroupName

ToField GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: GroupName -> Field

Eq GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable GroupName Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m GroupName Source #

newtype ListColumn a Source #

A general datatype for janno list columns

Constructors

ListColumn 

Fields

Instances

Instances details
Generic (ListColumn a) Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep (ListColumn a) :: Type -> Type #

Methods

from :: ListColumn a -> Rep (ListColumn a) x #

to :: Rep (ListColumn a) x -> ListColumn a #

Show a => Show (ListColumn a) Source # 
Instance details

Defined in Poseidon.Janno

FromField a => FromField (ListColumn a) Source # 
Instance details

Defined in Poseidon.Janno

Methods

parseField :: Field -> Parser (ListColumn a)

(ToField a, Show a) => ToField (ListColumn a) Source # 
Instance details

Defined in Poseidon.Janno

Methods

toField :: ListColumn a -> Field

Eq a => Eq (ListColumn a) Source # 
Instance details

Defined in Poseidon.Janno

Methods

(==) :: ListColumn a -> ListColumn a -> Bool #

(/=) :: ListColumn a -> ListColumn a -> Bool #

Ord a => Ord (ListColumn a) Source # 
Instance details

Defined in Poseidon.Janno

PresenceCountable (ListColumn a) Source # 
Instance details

Defined in Poseidon.CLI.Survey

type Rep (ListColumn a) Source # 
Instance details

Defined in Poseidon.Janno

type Rep (ListColumn a) = D1 ('MetaData "ListColumn" "Poseidon.Janno" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "ListColumn" 'PrefixI 'True) (S1 ('MetaSel ('Just "getListColumn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [a])))

data Sex #

Constructors

Male 
Female 
Unknown 

Instances

Instances details
Show Sex 
Instance details

Defined in SequenceFormats.Eigenstrat

Methods

showsPrec :: Int -> Sex -> ShowS #

show :: Sex -> String #

showList :: [Sex] -> ShowS #

Eq Sex 
Instance details

Defined in SequenceFormats.Eigenstrat

Methods

(==) :: Sex -> Sex -> Bool #

(/=) :: Sex -> Sex -> Bool #

newtype JannoCountryISO Source #

A datatype for countries in ISO-alpha2 code format

Constructors

JannoCountryISO Country 

newtype JannoLatitude Source #

A datatype for the Latitude .janno column

Constructors

JannoLatitude Double 

Instances

Instances details
Generic JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoLatitude :: Type -> Type #

Show JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoLatitude

ToField JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoLatitude -> Field

Eq JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoLatitude Source #

type Rep JannoLatitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoLatitude = D1 ('MetaData "JannoLatitude" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoLatitude" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))

newtype JannoLongitude Source #

A datatype for the Longitude .janno column

Constructors

JannoLongitude Double 

Instances

Instances details
Generic JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoLongitude :: Type -> Type #

Show JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoLongitude

ToField JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoLongitude -> Field

Eq JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoLongitude Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoLongitude = D1 ('MetaData "JannoLongitude" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoLongitude" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))

data JannoDateType Source #

A datatype for the Date_Type .janno column

Constructors

C14 
Contextual 
Modern 

Instances

Instances details
Bounded JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Enum JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Generic JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoDateType :: Type -> Type #

Show JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoDateType

ToField JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoDateType -> Field

Eq JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoDateType Source #

type Rep JannoDateType Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateType = D1 ('MetaData "JannoDateType" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (C1 ('MetaCons "C14" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Contextual" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Modern" 'PrefixI 'False) (U1 :: Type -> Type)))

newtype JannoDateBCADMedian Source #

A datatype for the Date_BC_AD_Median .janno column

Constructors

JannoDateBCADMedian Int 

Instances

Instances details
Generic JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoDateBCADMedian :: Type -> Type #

Show JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoDateBCADMedian

ToField JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoDateBCADMedian -> Field

Eq JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateBCADMedian Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoDateBCADMedian = D1 ('MetaData "JannoDateBCADMedian" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoDateBCADMedian" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

data JannoCaptureType Source #

A datatype for the Capture_Type .janno column

Instances

Instances details
Bounded JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Enum JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Generic JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoCaptureType :: Type -> Type #

Show JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoCaptureType

ToField JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoCaptureType -> Field

Eq JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoCaptureType Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoCaptureType = D1 ('MetaData "JannoCaptureType" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (((C1 ('MetaCons "Shotgun" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "A1240K" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ArborComplete" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ArborPrimePlus" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ArborAncestralPlus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TwistAncientDNA" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "OtherCapture" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ReferenceGenome" 'PrefixI 'False) (U1 :: Type -> Type))))

data JannoGenotypePloidy Source #

A datatype for the Genotype_Ploidy .janno column

Constructors

Diploid 
Haploid 

Instances

Instances details
Bounded JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Enum JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Generic JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoGenotypePloidy :: Type -> Type #

Show JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoGenotypePloidy

ToField JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoGenotypePloidy -> Field

Eq JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoGenotypePloidy Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoGenotypePloidy = D1 ('MetaData "JannoGenotypePloidy" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (C1 ('MetaCons "Diploid" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Haploid" 'PrefixI 'False) (U1 :: Type -> Type))

data JannoUDG Source #

A datatype for the UDG .janno column

Constructors

Minus 
Half 
Plus 
Mixed 

Instances

Instances details
Bounded JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Enum JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Generic JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoUDG :: Type -> Type #

Methods

from :: JannoUDG -> Rep JannoUDG x #

to :: Rep JannoUDG x -> JannoUDG #

Show JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoUDG

ToField JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoUDG -> Field

Eq JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

make :: MonadFail m => Text -> m JannoUDG Source #

type Rep JannoUDG Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoUDG = D1 ('MetaData "JannoUDG" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) ((C1 ('MetaCons "Minus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Half" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Plus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Mixed" 'PrefixI 'False) (U1 :: Type -> Type)))

data JannoRelationDegree Source #

A datatype for the Relation_Degree .janno column

Instances

Instances details
Bounded JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Enum JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Generic JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoRelationDegree :: Type -> Type #

Show JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoRelationDegree

ToField JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoRelationDegree -> Field

Eq JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoRelationDegree Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoRelationDegree = D1 ('MetaData "JannoRelationDegree" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) ((C1 ('MetaCons "Identical" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "First" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Second" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ThirdToFifth" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SixthToTenth" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Unrelated" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "OtherDegree" 'PrefixI 'False) (U1 :: Type -> Type))))

data JannoLibraryBuilt Source #

A datatype for the Library_Built .janno column

Constructors

DS 
SS 
MixedSSDS 
Other 

Instances

Instances details
Bounded JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Enum JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Generic JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Associated Types

type Rep JannoLibraryBuilt :: Type -> Type #

Show JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

FromField JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

parseField :: Field -> Parser JannoLibraryBuilt

ToField JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Methods

toField :: JannoLibraryBuilt -> Field

Eq JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Ord JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

Makeable JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoLibraryBuilt Source # 
Instance details

Defined in Poseidon.ColumnTypes

type Rep JannoLibraryBuilt = D1 ('MetaData "JannoLibraryBuilt" "Poseidon.ColumnTypes" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) ((C1 ('MetaCons "DS" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SS" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MixedSSDS" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Other" 'PrefixI 'False) (U1 :: Type -> Type)))

readJannoFile :: FilePath -> PoseidonIO JannoRows Source #

A function to load one janno file

createMinimalJanno :: [EigenstratIndEntry] -> JannoRows Source #

A function to create empty janno rows for a set of individuals

createMinimalSample :: EigenstratIndEntry -> JannoRow Source #

A function to create an empty janno row for an individual

newtype CsvNamedRecord Source #

A datatype to collect additional, unpecified .janno file columns (a hashmap in cassava/Data.Csv)

Constructors

CsvNamedRecord NamedRecord 

Instances

Instances details
Generic CsvNamedRecord Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep CsvNamedRecord :: Type -> Type #

Show CsvNamedRecord Source # 
Instance details

Defined in Poseidon.Janno

Eq CsvNamedRecord Source # 
Instance details

Defined in Poseidon.Janno

PresenceCountable CsvNamedRecord Source # 
Instance details

Defined in Poseidon.CLI.Survey

type Rep CsvNamedRecord Source # 
Instance details

Defined in Poseidon.Janno

type Rep CsvNamedRecord = D1 ('MetaData "CsvNamedRecord" "Poseidon.Janno" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "CsvNamedRecord" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NamedRecord)))

newtype JannoRows Source #

A data type to represent a janno file

Constructors

JannoRows [JannoRow] 

Instances

Instances details
Monoid JannoRows Source # 
Instance details

Defined in Poseidon.Janno

Semigroup JannoRows Source # 
Instance details

Defined in Poseidon.Janno

Generic JannoRows Source # 
Instance details

Defined in Poseidon.Janno

Associated Types

type Rep JannoRows :: Type -> Type #

Show JannoRows Source # 
Instance details

Defined in Poseidon.Janno

Eq JannoRows Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoRows Source # 
Instance details

Defined in Poseidon.Janno

type Rep JannoRows = D1 ('MetaData "JannoRows" "Poseidon.Janno" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JannoRows" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [JannoRow])))

filterLookup :: FromField a => NamedRecord -> ByteString -> Parser a Source #

filterLookupOptional :: FromField a => NamedRecord -> ByteString -> Parser (Maybe a) Source #

getCsvNR :: CsvNamedRecord -> NamedRecord Source #

encodingOptions :: EncodeOptions Source #

decodingOptions :: DecodeOptions Source #

explicitNA :: ByteString -> ByteString Source #

A helper functions to replace empty bytestrings values in janno files with explicit "n/a"

renderCsvParseError :: CsvParseError -> String Source #

\ No newline at end of file diff --git a/Poseidon-MathHelpers.html b/Poseidon-MathHelpers.html index ff1b4a4e..b9c4385f 100644 --- a/Poseidon-MathHelpers.html +++ b/Poseidon-MathHelpers.html @@ -1,2 +1,2 @@ -Poseidon.MathHelpers
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.MathHelpers

Documentation

avg :: [Double] -> Double Source #

A helper function to calculate the mean of a list of doubles

roundTo :: Int -> Double -> Double Source #

A helper function to round doubles

roundToStr :: (PrintfArg a, Floating a) => Int -> a -> String Source #

A helper function to print rounded doubles

stdev :: [Double] -> Double Source #

A helper function to calculate the standard deviation of a list of doubles

meanAndSdRoundTo :: Int -> [Double] -> String Source #

A helper function to get a nice string with mean and sd for a list of doubles

meanAndSdInteger :: [Double] -> String Source #

A helper function to get a nice string with mean and sd for a list of doubles +Poseidon.MathHelpers

poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.MathHelpers

Documentation

avg :: [Double] -> Double Source #

A helper function to calculate the mean of a list of doubles

roundTo :: Int -> Double -> Double Source #

A helper function to round doubles

roundToStr :: (PrintfArg a, Floating a) => Int -> a -> String Source #

A helper function to print rounded doubles

stdev :: [Double] -> Double Source #

A helper function to calculate the standard deviation of a list of doubles

meanAndSdRoundTo :: Int -> [Double] -> String Source #

A helper function to get a nice string with mean and sd for a list of doubles

meanAndSdInteger :: [Double] -> String Source #

A helper function to get a nice string with mean and sd for a list of doubles (here rounded to integer)

\ No newline at end of file diff --git a/Poseidon-Package.html b/Poseidon-Package.html index 47a1bc9d..b07dcac6 100644 --- a/Poseidon-Package.html +++ b/Poseidon-Package.html @@ -1,4 +1,4 @@ -Poseidon.Package
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.Package

Synopsis

Documentation

data PoseidonYamlStruct Source #

Internal structure for YAML loading only

Instances

Instances details
FromJSON PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

Methods

parseJSON :: Value -> Parser PoseidonYamlStruct

parseJSONList :: Value -> Parser [PoseidonYamlStruct]

ToJSON PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

Generic PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

Associated Types

type Rep PoseidonYamlStruct :: Type -> Type #

Show PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

Eq PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

HasNameAndVersion PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

type Rep PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

type Rep PoseidonYamlStruct = D1 ('MetaData "PoseidonYamlStruct" "Poseidon.Package" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) (C1 ('MetaCons "PoseidonYamlStruct" 'PrefixI 'True) (((S1 ('MetaSel ('Just "_posYamlPoseidonVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version) :*: (S1 ('MetaSel ('Just "_posYamlTitle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "_posYamlDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))) :*: ((S1 ('MetaSel ('Just "_posYamlContributor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ContributorSpec]) :*: S1 ('MetaSel ('Just "_posYamlPackageVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Version))) :*: (S1 ('MetaSel ('Just "_posYamlLastModified") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Day)) :*: S1 ('MetaSel ('Just "_posYamlGenotypeData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GenotypeDataSpec)))) :*: (((S1 ('MetaSel ('Just "_posYamlJannoFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "_posYamlJannoFileChkSum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String))) :*: (S1 ('MetaSel ('Just "_posYamlSeqSourceFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "_posYamlSeqSourceFileChkSum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))) :*: ((S1 ('MetaSel ('Just "_posYamlBibFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "_posYamlBibFileChkSum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String))) :*: (S1 ('MetaSel ('Just "_posYamlReadmeFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "_posYamlChangelogFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)))))))

data PoseidonPackage Source #

A data type to represent a Poseidon Package

Constructors

PoseidonPackage 

Fields

Instances

Instances details
Generic PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

Associated Types

type Rep PoseidonPackage :: Type -> Type #

Show PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

Eq PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

Ord PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

HasNameAndVersion PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

type Rep PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

type Rep PoseidonPackage = D1 ('MetaData "PoseidonPackage" "Poseidon.Package" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) (C1 ('MetaCons "PoseidonPackage" 'PrefixI 'True) ((((S1 ('MetaSel ('Just "posPacBaseDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath) :*: S1 ('MetaSel ('Just "posPacPoseidonVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version)) :*: (S1 ('MetaSel ('Just "posPacNameAndVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PacNameAndVersion) :*: S1 ('MetaSel ('Just "posPacDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))) :*: ((S1 ('MetaSel ('Just "posPacContributor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ContributorSpec]) :*: S1 ('MetaSel ('Just "posPacLastModified") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Day))) :*: (S1 ('MetaSel ('Just "posPacGenotypeData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GenotypeDataSpec) :*: (S1 ('MetaSel ('Just "posPacJannoFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "posPacJanno") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 JannoRows))))) :*: (((S1 ('MetaSel ('Just "posPacJannoFileChkSum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: S1 ('MetaSel ('Just "posPacSeqSourceFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath))) :*: (S1 ('MetaSel ('Just "posPacSeqSource") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SeqSourceRows) :*: S1 ('MetaSel ('Just "posPacSeqSourceFileChkSum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))) :*: ((S1 ('MetaSel ('Just "posPacBibFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "posPacBib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BibTeX)) :*: (S1 ('MetaSel ('Just "posPacBibFileChkSum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: (S1 ('MetaSel ('Just "posPacReadmeFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "posPacChangelogFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath))))))))

data PoseidonException Source #

A Poseidon Exception data type with several concrete constructors

Constructors

PoseidonYamlParseException FilePath ParseException

An exception to represent YAML parsing errors

PoseidonPackageException String

An exception to represent a logical error in a package

PoseidonPackageVersionException FilePath String

An exception to represent an issue with a package version

PoseidonPackageMissingVersionException FilePath

An exception to indicate a missing poseidonVersion field

PoseidonIndSearchException String

An exception to represent an error when searching for individuals or populations

PoseidonGenotypeException String

An exception to represent errors in the genotype data

PoseidonGenotypeExceptionForward ErrorLength SomeException

An exception to represent errors in the genotype data forwarded from the sequence-formats library

PoseidonHttpExceptionForward HttpException

An exception to represent errors in the remote data loading forwarded from simpleHttp

PoseidonFileRowException FilePath String String

An exception to represent errors when trying to parse the janno or seqSource file

PoseidonFileConsistencyException FilePath String

An exception to represent consistency errors in janno or seqSource files

PoseidonCrossFileConsistencyException String String

An exception to represent inconsistencies across multiple files in a package

PoseidonCollectionException String

An exception to represent logical issues in a poseidon package Collection

PoseidonFileExistenceException FilePath

An exception to represent missing files

PoseidonFileChecksumException FilePath

An exception to represent failed checksum tests

PoseidonFStatsFormatException String

An exception type to represent FStat specification errors

PoseidonBibTeXException FilePath String

An exception to represent errors when trying to parse the .bib file

PoseidonPoseidonEntityParsingException ParseError

An exception to indicate failed entity parsing

PoseidonForgeEntitiesException String

An exception to indicate issues in the forge selection

PoseidonEmptyForgeException

An exception to throw if there is nothing to be forged

PoseidonNewPackageConstructionException String

An exception to indicate an issue in newPackageTemplate

PoseidonRemoteJSONParsingException String

An exception to indicate failed remote info JSON parsing

PoseidonGenericException String

A catch-all for any other type of exception

PoseidonEmptyOutPacNameException

An exception to throw if the output package lacks a name

PoseidonUnequalBaseDirException FilePath FilePath FilePath

An exception to throw if genotype data files don't share a common base directory

PoseidonServerCommunicationException String

An exception to mark server communication errors

PoseidonUnzipException SomeException

An exception for unzipping issues in fetch

PoseidonChronicleException String

An exception for issues in chronicle

PoseidonGitException FilePath String

An exception for issues with git

PoseidonCantPreserveException

An exception for issues with --preservePyml

data PackageReadOptions Source #

Constructors

PackageReadOptions 

Fields

readPoseidonPackageCollection Source #

Arguments

:: PackageReadOptions 
-> [FilePath]

A list of base directories where to search in

-> PoseidonIO [PoseidonPackage]

A list of returned poseidon packages

readPoseidonPackageCollectionWithSkipIndicator Source #

Arguments

:: PackageReadOptions 
-> [FilePath]

A list of base directories where to search in

-> PoseidonIO ([PoseidonPackage], Bool)

A list of returned poseidon packages and a flag for whether packages were skipped

a utility function to load all poseidon packages found recursively in multiple base directories. +Poseidon.Package

poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.Package

Synopsis

Documentation

data PoseidonYamlStruct Source #

Internal structure for YAML loading only

Instances

Instances details
FromJSON PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

Methods

parseJSON :: Value -> Parser PoseidonYamlStruct

parseJSONList :: Value -> Parser [PoseidonYamlStruct]

ToJSON PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

Generic PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

Associated Types

type Rep PoseidonYamlStruct :: Type -> Type #

Show PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

Eq PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

HasNameAndVersion PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

type Rep PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

type Rep PoseidonYamlStruct = D1 ('MetaData "PoseidonYamlStruct" "Poseidon.Package" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (C1 ('MetaCons "PoseidonYamlStruct" 'PrefixI 'True) (((S1 ('MetaSel ('Just "_posYamlPoseidonVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version) :*: (S1 ('MetaSel ('Just "_posYamlTitle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "_posYamlDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))) :*: ((S1 ('MetaSel ('Just "_posYamlContributor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ContributorSpec]) :*: S1 ('MetaSel ('Just "_posYamlPackageVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Version))) :*: (S1 ('MetaSel ('Just "_posYamlLastModified") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Day)) :*: S1 ('MetaSel ('Just "_posYamlGenotypeData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GenotypeDataSpec)))) :*: (((S1 ('MetaSel ('Just "_posYamlJannoFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "_posYamlJannoFileChkSum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String))) :*: (S1 ('MetaSel ('Just "_posYamlSeqSourceFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "_posYamlSeqSourceFileChkSum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))) :*: ((S1 ('MetaSel ('Just "_posYamlBibFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "_posYamlBibFileChkSum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String))) :*: (S1 ('MetaSel ('Just "_posYamlReadmeFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "_posYamlChangelogFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)))))))

data PoseidonPackage Source #

A data type to represent a Poseidon Package

Constructors

PoseidonPackage 

Fields

Instances

Instances details
Generic PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

Associated Types

type Rep PoseidonPackage :: Type -> Type #

Show PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

Eq PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

Ord PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

HasNameAndVersion PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

type Rep PoseidonPackage Source # 
Instance details

Defined in Poseidon.Package

type Rep PoseidonPackage = D1 ('MetaData "PoseidonPackage" "Poseidon.Package" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (C1 ('MetaCons "PoseidonPackage" 'PrefixI 'True) ((((S1 ('MetaSel ('Just "posPacBaseDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath) :*: S1 ('MetaSel ('Just "posPacPoseidonVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version)) :*: (S1 ('MetaSel ('Just "posPacNameAndVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PacNameAndVersion) :*: S1 ('MetaSel ('Just "posPacDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))) :*: ((S1 ('MetaSel ('Just "posPacContributor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ContributorSpec]) :*: S1 ('MetaSel ('Just "posPacLastModified") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Day))) :*: (S1 ('MetaSel ('Just "posPacGenotypeData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 GenotypeDataSpec) :*: (S1 ('MetaSel ('Just "posPacJannoFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "posPacJanno") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 JannoRows))))) :*: (((S1 ('MetaSel ('Just "posPacJannoFileChkSum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: S1 ('MetaSel ('Just "posPacSeqSourceFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath))) :*: (S1 ('MetaSel ('Just "posPacSeqSource") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 SeqSourceRows) :*: S1 ('MetaSel ('Just "posPacSeqSourceFileChkSum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))) :*: ((S1 ('MetaSel ('Just "posPacBibFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "posPacBib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BibTeX)) :*: (S1 ('MetaSel ('Just "posPacBibFileChkSum") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: (S1 ('MetaSel ('Just "posPacReadmeFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath)) :*: S1 ('MetaSel ('Just "posPacChangelogFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FilePath))))))))

data PoseidonException Source #

A Poseidon Exception data type with several concrete constructors

Constructors

PoseidonYamlParseException FilePath ParseException

An exception to represent YAML parsing errors

PoseidonPackageException String

An exception to represent a logical error in a package

PoseidonPackageVersionException FilePath String

An exception to represent an issue with a package version

PoseidonPackageMissingVersionException FilePath

An exception to indicate a missing poseidonVersion field

PoseidonIndSearchException String

An exception to represent an error when searching for individuals or populations

PoseidonGenotypeException String

An exception to represent errors in the genotype data

PoseidonGenotypeExceptionForward ErrorLength SomeException

An exception to represent errors in the genotype data forwarded from the sequence-formats library

PoseidonHttpExceptionForward HttpException

An exception to represent errors in the remote data loading forwarded from simpleHttp

PoseidonFileRowException FilePath String String

An exception to represent errors when trying to parse the janno or seqSource file

PoseidonFileConsistencyException FilePath String

An exception to represent consistency errors in janno or seqSource files

PoseidonCrossFileConsistencyException String String

An exception to represent inconsistencies across multiple files in a package

PoseidonCollectionException String

An exception to represent logical issues in a poseidon package Collection

PoseidonFileExistenceException FilePath

An exception to represent missing files

PoseidonFileChecksumException FilePath

An exception to represent failed checksum tests

PoseidonFStatsFormatException String

An exception type to represent FStat specification errors

PoseidonBibTeXException FilePath String

An exception to represent errors when trying to parse the .bib file

PoseidonPoseidonEntityParsingException ParseError

An exception to indicate failed entity parsing

PoseidonForgeEntitiesException String

An exception to indicate issues in the forge selection

PoseidonEmptyForgeException

An exception to throw if there is nothing to be forged

PoseidonNewPackageConstructionException String

An exception to indicate an issue in newPackageTemplate

PoseidonRemoteJSONParsingException String

An exception to indicate failed remote info JSON parsing

PoseidonGenericException String

A catch-all for any other type of exception

PoseidonEmptyOutPacNameException

An exception to throw if the output package lacks a name

PoseidonUnequalBaseDirException FilePath FilePath FilePath

An exception to throw if genotype data files don't share a common base directory

PoseidonServerCommunicationException String

An exception to mark server communication errors

PoseidonUnzipException SomeException

An exception for unzipping issues in fetch

PoseidonChronicleException String

An exception for issues in chronicle

PoseidonGitException FilePath String

An exception for issues with git

PoseidonCantPreserveException

An exception for issues with --preservePyml

data PackageReadOptions Source #

Constructors

PackageReadOptions 

Fields

readPoseidonPackageCollection Source #

Arguments

:: PackageReadOptions 
-> [FilePath]

A list of base directories where to search in

-> PoseidonIO [PoseidonPackage]

A list of returned poseidon packages

readPoseidonPackageCollectionWithSkipIndicator Source #

Arguments

:: PackageReadOptions 
-> [FilePath]

A list of base directories where to search in

-> PoseidonIO ([PoseidonPackage], Bool)

A list of returned poseidon packages and a flag for whether packages were skipped

a utility function to load all poseidon packages found recursively in multiple base directories. This also takes care of smart filtering and duplication checks. Exceptions lead to skipping packages and outputting warnings. A flag is returned for whether packages were skipped (needed for validate)

getJointGenotypeData Source #

Arguments

:: MonadSafe m 
=> LogA

how messages should be logged

-> Bool

whether to generate an intersection instead of union of input sites

-> PlinkPopNameMode

how to read population labels from Plink

-> [PoseidonPackage]

A list of poseidon packages.

-> Maybe FilePath

a genotype file to select SNPs from

-> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())

a pair of the EigenstratIndEntries and a Producer over the Snp position values and the genotype line, joined across all packages.

A function to read genotype data jointly from multiple packages

newMinimalPackageTemplate :: FilePath -> String -> GenotypeDataSpec -> PoseidonPackage Source #

A function to create a minimal POSEIDON package

newPackageTemplate :: FilePath -> String -> GenotypeDataSpec -> Maybe (Either [EigenstratIndEntry] JannoRows) -> SeqSourceRows -> BibTeX -> PoseidonIO PoseidonPackage Source #

A function to create a more complete POSEIDON package This will take only the filenames of the provided files, so it assumes that the files will be copied into diff --git a/Poseidon-PoseidonVersion.html b/Poseidon-PoseidonVersion.html index 6002f4c0..58c481e5 100644 --- a/Poseidon-PoseidonVersion.html +++ b/Poseidon-PoseidonVersion.html @@ -1 +1 @@ -Poseidon.PoseidonVersion

poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.PoseidonVersion

Documentation

validPoseidonVersions :: [PoseidonVersion] Source #

showPoseidonVersion :: PoseidonVersion -> String Source #

latestPoseidonVersion :: PoseidonVersion Source #

asVersion :: PoseidonVersion -> Version Source #

\ No newline at end of file +Poseidon.PoseidonVersion
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.PoseidonVersion

Documentation

validPoseidonVersions :: [PoseidonVersion] Source #

showPoseidonVersion :: PoseidonVersion -> String Source #

latestPoseidonVersion :: PoseidonVersion Source #

asVersion :: PoseidonVersion -> Version Source #

\ No newline at end of file diff --git a/Poseidon-SequencingSource.html b/Poseidon-SequencingSource.html index 604b9548..dc32ae76 100644 --- a/Poseidon-SequencingSource.html +++ b/Poseidon-SequencingSource.html @@ -1,3 +1,3 @@ -Poseidon.SequencingSource
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.SequencingSource

Synopsis

Documentation

data SSFUDG Source #

A datatype to represent UDG in a ssf file

Constructors

SSFMinus 
SSFHalf 
SSFPlus 

Instances

Instances details
FromJSON SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseJSON :: Value -> Parser SSFUDG

parseJSONList :: Value -> Parser [SSFUDG]

ToJSON SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toJSON :: SSFUDG -> Value

toEncoding :: SSFUDG -> Encoding

toJSONList :: [SSFUDG] -> Value

toEncodingList :: [SSFUDG] -> Encoding

Bounded SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Enum SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Generic SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep SSFUDG :: Type -> Type #

Methods

from :: SSFUDG -> Rep SSFUDG x #

to :: Rep SSFUDG x -> SSFUDG #

Show SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser SSFUDG

ToField SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: SSFUDG -> Field

Eq SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

(==) :: SSFUDG -> SSFUDG -> Bool #

(/=) :: SSFUDG -> SSFUDG -> Bool #

Ord SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SSFUDG = D1 ('MetaData "SSFUDG" "Poseidon.SequencingSource" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) (C1 ('MetaCons "SSFMinus" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SSFHalf" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SSFPlus" 'PrefixI 'False) (U1 :: Type -> Type)))

data SSFLibraryBuilt Source #

A datatype to represent Library_Built in a janno file

Constructors

SSFDS 
SSFSS 

Instances

Instances details
FromJSON SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseJSON :: Value -> Parser SSFLibraryBuilt

parseJSONList :: Value -> Parser [SSFLibraryBuilt]

ToJSON SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toJSON :: SSFLibraryBuilt -> Value

toEncoding :: SSFLibraryBuilt -> Encoding

toJSONList :: [SSFLibraryBuilt] -> Value

toEncodingList :: [SSFLibraryBuilt] -> Encoding

Bounded SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Enum SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Generic SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep SSFLibraryBuilt :: Type -> Type #

Show SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser SSFLibraryBuilt

ToField SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: SSFLibraryBuilt -> Field

Eq SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Ord SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SSFLibraryBuilt = D1 ('MetaData "SSFLibraryBuilt" "Poseidon.SequencingSource" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) (C1 ('MetaCons "SSFDS" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SSFSS" 'PrefixI 'False) (U1 :: Type -> Type))

newtype SeqSourceRows Source #

A data type to represent a seqSourceFile

Instances

Instances details
FromJSON SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseJSON :: Value -> Parser SeqSourceRows

parseJSONList :: Value -> Parser [SeqSourceRows]

ToJSON SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toJSON :: SeqSourceRows -> Value

toEncoding :: SeqSourceRows -> Encoding

toJSONList :: [SeqSourceRows] -> Value

toEncodingList :: [SeqSourceRows] -> Encoding

Monoid SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

Semigroup SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

Generic SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep SeqSourceRows :: Type -> Type #

Show SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

Eq SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SeqSourceRows = D1 ('MetaData "SeqSourceRows" "Poseidon.SequencingSource" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "SeqSourceRows" 'PrefixI 'True) (S1 ('MetaSel ('Just "getSeqSourceRowList") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SeqSourceRow])))

newtype AccessionIDRun Source #

Instances

Instances details
FromJSON AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseJSON :: Value -> Parser AccessionIDRun

parseJSONList :: Value -> Parser [AccessionIDRun]

ToJSON AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toJSON :: AccessionIDRun -> Value

toEncoding :: AccessionIDRun -> Encoding

toJSONList :: [AccessionIDRun] -> Value

toEncodingList :: [AccessionIDRun] -> Encoding

Generic AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep AccessionIDRun :: Type -> Type #

Show AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser AccessionIDRun

ToField AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: AccessionIDRun -> Field

Eq AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionIDRun = D1 ('MetaData "AccessionIDRun" "Poseidon.SequencingSource" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "AccessionIDRun" 'PrefixI 'True) (S1 ('MetaSel ('Just "getRunAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AccessionID)))

newtype AccessionIDSample Source #

Instances

Instances details
FromJSON AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseJSON :: Value -> Parser AccessionIDSample

parseJSONList :: Value -> Parser [AccessionIDSample]

ToJSON AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

Generic AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep AccessionIDSample :: Type -> Type #

Show AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser AccessionIDSample

ToField AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: AccessionIDSample -> Field

Eq AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionIDSample = D1 ('MetaData "AccessionIDSample" "Poseidon.SequencingSource" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "AccessionIDSample" 'PrefixI 'True) (S1 ('MetaSel ('Just "getSampleAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AccessionID)))

newtype AccessionIDStudy Source #

Instances

Instances details
FromJSON AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseJSON :: Value -> Parser AccessionIDStudy

parseJSONList :: Value -> Parser [AccessionIDStudy]

ToJSON AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

Generic AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep AccessionIDStudy :: Type -> Type #

Show AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser AccessionIDStudy

ToField AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: AccessionIDStudy -> Field

Eq AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionIDStudy = D1 ('MetaData "AccessionIDStudy" "Poseidon.SequencingSource" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "AccessionIDStudy" 'PrefixI 'True) (S1 ('MetaSel ('Just "getStudyAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AccessionID)))

newtype SimpleDate Source #

A datatype for calendar dates

Constructors

SimpleDate Day 

Instances

Instances details
FromJSON SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseJSON :: Value -> Parser SimpleDate

parseJSONList :: Value -> Parser [SimpleDate]

ToJSON SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toJSON :: SimpleDate -> Value

toEncoding :: SimpleDate -> Encoding

toJSONList :: [SimpleDate] -> Value

toEncodingList :: [SimpleDate] -> Encoding

Generic SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep SimpleDate :: Type -> Type #

Show SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser SimpleDate

ToField SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: SimpleDate -> Field

Eq SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

Ord SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SimpleDate = D1 ('MetaData "SimpleDate" "Poseidon.SequencingSource" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "SimpleDate" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Day)))

newtype MD5 Source #

A datatype to represent MD5 hashes

Constructors

MD5 String 

Instances

Instances details
FromJSON MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseJSON :: Value -> Parser MD5

parseJSONList :: Value -> Parser [MD5]

ToJSON MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toJSON :: MD5 -> Value

toEncoding :: MD5 -> Encoding

toJSONList :: [MD5] -> Value

toEncodingList :: [MD5] -> Encoding

Generic MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep MD5 :: Type -> Type #

Methods

from :: MD5 -> Rep MD5 x #

to :: Rep MD5 x -> MD5 #

Show MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

showsPrec :: Int -> MD5 -> ShowS #

show :: MD5 -> String #

showList :: [MD5] -> ShowS #

FromField MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser MD5

ToField MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: MD5 -> Field

Eq MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

(==) :: MD5 -> MD5 -> Bool #

(/=) :: MD5 -> MD5 -> Bool #

Ord MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

compare :: MD5 -> MD5 -> Ordering #

(<) :: MD5 -> MD5 -> Bool #

(<=) :: MD5 -> MD5 -> Bool #

(>) :: MD5 -> MD5 -> Bool #

(>=) :: MD5 -> MD5 -> Bool #

max :: MD5 -> MD5 -> MD5 #

min :: MD5 -> MD5 -> MD5 #

type Rep MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep MD5 = D1 ('MetaData "MD5" "Poseidon.SequencingSource" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'True) (C1 ('MetaCons "MD5" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))

data SeqSourceRow Source #

A data type to represent a row in the seqSourceFile +Poseidon.SequencingSource

poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.SequencingSource

Synopsis

Documentation

data AccessionID Source #

A datatype to represent AccessionIDs in a ssf file

Instances

Instances details
Generic AccessionID Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep AccessionID :: Type -> Type #

Show AccessionID Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField AccessionID Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser AccessionID

ToField AccessionID Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: AccessionID -> Field

Eq AccessionID Source # 
Instance details

Defined in Poseidon.SequencingSource

Ord AccessionID Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionID Source # 
Instance details

Defined in Poseidon.SequencingSource

newtype JURI Source #

A datatype to represent URIs in a ssf file

Constructors

JURI String 

Instances

Instances details
Generic JURI Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep JURI :: Type -> Type #

Methods

from :: JURI -> Rep JURI x #

to :: Rep JURI x -> JURI #

Show JURI Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

showsPrec :: Int -> JURI -> ShowS #

show :: JURI -> String #

showList :: [JURI] -> ShowS #

FromField JURI Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser JURI

ToField JURI Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: JURI -> Field

Eq JURI Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

(==) :: JURI -> JURI -> Bool #

(/=) :: JURI -> JURI -> Bool #

Ord JURI Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

compare :: JURI -> JURI -> Ordering #

(<) :: JURI -> JURI -> Bool #

(<=) :: JURI -> JURI -> Bool #

(>) :: JURI -> JURI -> Bool #

(>=) :: JURI -> JURI -> Bool #

max :: JURI -> JURI -> JURI #

min :: JURI -> JURI -> JURI #

type Rep JURI Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep JURI = D1 ('MetaData "JURI" "Poseidon.SequencingSource" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "JURI" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))

data SSFUDG Source #

A datatype to represent UDG in a ssf file

Constructors

SSFMinus 
SSFHalf 
SSFPlus 

Instances

Instances details
Bounded SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Enum SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Generic SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep SSFUDG :: Type -> Type #

Methods

from :: SSFUDG -> Rep SSFUDG x #

to :: Rep SSFUDG x -> SSFUDG #

Show SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser SSFUDG

ToField SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: SSFUDG -> Field

Eq SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

(==) :: SSFUDG -> SSFUDG -> Bool #

(/=) :: SSFUDG -> SSFUDG -> Bool #

Ord SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SSFUDG Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SSFUDG = D1 ('MetaData "SSFUDG" "Poseidon.SequencingSource" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (C1 ('MetaCons "SSFMinus" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SSFHalf" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SSFPlus" 'PrefixI 'False) (U1 :: Type -> Type)))

data SSFLibraryBuilt Source #

A datatype to represent Library_Built in a janno file

Constructors

SSFDS 
SSFSS 

Instances

Instances details
Bounded SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Enum SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Generic SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep SSFLibraryBuilt :: Type -> Type #

Show SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser SSFLibraryBuilt

ToField SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: SSFLibraryBuilt -> Field

Eq SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

Ord SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SSFLibraryBuilt Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SSFLibraryBuilt = D1 ('MetaData "SSFLibraryBuilt" "Poseidon.SequencingSource" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (C1 ('MetaCons "SSFDS" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SSFSS" 'PrefixI 'False) (U1 :: Type -> Type))

newtype SeqSourceRows Source #

A data type to represent a seqSourceFile

Instances

Instances details
Monoid SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

Semigroup SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

Generic SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep SeqSourceRows :: Type -> Type #

Show SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

Eq SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SeqSourceRows Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SeqSourceRows = D1 ('MetaData "SeqSourceRows" "Poseidon.SequencingSource" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "SeqSourceRows" 'PrefixI 'True) (S1 ('MetaSel ('Just "getSeqSourceRowList") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SeqSourceRow])))

newtype AccessionIDRun Source #

Instances

Instances details
Generic AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep AccessionIDRun :: Type -> Type #

Show AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser AccessionIDRun

ToField AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: AccessionIDRun -> Field

Eq AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionIDRun Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionIDRun = D1 ('MetaData "AccessionIDRun" "Poseidon.SequencingSource" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "AccessionIDRun" 'PrefixI 'True) (S1 ('MetaSel ('Just "getRunAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AccessionID)))

newtype AccessionIDSample Source #

Instances

Instances details
Generic AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep AccessionIDSample :: Type -> Type #

Show AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser AccessionIDSample

ToField AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: AccessionIDSample -> Field

Eq AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionIDSample Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionIDSample = D1 ('MetaData "AccessionIDSample" "Poseidon.SequencingSource" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "AccessionIDSample" 'PrefixI 'True) (S1 ('MetaSel ('Just "getSampleAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AccessionID)))

newtype AccessionIDStudy Source #

Instances

Instances details
Generic AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep AccessionIDStudy :: Type -> Type #

Show AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser AccessionIDStudy

ToField AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: AccessionIDStudy -> Field

Eq AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionIDStudy Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep AccessionIDStudy = D1 ('MetaData "AccessionIDStudy" "Poseidon.SequencingSource" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "AccessionIDStudy" 'PrefixI 'True) (S1 ('MetaSel ('Just "getStudyAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AccessionID)))

newtype SimpleDate Source #

A datatype for calendar dates

Constructors

SimpleDate Day 

Instances

Instances details
Generic SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep SimpleDate :: Type -> Type #

Show SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

FromField SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser SimpleDate

ToField SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: SimpleDate -> Field

Eq SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

Ord SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SimpleDate Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SimpleDate = D1 ('MetaData "SimpleDate" "Poseidon.SequencingSource" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "SimpleDate" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Day)))

newtype MD5 Source #

A datatype to represent MD5 hashes

Constructors

MD5 String 

Instances

Instances details
Generic MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep MD5 :: Type -> Type #

Methods

from :: MD5 -> Rep MD5 x #

to :: Rep MD5 x -> MD5 #

Show MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

showsPrec :: Int -> MD5 -> ShowS #

show :: MD5 -> String #

showList :: [MD5] -> ShowS #

FromField MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseField :: Field -> Parser MD5

ToField MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toField :: MD5 -> Field

Eq MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

(==) :: MD5 -> MD5 -> Bool #

(/=) :: MD5 -> MD5 -> Bool #

Ord MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

compare :: MD5 -> MD5 -> Ordering #

(<) :: MD5 -> MD5 -> Bool #

(<=) :: MD5 -> MD5 -> Bool #

(>) :: MD5 -> MD5 -> Bool #

(>=) :: MD5 -> MD5 -> Bool #

max :: MD5 -> MD5 -> MD5 #

min :: MD5 -> MD5 -> MD5 #

type Rep MD5 Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep MD5 = D1 ('MetaData "MD5" "Poseidon.SequencingSource" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'True) (C1 ('MetaCons "MD5" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))

data SeqSourceRow Source #

A data type to represent a row in the seqSourceFile See https://github.com/poseidon-framework/poseidon2-schema/blob/master/seqSourceFile_columns.tsv - for more details

Instances

Instances details
FromJSON SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseJSON :: Value -> Parser SeqSourceRow

parseJSONList :: Value -> Parser [SeqSourceRow]

ToJSON SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toJSON :: SeqSourceRow -> Value

toEncoding :: SeqSourceRow -> Encoding

toJSONList :: [SeqSourceRow] -> Value

toEncodingList :: [SeqSourceRow] -> Encoding

Generic SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep SeqSourceRow :: Type -> Type #

Show SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

DefaultOrdered SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

headerOrder :: SeqSourceRow -> Header

FromNamedRecord SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseNamedRecord :: NamedRecord -> Parser SeqSourceRow

ToNamedRecord SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toNamedRecord :: SeqSourceRow -> NamedRecord

Eq SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SeqSourceRow = D1 ('MetaData "SeqSourceRow" "Poseidon.SequencingSource" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) (C1 ('MetaCons "SeqSourceRow" 'PrefixI 'True) ((((S1 ('MetaSel ('Just "sPoseidonID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoStringList)) :*: S1 ('MetaSel ('Just "sUDG") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SSFUDG))) :*: (S1 ('MetaSel ('Just "sLibraryBuilt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SSFLibraryBuilt)) :*: (S1 ('MetaSel ('Just "sSampleAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe AccessionIDSample)) :*: S1 ('MetaSel ('Just "sStudyAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe AccessionIDStudy))))) :*: ((S1 ('MetaSel ('Just "sRunAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe AccessionIDRun)) :*: (S1 ('MetaSel ('Just "sSampleAlias") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: S1 ('MetaSel ('Just "sSecondarySampleAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))) :*: (S1 ('MetaSel ('Just "sFirstPublic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SimpleDate)) :*: (S1 ('MetaSel ('Just "sLastUpdated") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SimpleDate)) :*: S1 ('MetaSel ('Just "sInstrumentModel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))))) :*: (((S1 ('MetaSel ('Just "sLibraryLayout") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: (S1 ('MetaSel ('Just "sLibrarySource") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: S1 ('MetaSel ('Just "sInstrumentPlatform") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))) :*: (S1 ('MetaSel ('Just "sLibraryName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: (S1 ('MetaSel ('Just "sLibraryStrategy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: S1 ('MetaSel ('Just "sFastqFTP") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (JannoList JURI)))))) :*: ((S1 ('MetaSel ('Just "sFastqASPERA") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (JannoList JURI))) :*: (S1 ('MetaSel ('Just "sFastqBytes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (JannoList Integer))) :*: S1 ('MetaSel ('Just "sFastqMD5") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (JannoList MD5))))) :*: (S1 ('MetaSel ('Just "sReadCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Integer)) :*: (S1 ('MetaSel ('Just "sSubmittedFTP") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (JannoList JURI))) :*: S1 ('MetaSel ('Just "sAdditionalColumns") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CsvNamedRecord)))))))

writeSeqSourceFile :: FilePath -> SeqSourceRows -> IO () Source #

A function to write one seqSourceFile

readSeqSourceFile :: FilePath -> PoseidonIO SeqSourceRows Source #

A function to read one seqSourceFile

readSeqSourceFileRow :: FilePath -> (Int, ByteString) -> PoseidonIO (Either PoseidonException SeqSourceRow) Source #

A function to read one row of a seqSourceFile

\ No newline at end of file + for more details

Instances

Instances details
Generic SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

Associated Types

type Rep SeqSourceRow :: Type -> Type #

Show SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

DefaultOrdered SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

headerOrder :: SeqSourceRow -> Header

FromNamedRecord SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

parseNamedRecord :: NamedRecord -> Parser SeqSourceRow

ToNamedRecord SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

Methods

toNamedRecord :: SeqSourceRow -> NamedRecord

Eq SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SeqSourceRow Source # 
Instance details

Defined in Poseidon.SequencingSource

type Rep SeqSourceRow = D1 ('MetaData "SeqSourceRow" "Poseidon.SequencingSource" "poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" 'False) (C1 ('MetaCons "SeqSourceRow" 'PrefixI 'True) ((((S1 ('MetaSel ('Just "sPoseidonID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe JannoStringList)) :*: S1 ('MetaSel ('Just "sUDG") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SSFUDG))) :*: (S1 ('MetaSel ('Just "sLibraryBuilt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SSFLibraryBuilt)) :*: (S1 ('MetaSel ('Just "sSampleAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe AccessionIDSample)) :*: S1 ('MetaSel ('Just "sStudyAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe AccessionIDStudy))))) :*: ((S1 ('MetaSel ('Just "sRunAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe AccessionIDRun)) :*: (S1 ('MetaSel ('Just "sSampleAlias") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: S1 ('MetaSel ('Just "sSecondarySampleAccession") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))) :*: (S1 ('MetaSel ('Just "sFirstPublic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SimpleDate)) :*: (S1 ('MetaSel ('Just "sLastUpdated") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SimpleDate)) :*: S1 ('MetaSel ('Just "sInstrumentModel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))))) :*: (((S1 ('MetaSel ('Just "sLibraryLayout") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: (S1 ('MetaSel ('Just "sLibrarySource") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: S1 ('MetaSel ('Just "sInstrumentPlatform") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)))) :*: (S1 ('MetaSel ('Just "sLibraryName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: (S1 ('MetaSel ('Just "sLibraryStrategy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe String)) :*: S1 ('MetaSel ('Just "sFastqFTP") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JURI)))))) :*: ((S1 ('MetaSel ('Just "sFastqASPERA") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JURI))) :*: (S1 ('MetaSel ('Just "sFastqBytes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn Integer))) :*: S1 ('MetaSel ('Just "sFastqMD5") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn MD5))))) :*: (S1 ('MetaSel ('Just "sReadCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Integer)) :*: (S1 ('MetaSel ('Just "sSubmittedFTP") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (ListColumn JURI))) :*: S1 ('MetaSel ('Just "sAdditionalColumns") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CsvNamedRecord)))))))

writeSeqSourceFile :: FilePath -> SeqSourceRows -> IO () Source #

A function to write one seqSourceFile

readSeqSourceFile :: FilePath -> PoseidonIO SeqSourceRows Source #

A function to read one seqSourceFile

readSeqSourceFileRow :: FilePath -> (Int, ByteString) -> PoseidonIO (Either PoseidonException SeqSourceRow) Source #

A function to read one row of a seqSourceFile

\ No newline at end of file diff --git a/Poseidon-ServerClient.html b/Poseidon-ServerClient.html index 7b7f14c2..a06736f6 100644 --- a/Poseidon-ServerClient.html +++ b/Poseidon-ServerClient.html @@ -1 +1 @@ -Poseidon.ServerClient
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.ServerClient

Documentation

data ServerApiReturnType Source #

Instances

Instances details
FromJSON ServerApiReturnType Source # 
Instance details

Defined in Poseidon.ServerClient

Methods

parseJSON :: Value -> Parser ServerApiReturnType

parseJSONList :: Value -> Parser [ServerApiReturnType]

ToJSON ServerApiReturnType Source # 
Instance details

Defined in Poseidon.ServerClient

data ApiReturnData Source #

Instances

Instances details
FromJSON ApiReturnData Source # 
Instance details

Defined in Poseidon.ServerClient

Methods

parseJSON :: Value -> Parser ApiReturnData

parseJSONList :: Value -> Parser [ApiReturnData]

ToJSON ApiReturnData Source # 
Instance details

Defined in Poseidon.ServerClient

Methods

toJSON :: ApiReturnData -> Value

toEncoding :: ApiReturnData -> Encoding

toJSONList :: [ApiReturnData] -> Value

toEncodingList :: [ApiReturnData] -> Encoding

Generic ApiReturnData Source # 
Instance details

Defined in Poseidon.ServerClient

Associated Types

type Rep ApiReturnData :: Type -> Type #

type Rep ApiReturnData Source # 
Instance details

Defined in Poseidon.ServerClient

type Rep ApiReturnData = D1 ('MetaData "ApiReturnData" "Poseidon.ServerClient" "poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" 'False) ((C1 ('MetaCons "ApiReturnPackageInfo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PackageInfo])) :+: C1 ('MetaCons "ApiReturnGroupInfo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GroupInfo]))) :+: (C1 ('MetaCons "ApiReturnExtIndividualInfo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ExtendedIndividualInfo])) :+: C1 ('MetaCons "ApiReturnJanno" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, JannoRows)]))))

data GroupInfo Source #

Instances

Instances details
FromJSON GroupInfo Source # 
Instance details

Defined in Poseidon.ServerClient

Methods

parseJSON :: Value -> Parser GroupInfo

parseJSONList :: Value -> Parser [GroupInfo]

ToJSON GroupInfo Source # 
Instance details

Defined in Poseidon.ServerClient

Methods

toJSON :: GroupInfo -> Value

toEncoding :: GroupInfo -> Encoding

toJSONList :: [GroupInfo] -> Value

toEncodingList :: [GroupInfo] -> Encoding

Eq GroupInfo Source # 
Instance details

Defined in Poseidon.ServerClient

HasNameAndVersion GroupInfo Source # 
Instance details

Defined in Poseidon.ServerClient

\ No newline at end of file +Poseidon.ServerClient
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.ServerClient

Documentation

data ServerApiReturnType Source #

Instances

Instances details
FromJSON ServerApiReturnType Source # 
Instance details

Defined in Poseidon.ServerClient

Methods

parseJSON :: Value -> Parser ServerApiReturnType

parseJSONList :: Value -> Parser [ServerApiReturnType]

ToJSON ServerApiReturnType Source # 
Instance details

Defined in Poseidon.ServerClient

data ApiReturnData Source #

Instances

Instances details
FromJSON ApiReturnData Source # 
Instance details

Defined in Poseidon.ServerClient

Methods

parseJSON :: Value -> Parser ApiReturnData

parseJSONList :: Value -> Parser [ApiReturnData]

ToJSON ApiReturnData Source # 
Instance details

Defined in Poseidon.ServerClient

Methods

toJSON :: ApiReturnData -> Value

toEncoding :: ApiReturnData -> Encoding

toJSONList :: [ApiReturnData] -> Value

toEncodingList :: [ApiReturnData] -> Encoding

data GroupInfo Source #

Instances

Instances details
FromJSON GroupInfo Source # 
Instance details

Defined in Poseidon.ServerClient

Methods

parseJSON :: Value -> Parser GroupInfo

parseJSONList :: Value -> Parser [GroupInfo]

ToJSON GroupInfo Source # 
Instance details

Defined in Poseidon.ServerClient

Methods

toJSON :: GroupInfo -> Value

toEncoding :: GroupInfo -> Encoding

toJSONList :: [GroupInfo] -> Value

toEncodingList :: [GroupInfo] -> Encoding

Eq GroupInfo Source # 
Instance details

Defined in Poseidon.ServerClient

HasNameAndVersion GroupInfo Source # 
Instance details

Defined in Poseidon.ServerClient

\ No newline at end of file diff --git a/Poseidon-Utils.html b/Poseidon-Utils.html index f2109305..36c79b10 100644 --- a/Poseidon-Utils.html +++ b/Poseidon-Utils.html @@ -1 +1 @@ -Poseidon.Utils
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.Utils

Synopsis

Documentation

data PoseidonException Source #

A Poseidon Exception data type with several concrete constructors

Constructors

PoseidonYamlParseException FilePath ParseException

An exception to represent YAML parsing errors

PoseidonPackageException String

An exception to represent a logical error in a package

PoseidonPackageVersionException FilePath String

An exception to represent an issue with a package version

PoseidonPackageMissingVersionException FilePath

An exception to indicate a missing poseidonVersion field

PoseidonIndSearchException String

An exception to represent an error when searching for individuals or populations

PoseidonGenotypeException String

An exception to represent errors in the genotype data

PoseidonGenotypeExceptionForward ErrorLength SomeException

An exception to represent errors in the genotype data forwarded from the sequence-formats library

PoseidonHttpExceptionForward HttpException

An exception to represent errors in the remote data loading forwarded from simpleHttp

PoseidonFileRowException FilePath String String

An exception to represent errors when trying to parse the janno or seqSource file

PoseidonFileConsistencyException FilePath String

An exception to represent consistency errors in janno or seqSource files

PoseidonCrossFileConsistencyException String String

An exception to represent inconsistencies across multiple files in a package

PoseidonCollectionException String

An exception to represent logical issues in a poseidon package Collection

PoseidonFileExistenceException FilePath

An exception to represent missing files

PoseidonFileChecksumException FilePath

An exception to represent failed checksum tests

PoseidonFStatsFormatException String

An exception type to represent FStat specification errors

PoseidonBibTeXException FilePath String

An exception to represent errors when trying to parse the .bib file

PoseidonPoseidonEntityParsingException ParseError

An exception to indicate failed entity parsing

PoseidonForgeEntitiesException String

An exception to indicate issues in the forge selection

PoseidonEmptyForgeException

An exception to throw if there is nothing to be forged

PoseidonNewPackageConstructionException String

An exception to indicate an issue in newPackageTemplate

PoseidonRemoteJSONParsingException String

An exception to indicate failed remote info JSON parsing

PoseidonGenericException String

A catch-all for any other type of exception

PoseidonEmptyOutPacNameException

An exception to throw if the output package lacks a name

PoseidonUnequalBaseDirException FilePath FilePath FilePath

An exception to throw if genotype data files don't share a common base directory

PoseidonServerCommunicationException String

An exception to mark server communication errors

PoseidonUnzipException SomeException

An exception for unzipping issues in fetch

PoseidonChronicleException String

An exception for issues in chronicle

PoseidonGitException FilePath String

An exception for issues with git

PoseidonCantPreserveException

An exception for issues with --preservePyml

data LogMode Source #

Instances

Instances details
Show LogMode Source # 
Instance details

Defined in Poseidon.Utils

type LogA = LogAction IO Message Source #

logWithEnv :: MonadIO m => LogA -> PoseidonIO () -> m () Source #

data TestMode Source #

Constructors

Testing 
Production 

Instances

Instances details
Show TestMode Source # 
Instance details

Defined in Poseidon.Utils

uniquePO :: Ord a => [a] -> [a] Source #

uniqueRO :: Ord a => [a] -> [a] Source #

data ErrorLength Source #

A data type for error length settings

Constructors

CharInf 
CharCount Int 

Instances

Instances details
Show ErrorLength Source # 
Instance details

Defined in Poseidon.Utils

\ No newline at end of file +Poseidon.Utils
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.Utils

Synopsis

Documentation

data PoseidonException Source #

A Poseidon Exception data type with several concrete constructors

Constructors

PoseidonYamlParseException FilePath ParseException

An exception to represent YAML parsing errors

PoseidonPackageException String

An exception to represent a logical error in a package

PoseidonPackageVersionException FilePath String

An exception to represent an issue with a package version

PoseidonPackageMissingVersionException FilePath

An exception to indicate a missing poseidonVersion field

PoseidonIndSearchException String

An exception to represent an error when searching for individuals or populations

PoseidonGenotypeException String

An exception to represent errors in the genotype data

PoseidonGenotypeExceptionForward ErrorLength SomeException

An exception to represent errors in the genotype data forwarded from the sequence-formats library

PoseidonHttpExceptionForward HttpException

An exception to represent errors in the remote data loading forwarded from simpleHttp

PoseidonFileRowException FilePath String String

An exception to represent errors when trying to parse the janno or seqSource file

PoseidonFileConsistencyException FilePath String

An exception to represent consistency errors in janno or seqSource files

PoseidonCrossFileConsistencyException String String

An exception to represent inconsistencies across multiple files in a package

PoseidonCollectionException String

An exception to represent logical issues in a poseidon package Collection

PoseidonFileExistenceException FilePath

An exception to represent missing files

PoseidonFileChecksumException FilePath

An exception to represent failed checksum tests

PoseidonFStatsFormatException String

An exception type to represent FStat specification errors

PoseidonBibTeXException FilePath String

An exception to represent errors when trying to parse the .bib file

PoseidonPoseidonEntityParsingException ParseError

An exception to indicate failed entity parsing

PoseidonForgeEntitiesException String

An exception to indicate issues in the forge selection

PoseidonEmptyForgeException

An exception to throw if there is nothing to be forged

PoseidonNewPackageConstructionException String

An exception to indicate an issue in newPackageTemplate

PoseidonRemoteJSONParsingException String

An exception to indicate failed remote info JSON parsing

PoseidonGenericException String

A catch-all for any other type of exception

PoseidonEmptyOutPacNameException

An exception to throw if the output package lacks a name

PoseidonUnequalBaseDirException FilePath FilePath FilePath

An exception to throw if genotype data files don't share a common base directory

PoseidonServerCommunicationException String

An exception to mark server communication errors

PoseidonUnzipException SomeException

An exception for unzipping issues in fetch

PoseidonChronicleException String

An exception for issues in chronicle

PoseidonGitException FilePath String

An exception for issues with git

PoseidonCantPreserveException

An exception for issues with --preservePyml

data LogMode Source #

Instances

Instances details
Show LogMode Source # 
Instance details

Defined in Poseidon.Utils

type LogA = LogAction IO Message Source #

logWithEnv :: MonadIO m => LogA -> PoseidonIO () -> m () Source #

data TestMode Source #

Constructors

Testing 
Production 

Instances

Instances details
Show TestMode Source # 
Instance details

Defined in Poseidon.Utils

uniquePO :: Ord a => [a] -> [a] Source #

uniqueRO :: Ord a => [a] -> [a] Source #

data ErrorLength Source #

A data type for error length settings

Constructors

CharInf 
CharCount Int 

Instances

Instances details
Show ErrorLength Source # 
Instance details

Defined in Poseidon.Utils

\ No newline at end of file diff --git a/Poseidon-Version.html b/Poseidon-Version.html index e850a9ae..f9a5bb70 100644 --- a/Poseidon-Version.html +++ b/Poseidon-Version.html @@ -1 +1 @@ -Poseidon.Version
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.Version

\ No newline at end of file +Poseidon.Version
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.Version

\ No newline at end of file diff --git a/doc-index-43.html b/doc-index-43.html index fbae32b8..1ea9598c 100644 --- a/doc-index-43.html +++ b/doc-index-43.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - +)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - +)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file diff --git a/doc-index-95.html b/doc-index-95.html index 1ba92291..79ced754 100644 --- a/doc-index-95.html +++ b/doc-index-95.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - _)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - _

_aeArchiveNamePoseidon.ServerClient
_aeServerURLPoseidon.ServerClient
_apiMessagesPoseidon.ServerClient
_apiResponsePoseidon.ServerClient
_archiveEndPoseidon.CLI.Fetch
_chronicleBaseDirsPoseidon.CLI.Chronicle
_chronicleOperationPoseidon.CLI.Chronicle
_entityInputPoseidon.CLI.Fetch
_envErrorLengthPoseidon.Utils
_envInputPlinkModePoseidon.Utils
_envLogActionPoseidon.Utils
_envTestModePoseidon.Utils
_forgeEntityInputPoseidon.CLI.Forge
_forgeGenoSourcesPoseidon.CLI.Forge
_forgeIntersectPoseidon.CLI.Forge
_forgeOutFormatPoseidon.CLI.Forge
_forgeOutModePoseidon.CLI.Forge
_forgeOutPacNamePoseidon.CLI.Forge
_forgeOutPacPathPoseidon.CLI.Forge
_forgeOutputOrderedPoseidon.CLI.Forge
_forgeOutputPlinkPopModePoseidon.CLI.Forge
_forgePackageWisePoseidon.CLI.Forge
_forgeSnpFilePoseidon.CLI.Forge
_genoconvertGenoSourcesPoseidon.CLI.Genoconvert
_genoconvertOnlyLatestPoseidon.CLI.Genoconvert
_genoConvertOutFormatPoseidon.CLI.Genoconvert
_genoConvertOutOnlyGenoPoseidon.CLI.Genoconvert
_genoconvertOutPlinkPopModePoseidon.CLI.Genoconvert
_genoconvertRemoveOldPoseidon.CLI.Genoconvert
_genoMaybeOutPackagePathPoseidon.CLI.Genoconvert
_initGenoDataPoseidon.CLI.Init
_initMinimalPoseidon.CLI.Init
_initPacNamePoseidon.CLI.Init
_initPacPathPoseidon.CLI.Init
_jaBaseDirsPoseidon.CLI.Fetch
_jannocoalesceIdStripPoseidon.CLI.Jannocoalesce
_jannocoalesceJannoColumnsPoseidon.CLI.Jannocoalesce
_jannocoalesceOutSpecPoseidon.CLI.Jannocoalesce
_jannocoalesceOverwriteColumnsPoseidon.CLI.Jannocoalesce
_jannocoalesceSourcePoseidon.CLI.Jannocoalesce
_jannocoalesceSourceKeyPoseidon.CLI.Jannocoalesce
_jannocoalesceTargetPoseidon.CLI.Jannocoalesce
_jannocoalesceTargetKeyPoseidon.CLI.Jannocoalesce
_listListEntityPoseidon.CLI.List
_listOnlyLatestPoseidon.CLI.List
_listRawOutputPoseidon.CLI.List
_listRepoLocationPoseidon.CLI.List
_orcidChecksumPoseidon.Contributor
_orcidNumsPoseidon.Contributor
_pacVerUpLogPoseidon.CLI.Rectify
_pacVerUpVersionComponentPoseidon.CLI.Rectify
_posYamlBibFilePoseidon.Package
_posYamlBibFileChkSumPoseidon.Package
_posYamlChangelogFilePoseidon.Package
_posYamlContributorPoseidon.Package
_posYamlDescriptionPoseidon.Package
_posYamlGenotypeDataPoseidon.Package
_posYamlJannoFilePoseidon.Package
_posYamlJannoFileChkSumPoseidon.Package
_posYamlLastModifiedPoseidon.Package
_posYamlPackageVersionPoseidon.Package
_posYamlPoseidonVersionPoseidon.Package
_posYamlReadmeFilePoseidon.Package
_posYamlSeqSourceFilePoseidon.Package
_posYamlSeqSourceFileChkSumPoseidon.Package
_posYamlTitlePoseidon.Package
_readOptFullGenoPoseidon.Package
_readOptGenoCheckPoseidon.Package
_readOptIgnoreChecksumsPoseidon.Package
_readOptIgnoreGenoPoseidon.Package
_readOptIgnorePosVersionPoseidon.Package
_readOptOnlyLatestPoseidon.Package
_rectifyBaseDirsPoseidon.CLI.Rectify
_rectifyChecksumBibPoseidon.CLI.Rectify
_rectifyChecksumGenoPoseidon.CLI.Rectify
_rectifyChecksumJannoPoseidon.CLI.Rectify
_rectifyChecksumsPoseidon.CLI.Rectify
_rectifyChecksumSSFPoseidon.CLI.Rectify
_rectifyIgnorePoseidonVersionPoseidon.CLI.Rectify
_rectifyNewContributorsPoseidon.CLI.Rectify
_rectifyOnlyLatestPoseidon.CLI.Rectify
_rectifyPackageVersionUpdatePoseidon.CLI.Rectify
_rectifyPoseidonVersionPoseidon.CLI.Rectify
_summariseBaseDirsPoseidon.CLI.Summarise
_summariseRawOutputPoseidon.CLI.Summarise
_surveyBaseDirsPoseidon.CLI.Survey
_surveyOnlyLatestPoseidon.CLI.Survey
_surveyRawOutputPoseidon.CLI.Survey
_timetravelBaseDirsPoseidon.CLI.Timetravel
_timetravelChronicleFilePoseidon.CLI.Timetravel
_timetravelSourceDirPoseidon.CLI.Timetravel
_validateNoExitCodePoseidon.CLI.Validate
_validateOnlyLatestPoseidon.CLI.Validate
_validatePlanPoseidon.CLI.Validate
_valPlanBaseDirsPoseidon.CLI.Validate
_valPlanFullGenoPoseidon.CLI.Validate
_valPlanIgnoreChecksumsPoseidon.CLI.Validate
_valPlanIgnoreDuplicatesPoseidon.CLI.Validate
_valPlanIgnoreGenoPoseidon.CLI.Validate
_valPlanIgnorePosVersionPoseidon.CLI.Validate
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - _)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - _

_aeArchiveNamePoseidon.ServerClient
_aeServerURLPoseidon.ServerClient
_apiMessagesPoseidon.ServerClient
_apiResponsePoseidon.ServerClient
_archiveEndPoseidon.CLI.Fetch
_chronicleBaseDirsPoseidon.CLI.Chronicle
_chronicleOperationPoseidon.CLI.Chronicle
_entityInputPoseidon.CLI.Fetch
_envErrorLengthPoseidon.Utils
_envInputPlinkModePoseidon.Utils
_envLogActionPoseidon.Utils
_envTestModePoseidon.Utils
_forgeEntityInputPoseidon.CLI.Forge
_forgeGenoSourcesPoseidon.CLI.Forge
_forgeIntersectPoseidon.CLI.Forge
_forgeOutFormatPoseidon.CLI.Forge
_forgeOutModePoseidon.CLI.Forge
_forgeOutPacNamePoseidon.CLI.Forge
_forgeOutPacPathPoseidon.CLI.Forge
_forgeOutputOrderedPoseidon.CLI.Forge
_forgeOutputPlinkPopModePoseidon.CLI.Forge
_forgePackageWisePoseidon.CLI.Forge
_forgeSnpFilePoseidon.CLI.Forge
_genoconvertGenoSourcesPoseidon.CLI.Genoconvert
_genoconvertOnlyLatestPoseidon.CLI.Genoconvert
_genoConvertOutFormatPoseidon.CLI.Genoconvert
_genoConvertOutOnlyGenoPoseidon.CLI.Genoconvert
_genoconvertOutPlinkPopModePoseidon.CLI.Genoconvert
_genoconvertRemoveOldPoseidon.CLI.Genoconvert
_genoMaybeOutPackagePathPoseidon.CLI.Genoconvert
_initGenoDataPoseidon.CLI.Init
_initMinimalPoseidon.CLI.Init
_initPacNamePoseidon.CLI.Init
_initPacPathPoseidon.CLI.Init
_jaBaseDirsPoseidon.CLI.Fetch
_jannocoalesceIdStripPoseidon.CLI.Jannocoalesce
_jannocoalesceJannoColumnsPoseidon.CLI.Jannocoalesce
_jannocoalesceOutSpecPoseidon.CLI.Jannocoalesce
_jannocoalesceOverwriteColumnsPoseidon.CLI.Jannocoalesce
_jannocoalesceSourcePoseidon.CLI.Jannocoalesce
_jannocoalesceSourceKeyPoseidon.CLI.Jannocoalesce
_jannocoalesceTargetPoseidon.CLI.Jannocoalesce
_jannocoalesceTargetKeyPoseidon.CLI.Jannocoalesce
_listListEntityPoseidon.CLI.List
_listOnlyLatestPoseidon.CLI.List
_listRawOutputPoseidon.CLI.List
_listRepoLocationPoseidon.CLI.List
_orcidChecksumPoseidon.Contributor
_orcidNumsPoseidon.Contributor
_pacVerUpLogPoseidon.CLI.Rectify
_pacVerUpVersionComponentPoseidon.CLI.Rectify
_posYamlBibFilePoseidon.Package
_posYamlBibFileChkSumPoseidon.Package
_posYamlChangelogFilePoseidon.Package
_posYamlContributorPoseidon.Package
_posYamlDescriptionPoseidon.Package
_posYamlGenotypeDataPoseidon.Package
_posYamlJannoFilePoseidon.Package
_posYamlJannoFileChkSumPoseidon.Package
_posYamlLastModifiedPoseidon.Package
_posYamlPackageVersionPoseidon.Package
_posYamlPoseidonVersionPoseidon.Package
_posYamlReadmeFilePoseidon.Package
_posYamlSeqSourceFilePoseidon.Package
_posYamlSeqSourceFileChkSumPoseidon.Package
_posYamlTitlePoseidon.Package
_readOptFullGenoPoseidon.Package
_readOptGenoCheckPoseidon.Package
_readOptIgnoreChecksumsPoseidon.Package
_readOptIgnoreGenoPoseidon.Package
_readOptIgnorePosVersionPoseidon.Package
_readOptOnlyLatestPoseidon.Package
_rectifyBaseDirsPoseidon.CLI.Rectify
_rectifyChecksumBibPoseidon.CLI.Rectify
_rectifyChecksumGenoPoseidon.CLI.Rectify
_rectifyChecksumJannoPoseidon.CLI.Rectify
_rectifyChecksumsPoseidon.CLI.Rectify
_rectifyChecksumSSFPoseidon.CLI.Rectify
_rectifyIgnorePoseidonVersionPoseidon.CLI.Rectify
_rectifyNewContributorsPoseidon.CLI.Rectify
_rectifyOnlyLatestPoseidon.CLI.Rectify
_rectifyPackageVersionUpdatePoseidon.CLI.Rectify
_rectifyPoseidonVersionPoseidon.CLI.Rectify
_summariseBaseDirsPoseidon.CLI.Summarise
_summariseRawOutputPoseidon.CLI.Summarise
_surveyBaseDirsPoseidon.CLI.Survey
_surveyOnlyLatestPoseidon.CLI.Survey
_surveyRawOutputPoseidon.CLI.Survey
_timetravelBaseDirsPoseidon.CLI.Timetravel
_timetravelChronicleFilePoseidon.CLI.Timetravel
_timetravelSourceDirPoseidon.CLI.Timetravel
_validateNoExitCodePoseidon.CLI.Validate
_validateOnlyLatestPoseidon.CLI.Validate
_validatePlanPoseidon.CLI.Validate
_valPlanBaseDirsPoseidon.CLI.Validate
_valPlanFullGenoPoseidon.CLI.Validate
_valPlanIgnoreChecksumsPoseidon.CLI.Validate
_valPlanIgnoreDuplicatesPoseidon.CLI.Validate
_valPlanIgnoreGenoPoseidon.CLI.Validate
_valPlanIgnorePosVersionPoseidon.CLI.Validate
\ No newline at end of file diff --git a/doc-index-A.html b/doc-index-A.html index f433a4e1..c99fe668 100644 --- a/doc-index-A.html +++ b/doc-index-A.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - A)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - A

A1240KPoseidon.Janno
AccessionIDPoseidon.Janno
AccessionIDRun 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
AccessionIDSample 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
AccessionIDStudy 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
AddJannoColAllPoseidon.ServerClient
AddJannoColListPoseidon.ServerClient
AddJannoColSpecPoseidon.ServerClient
AllJannoColumnsPoseidon.CLI.Jannocoalesce
ApiReturnDataPoseidon.ServerClient
ApiReturnExtIndividualInfoPoseidon.ServerClient
ApiReturnGroupInfoPoseidon.ServerClient
ApiReturnJannoPoseidon.ServerClient
ApiReturnPackageInfoPoseidon.ServerClient
ArborAncestralPlusPoseidon.Janno
ArborCompletePoseidon.Janno
ArborPrimePlusPoseidon.Janno
ArchiveEndpoint 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
asVersionPoseidon.PoseidonVersion
avgPoseidon.MathHelpers
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - A)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - A

A1240KPoseidon.ColumnTypes, Poseidon.Janno
AccessionIDPoseidon.SequencingSource
AccessionIDRun 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
AccessionIDSample 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
AccessionIDStudy 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
AddJannoColAllPoseidon.ServerClient
AddJannoColListPoseidon.ServerClient
AddJannoColSpecPoseidon.ServerClient
AllJannoColumnsPoseidon.CLI.Jannocoalesce
ApiReturnDataPoseidon.ServerClient
ApiReturnExtIndividualInfoPoseidon.ServerClient
ApiReturnGroupInfoPoseidon.ServerClient
ApiReturnPackageInfoPoseidon.ServerClient
ArborAncestralPlusPoseidon.ColumnTypes, Poseidon.Janno
ArborCompletePoseidon.ColumnTypes, Poseidon.Janno
ArborPrimePlusPoseidon.ColumnTypes, Poseidon.Janno
ArchiveEndpoint 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
asVersionPoseidon.PoseidonVersion
avgPoseidon.MathHelpers
\ No newline at end of file diff --git a/doc-index-All.html b/doc-index-All.html index 8beea43f..32109359 100644 --- a/doc-index-All.html +++ b/doc-index-All.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index

+&+Poseidon.ServerClient
A1240KPoseidon.Janno
AccessionIDPoseidon.Janno
AccessionIDRun 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
AccessionIDSample 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
AccessionIDStudy 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
AddJannoColAllPoseidon.ServerClient
AddJannoColListPoseidon.ServerClient
AddJannoColSpecPoseidon.ServerClient
AllJannoColumnsPoseidon.CLI.Jannocoalesce
ApiReturnDataPoseidon.ServerClient
ApiReturnExtIndividualInfoPoseidon.ServerClient
ApiReturnGroupInfoPoseidon.ServerClient
ApiReturnJannoPoseidon.ServerClient
ApiReturnPackageInfoPoseidon.ServerClient
ArborAncestralPlusPoseidon.Janno
ArborCompletePoseidon.Janno
ArborPrimePlusPoseidon.Janno
ArchiveEndpoint 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
asVersionPoseidon.PoseidonVersion
avgPoseidon.MathHelpers
BCADAge 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
BibEntry 
1 (Type/Class)Poseidon.BibFile
2 (Data Constructor)Poseidon.BibFile
bibEntryFieldsPoseidon.BibFile
bibEntryIdPoseidon.BibFile
bibEntryTypePoseidon.BibFile
BibTeXPoseidon.BibFile
C14Poseidon.Janno
CharCountPoseidon.Utils
CharInfPoseidon.Utils
checkAtLeastOnePoseidonIDPoseidon.SequencingSource
checkFilePoseidon.Utils
checkIfAllEntitiesExistPoseidon.EntityTypes
checkRunsUniquePoseidon.SequencingSource
ChecksumAllPoseidon.CLI.Rectify
ChecksumNonePoseidon.CLI.Rectify
ChecksumsDetailPoseidon.CLI.Rectify
ChecksumsToRectifyPoseidon.CLI.Rectify
ChronicleOptions 
1 (Type/Class)Poseidon.CLI.Chronicle
2 (Data Constructor)Poseidon.CLI.Chronicle
chroniclePackagesPoseidon.Chronicle
ChronOperationPoseidon.CLI.Chronicle
cliArchiveBaseDirsPoseidon.CLI.Serve
cliCertFilesPoseidon.CLI.Serve
cliIgnoreChecksumsPoseidon.CLI.Serve
cliPortPoseidon.CLI.Serve
cliZipDirPoseidon.CLI.Serve
CoalesceJannoColumnSpecPoseidon.CLI.Jannocoalesce
concludePoseidon.CLI.Validate
ContextualPoseidon.Janno
contributorEmailPoseidon.Contributor
contributorNamePoseidon.Contributor
contributorORCIDPoseidon.Contributor
ContributorSpec 
1 (Type/Class)Poseidon.Contributor
2 (Data Constructor)Poseidon.Contributor
contributorSpecParserPoseidon.Contributor
convertGenoToPoseidon.CLI.Genoconvert
copyDirectoryPoseidon.CLI.Timetravel
CounterCopiedPoseidon.CLI.Jannocoalesce
CounterMismatchesPoseidon.CLI.Jannocoalesce
countPresencePoseidon.CLI.Survey
CreateChronPoseidon.CLI.Chronicle
createMinimalJannoPoseidon.Janno
createMinimalSamplePoseidon.Janno
CsvNamedRecord 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
decodingOptionsPoseidon.Janno
DefaultLogPoseidon.Utils
defaultPackageReadOptionsPoseidon.Package
determineNonExistentEntitiesPoseidon.EntityTypes
determinePackageOutNamePoseidon.Utils
determinePackageStatePoseidon.CLI.Fetch
determineRelevantPackagesPoseidon.EntityTypes
DiploidPoseidon.Janno
downloadAndUnzipPackagePoseidon.CLI.Fetch
downloadPackagePoseidon.CLI.Fetch
DSPoseidon.Janno
dummyBibEntryPoseidon.BibFile
encodingOptionsPoseidon.Janno
EntitiesDirectPoseidon.EntityTypes
EntitiesFromFilePoseidon.EntityTypes
EntitiesListPoseidon.EntityTypes
entitiesListPPoseidon.EntityTypes
EntityInputPoseidon.EntityTypes
EntitySpecPoseidon.EntityTypes
entitySpecParserPoseidon.EntityTypes
Env 
1 (Type/Class)Poseidon.Utils
2 (Data Constructor)Poseidon.Utils
envErrorLengthPoseidon.Utils
envInputPlinkModePoseidon.Utils
envLogActionPoseidon.Utils
EqualLocalRemotePoseidon.CLI.Fetch
ErrorLengthPoseidon.Utils
ExcludePoseidon.EntityTypes
ExcludeJannoColumnsPoseidon.CLI.Jannocoalesce
explicitNAPoseidon.Janno
ExtendedIndividualInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
extIndInfo2IndInfoCollectionPoseidon.ServerClient
extIndInfoAddColsPoseidon.ServerClient
extIndInfoGroupsPoseidon.ServerClient
extIndInfoIsLatestPoseidon.ServerClient
extIndInfoNamePoseidon.ServerClient
extIndInfoPacPoseidon.ServerClient
FemalePoseidon.Janno
FetchOptions 
1 (Type/Class)Poseidon.CLI.Fetch
2 (Data Constructor)Poseidon.CLI.Fetch
fillMissingSnpSetsPoseidon.CLI.Forge
filterBibEntriesPoseidon.CLI.Forge
filterLookupPoseidon.Janno
filterLookupOptionalPoseidon.Janno
filterSeqSourceRowsPoseidon.CLI.Forge
filterToRelevantPackagesPoseidon.Package
findAllPoseidonYmlFilesPoseidon.Package
FirstPoseidon.Janno
ForgeOptions 
1 (Type/Class)Poseidon.CLI.Forge
2 (Data Constructor)Poseidon.CLI.Forge
ForgeOutModePoseidon.CLI.Forge
formatPoseidon.GenotypeData
frequencyPoseidon.CLI.Summarise
GenoconvertOptions 
1 (Type/Class)Poseidon.CLI.Genoconvert
2 (Data Constructor)Poseidon.CLI.Genoconvert
GenoDataSourcePoseidon.GenotypeData
GenoDirectPoseidon.GenotypeData
genoFilePoseidon.GenotypeData
genoFileChkSumPoseidon.GenotypeData
GenoInputPoseidon.CLI.OptparseApplicativeParsers
GenoOutPoseidon.CLI.Forge
GenotypeDataSpec 
1 (Type/Class)Poseidon.GenotypeData
2 (Data Constructor)Poseidon.GenotypeData
GenotypeFormatEigenstratPoseidon.GenotypeData
GenotypeFormatPlinkPoseidon.GenotypeData
GenotypeFormatSpecPoseidon.GenotypeData
getAllGroupInfoPoseidon.Package
getChecksumPoseidon.Utils
getConsensusSnpEntryPoseidon.GenotypeData
getCsvNRPoseidon.Janno
getExtendedIndividualInfoPoseidon.Package
getGenoDirectPoseidon.GenotypeData
getGitCommitHashPoseidon.Chronicle
getJannoListPoseidon.Janno
getJannoRowsFromPacPoseidon.Package
getJointGenotypeDataPoseidon.Package
getJointIndividualInfoPoseidon.Package
getJointJannoPoseidon.Package
getKeyFromJannoPoseidon.CLI.Jannocoalesce
getMaybeJannoListPoseidon.Janno
getPacBaseDirsPoseidon.GenotypeData
getPackageVersionPoseidon.Chronicle
getPacNamePoseidon.EntityTypes
getPacVersionPoseidon.EntityTypes
getRunAccessionPoseidon.SequencingSource
getSampleAccessionPoseidon.SequencingSource
getSeqSourceRowListPoseidon.SequencingSource
getStudyAccessionPoseidon.SequencingSource
gIsLatestPoseidon.ServerClient
gitCheckoutPoseidon.CLI.Timetravel
gNamePoseidon.ServerClient
gNrIndividualsPoseidon.ServerClient
gPackagePoseidon.ServerClient
GroupPoseidon.EntityTypes
GroupInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
HalfPoseidon.Janno
handlePackageByStatePoseidon.CLI.Fetch
HaploidPoseidon.Janno
HasNameAndVersionPoseidon.EntityTypes
hasVersionPoseidon.EntityTypes
IdenticalPoseidon.Janno
IncludePoseidon.EntityTypes
IncludeJannoColumnsPoseidon.CLI.Jannocoalesce
IndPoseidon.EntityTypes
indFilePoseidon.GenotypeData
indFileChkSumPoseidon.GenotypeData
indInfoConformsToEntitySpecsPoseidon.EntityTypes
indInfoGroupsPoseidon.EntityTypes
indInfoNamePoseidon.EntityTypes
indInfoPacPoseidon.EntityTypes
IndividualInfo 
1 (Type/Class)Poseidon.EntityTypes
2 (Data Constructor)Poseidon.EntityTypes
IndividualInfoCollectionPoseidon.EntityTypes
InitOptions 
1 (Type/Class)Poseidon.CLI.Init
2 (Data Constructor)Poseidon.CLI.Init
INSDCAnalysisPoseidon.Janno
INSDCBioSamplePoseidon.Janno
INSDCExperimentPoseidon.Janno
INSDCProjectPoseidon.Janno
INSDCRunPoseidon.Janno
INSDCSamplePoseidon.Janno
INSDCStudyPoseidon.Janno
isLatestInCollectionPoseidon.EntityTypes
isMD5HashPoseidon.SequencingSource
jAdditionalColumnsPoseidon.Janno
jAlternativeIDsPoseidon.Janno
JannoCaptureTypePoseidon.Janno
JannoCoalesceOptions 
1 (Type/Class)Poseidon.CLI.Jannocoalesce
2 (Data Constructor)Poseidon.CLI.Jannocoalesce
JannoCountry 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoDateTypePoseidon.Janno
JannoGenotypePloidyPoseidon.Janno
jannoHeaderStringPoseidon.Janno
JannoLibraryBuiltPoseidon.Janno
JannoList 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoRow 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoRows 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoSex 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoSourceBaseDirsPoseidon.CLI.Jannocoalesce
JannoSourceSinglePoseidon.CLI.Jannocoalesce
JannoSourceSpecPoseidon.CLI.Jannocoalesce
JannoStringListPoseidon.Janno
JannoUDGPoseidon.Janno
jCaptureTypePoseidon.Janno
jCollectionIDPoseidon.Janno
jCommentsPoseidon.Janno
jContaminationPoseidon.Janno
jContaminationErrPoseidon.Janno
jContaminationMeasPoseidon.Janno
jContaminationNotePoseidon.Janno
jCountryPoseidon.Janno
jCountryISOPoseidon.Janno
jCoverageOnTargetsPoseidon.Janno
jDamagePoseidon.Janno
jDataPreparationPipelineURLPoseidon.Janno
jDateBCADMedianPoseidon.Janno
jDateBCADStartPoseidon.Janno
jDateBCADStopPoseidon.Janno
jDateC14LabnrPoseidon.Janno
jDateC14UncalBPPoseidon.Janno
jDateC14UncalBPErrPoseidon.Janno
jDateNotePoseidon.Janno
jDateTypePoseidon.Janno
jEndogenousPoseidon.Janno
jGeneticSexPoseidon.Janno
jGeneticSourceAccessionIDsPoseidon.Janno
jGenotypePloidyPoseidon.Janno
jGroupNamePoseidon.Janno
jKeywordsPoseidon.Janno
jLatitudePoseidon.Janno
jLibraryBuiltPoseidon.Janno
jLibraryNamesPoseidon.Janno
jLocationPoseidon.Janno
jLongitudePoseidon.Janno
jMTHaplogroupPoseidon.Janno
jNrLibrariesPoseidon.Janno
jNrSNPsPoseidon.Janno
joinEntriesPoseidon.GenotypeData
jPoseidonIDPoseidon.Janno
jPrimaryContactPoseidon.Janno
jPublicationPoseidon.Janno
jRelationDegreePoseidon.Janno
jRelationNotePoseidon.Janno
jRelationToPoseidon.Janno
jRelationTypePoseidon.Janno
jSitePoseidon.Janno
jSourceTissuePoseidon.Janno
jUDGPoseidon.Janno
JURI 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
jYHaplogroupPoseidon.Janno
latestPoseidonVersionPoseidon.PoseidonVersion
Latitude 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
ListEntityPoseidon.CLI.List
ListGroupsPoseidon.CLI.List
ListIndividualsPoseidon.CLI.List
ListOptions 
1 (Type/Class)Poseidon.CLI.List
2 (Data Constructor)Poseidon.CLI.List
ListPackagesPoseidon.CLI.List
loadGenotypeDataPoseidon.GenotypeData
loadIndividualsPoseidon.GenotypeData
LogAPoseidon.Utils
logDebugPoseidon.Utils
logErrorPoseidon.Utils
logInfoPoseidon.Utils
LogModePoseidon.Utils
logWarningPoseidon.Utils
logWithEnvPoseidon.Utils
Longitude 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
MajorPoseidon.Version
makeAccessionIDPoseidon.Janno
makeAccessionIDRunPoseidon.SequencingSource
makeAccessionIDSamplePoseidon.SequencingSource
makeAccessionIDStudyPoseidon.SequencingSource
makeChroniclePoseidon.Chronicle
makeJannoCountryUnsafePoseidon.Janno
makeLatitudePoseidon.Janno
makeLongitudePoseidon.Janno
makeMD5Poseidon.SequencingSource
makeNewJannoRowsPoseidon.CLI.Jannocoalesce
makePacNameAndVersionPoseidon.EntityTypes
makePseudoPackageFromGenotypeDataPoseidon.Package
makeSimpleDatePoseidon.SequencingSource
makeSSFLibraryBuiltPoseidon.SequencingSource
makeSSFUDGPoseidon.SequencingSource
MalePoseidon.Janno
matchWithOptionalStripPoseidon.CLI.Jannocoalesce
maybeShowPoseidon.CLI.Summarise
maybeShowStringPoseidon.CLI.Summarise
MD5 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
meanAndSdIntegerPoseidon.MathHelpers
meanAndSdRoundToPoseidon.MathHelpers
mergeRowPoseidon.CLI.Jannocoalesce
MinimalOutPoseidon.CLI.Forge
minimalOutputDocuPoseidon.CLI.OptparseApplicativeParsers
minimalRequiredClientVersionPoseidon.PoseidonVersion
MinorPoseidon.Version
MinusPoseidon.Janno
MixedPoseidon.Janno
MixedSSDSPoseidon.Janno
ModernPoseidon.Janno
newMinimalPackageTemplatePoseidon.Package
newPackageTemplatePoseidon.Package
NoLogPoseidon.Utils
noLogPoseidon.Utils
NormalOutPoseidon.CLI.Forge
NotLocalPoseidon.CLI.Fetch
onlyGenoOutputDocuPoseidon.CLI.OptparseApplicativeParsers
ORCID 
1 (Type/Class)Poseidon.Contributor
2 (Data Constructor)Poseidon.Contributor
OtherPoseidon.Janno
OtherCapturePoseidon.Janno
OtherDegreePoseidon.Janno
OtherIDPoseidon.Janno
PacPoseidon.EntityTypes
PacBaseDirPoseidon.GenotypeData
PackageInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
PackageIteration 
1 (Type/Class)Poseidon.Chronicle
2 (Data Constructor)Poseidon.Chronicle
PackageReadOptions 
1 (Type/Class)Poseidon.Package
2 (Data Constructor)Poseidon.Package
PackageStatePoseidon.CLI.Fetch
packagesToPackageInfosPoseidon.Package
PackageVersionUpdate 
1 (Type/Class)Poseidon.CLI.Rectify
2 (Data Constructor)Poseidon.CLI.Rectify
PacNameAndVersion 
1 (Type/Class)Poseidon.EntityTypes
2 (Data Constructor)Poseidon.EntityTypes
pacReadOpts 
1 (Function)Poseidon.CLI.Summarise
2 (Function)Poseidon.CLI.Forge
3 (Function)Poseidon.CLI.Fetch
4 (Function)Poseidon.CLI.Timetravel
5 (Function)Poseidon.CLI.Chronicle
pacStateCommitPoseidon.Chronicle
pacStatePathPoseidon.Chronicle
pacStateTitlePoseidon.Chronicle
pacStateVersionPoseidon.Chronicle
padLeftPoseidon.Utils
padRightPoseidon.Utils
panavNamePoseidon.EntityTypes
panavVersionPoseidon.EntityTypes
parseArchiveBasePathsPoseidon.CLI.OptparseApplicativeParsers
parseArchiveEndpointPoseidon.CLI.OptparseApplicativeParsers
parseBasePathPoseidon.CLI.OptparseApplicativeParsers
parseBasePathsPoseidon.CLI.OptparseApplicativeParsers
parseCertFilePoseidon.CLI.OptparseApplicativeParsers
parseChainFilePoseidon.CLI.OptparseApplicativeParsers
parseChecksumsToRectifyPoseidon.CLI.OptparseApplicativeParsers
parseChronOperationPoseidon.CLI.OptparseApplicativeParsers
parseChronOutPathPoseidon.CLI.OptparseApplicativeParsers
parseChronUpdatePathPoseidon.CLI.OptparseApplicativeParsers
parseContributorsPoseidon.CLI.OptparseApplicativeParsers
parseCsvParseErrorPoseidon.Janno
parseDebugModePoseidon.CLI.OptparseApplicativeParsers
parseErrorLengthPoseidon.CLI.OptparseApplicativeParsers
parseFetchEntitiesDirectPoseidon.CLI.OptparseApplicativeParsers
parseFetchEntitiesFromFilePoseidon.CLI.OptparseApplicativeParsers
parseFetchEntityInputsPoseidon.CLI.OptparseApplicativeParsers
parseForcePoseidon.CLI.OptparseApplicativeParsers
parseForgeEntitiesDirectPoseidon.CLI.OptparseApplicativeParsers
parseForgeEntitiesFromFilePoseidon.CLI.OptparseApplicativeParsers
parseForgeEntityInputsPoseidon.CLI.OptparseApplicativeParsers
parseForgeOutModePoseidon.CLI.OptparseApplicativeParsers
parseFullGenoPoseidon.CLI.OptparseApplicativeParsers
parseGenoDataSourcePoseidon.CLI.OptparseApplicativeParsers
parseGenoDataSourcesPoseidon.CLI.OptparseApplicativeParsers
parseGenotypeSNPSetPoseidon.CLI.OptparseApplicativeParsers
parseIgnoreChecksumsPoseidon.CLI.OptparseApplicativeParsers
parseIgnoreDuplicatesPoseidon.CLI.OptparseApplicativeParsers
parseIgnoreGenoPoseidon.CLI.OptparseApplicativeParsers
parseIgnorePoseidonVersionPoseidon.CLI.OptparseApplicativeParsers
parseInBibFilePoseidon.CLI.OptparseApplicativeParsers
parseInGenoFilePoseidon.CLI.OptparseApplicativeParsers
parseInGenoOnePoseidon.CLI.OptparseApplicativeParsers
parseInGenoSepPoseidon.CLI.OptparseApplicativeParsers
parseInGenotypeDatasetPoseidon.CLI.OptparseApplicativeParsers
parseInGenotypeFormatPoseidon.CLI.OptparseApplicativeParsers
parseInGenoWithoutSNPSetPoseidon.CLI.OptparseApplicativeParsers
parseInIndFilePoseidon.CLI.OptparseApplicativeParsers
parseInJannoFilePoseidon.CLI.OptparseApplicativeParsers
parseInPoseidonYamlFilePoseidon.CLI.OptparseApplicativeParsers
parseInputPlinkPopModePoseidon.CLI.OptparseApplicativeParsers
parseInSnpFilePoseidon.CLI.OptparseApplicativeParsers
parseInSSFilePoseidon.CLI.OptparseApplicativeParsers
parseIntersectPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalIdStripRegexPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalJannoColumnsPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalOutSpecPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalOverridePoseidon.CLI.OptparseApplicativeParsers
parseJannocoalSourceKeyPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalSourceSpecPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalTargetFilePoseidon.CLI.OptparseApplicativeParsers
parseJannocoalTargetKeyPoseidon.CLI.OptparseApplicativeParsers
parseKeyFilePoseidon.CLI.OptparseApplicativeParsers
parseListEntityPoseidon.CLI.OptparseApplicativeParsers
parseLogPoseidon.CLI.OptparseApplicativeParsers
parseLogModePoseidon.CLI.OptparseApplicativeParsers
parseMaybeArchiveNamePoseidon.CLI.OptparseApplicativeParsers
parseMaybeCertFilesPoseidon.CLI.OptparseApplicativeParsers
parseMaybeContributorsPoseidon.CLI.OptparseApplicativeParsers
parseMaybeLogPoseidon.CLI.OptparseApplicativeParsers
parseMaybeOutPackageNamePoseidon.CLI.OptparseApplicativeParsers
parseMaybeOutPackagePathPoseidon.CLI.OptparseApplicativeParsers
parseMaybePackageVersionUpdatePoseidon.CLI.OptparseApplicativeParsers
parseMaybePoseidonVersionPoseidon.CLI.OptparseApplicativeParsers
parseMaybeSnpFilePoseidon.CLI.OptparseApplicativeParsers
parseMaybeZipDirPoseidon.CLI.OptparseApplicativeParsers
parseMinimalOutputFlagPoseidon.CLI.OptparseApplicativeParsers
parseMinimalOutputSwitchPoseidon.CLI.OptparseApplicativeParsers
parseNoChecksumUpdatePoseidon.CLI.OptparseApplicativeParsers
parseNoExitCodePoseidon.CLI.OptparseApplicativeParsers
parseOnlyLatestPoseidon.CLI.OptparseApplicativeParsers
parseOutGenotypeFormatPoseidon.CLI.OptparseApplicativeParsers
parseOutOnlyGenoFlagPoseidon.CLI.OptparseApplicativeParsers
parseOutOnlyGenoSwitchPoseidon.CLI.OptparseApplicativeParsers
parseOutPackagePathPoseidon.CLI.OptparseApplicativeParsers
parseOutputOrderedPoseidon.CLI.OptparseApplicativeParsers
parseOutputPlinkPopModePoseidon.CLI.OptparseApplicativeParsers
parsePackageWisePoseidon.CLI.OptparseApplicativeParsers
parsePortPoseidon.CLI.OptparseApplicativeParsers
parsePreservePymlFlagPoseidon.CLI.OptparseApplicativeParsers
parseRawOutputPoseidon.CLI.OptparseApplicativeParsers
parseRemoteDummyPoseidon.CLI.OptparseApplicativeParsers
parseRemoteURLPoseidon.CLI.OptparseApplicativeParsers
parseRemoveOldPoseidon.CLI.OptparseApplicativeParsers
parseRepoLocationPoseidon.CLI.OptparseApplicativeParsers
parseTestModePoseidon.CLI.OptparseApplicativeParsers
parseTimetravelChronPathPoseidon.CLI.OptparseApplicativeParsers
parseTimetravelSourcePathPoseidon.CLI.OptparseApplicativeParsers
parseUpgradePoseidon.CLI.OptparseApplicativeParsers
parseValidatePlanPoseidon.CLI.OptparseApplicativeParsers
parseVersionPoseidon.Version
parseVersionComponentPoseidon.CLI.OptparseApplicativeParsers
pastePoseidon.CLI.Summarise
PatchPoseidon.Version
pDescriptionPoseidon.ServerClient
Percent 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
pIsLatestPoseidon.ServerClient
pLastModifiedPoseidon.ServerClient
PlinkPopNameAsBothPoseidon.Utils
PlinkPopNameAsFamilyPoseidon.Utils
PlinkPopNameAsPhenotypePoseidon.Utils
PlinkPopNameModePoseidon.Utils
PlusPoseidon.Janno
pNrIndividualsPoseidon.ServerClient
PoseidonBibTeXExceptionPoseidon.Utils, Poseidon.Package
PoseidonCantPreserveExceptionPoseidon.Utils, Poseidon.Package
PoseidonChronicleExceptionPoseidon.Utils, Poseidon.Package
PoseidonCollectionExceptionPoseidon.Utils, Poseidon.Package
PoseidonCrossFileConsistencyExceptionPoseidon.Utils, Poseidon.Package
PoseidonEmptyForgeExceptionPoseidon.Utils, Poseidon.Package
PoseidonEmptyOutPacNameExceptionPoseidon.Utils, Poseidon.Package
PoseidonEntityPoseidon.EntityTypes
PoseidonExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileChecksumExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileConsistencyExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileExistenceExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileRowExceptionPoseidon.Utils, Poseidon.Package
PoseidonForgeEntitiesExceptionPoseidon.Utils, Poseidon.Package
PoseidonFStatsFormatExceptionPoseidon.Utils, Poseidon.Package
PoseidonGenericExceptionPoseidon.Utils, Poseidon.Package
PoseidonGenotypeExceptionPoseidon.Utils, Poseidon.Package
PoseidonGenotypeExceptionForwardPoseidon.Utils, Poseidon.Package
PoseidonGitExceptionPoseidon.Utils, Poseidon.Package
PoseidonHttpExceptionForwardPoseidon.Utils, Poseidon.Package
PoseidonIndSearchExceptionPoseidon.Utils, Poseidon.Package
PoseidonIOPoseidon.Utils
PoseidonNewPackageConstructionExceptionPoseidon.Utils, Poseidon.Package
PoseidonPackage 
1 (Type/Class)Poseidon.Package
2 (Data Constructor)Poseidon.Package
PoseidonPackageChronicle 
1 (Type/Class)Poseidon.Chronicle
2 (Data Constructor)Poseidon.Chronicle
PoseidonPackageExceptionPoseidon.Utils, Poseidon.Package
PoseidonPackageMissingVersionExceptionPoseidon.Utils, Poseidon.Package
PoseidonPackageVersionExceptionPoseidon.Utils, Poseidon.Package
PoseidonPoseidonEntityParsingExceptionPoseidon.Utils, Poseidon.Package
PoseidonRemoteJSONParsingExceptionPoseidon.Utils, Poseidon.Package
PoseidonServerCommunicationExceptionPoseidon.Utils, Poseidon.Package
PoseidonUnequalBaseDirExceptionPoseidon.Utils, Poseidon.Package
PoseidonUnzipExceptionPoseidon.Utils, Poseidon.Package
PoseidonYamlParseExceptionPoseidon.Utils, Poseidon.Package
PoseidonYamlStruct 
1 (Type/Class)Poseidon.Package
2 (Data Constructor)Poseidon.Package
posPacBaseDirPoseidon.Package
posPacBibPoseidon.Package
posPacBibFilePoseidon.Package
posPacBibFileChkSumPoseidon.Package
posPacChangelogFilePoseidon.Package
posPacContributorPoseidon.Package
posPacDescriptionPoseidon.Package
posPacGenotypeDataPoseidon.Package
posPacJannoPoseidon.Package
posPacJannoFilePoseidon.Package
posPacJannoFileChkSumPoseidon.Package
posPacLastModifiedPoseidon.Package
posPacNameAndVersionPoseidon.Package
posPacPoseidonVersionPoseidon.Package
posPacReadmeFilePoseidon.Package
posPacSeqSourcePoseidon.Package
posPacSeqSourceFilePoseidon.Package
posPacSeqSourceFileChkSumPoseidon.Package
pPacPoseidon.ServerClient
pPosVersionPoseidon.ServerClient
PresenceCountablePoseidon.CLI.Survey
preservePymlPoseidon.CLI.Forge
PreservePymlOutPoseidon.CLI.Forge
printDownloadProgressPoseidon.CLI.Fetch
printFrequencyPoseidon.CLI.Summarise
printFrequencyMaybePoseidon.CLI.Summarise
printFrequencyMaybeStringPoseidon.CLI.Summarise
printFrequencyStringPoseidon.CLI.Summarise
printSNPCopyProgressPoseidon.GenotypeData
printVPoseidon.CLI.Fetch
printVsPoseidon.CLI.Fetch
processApiResponsePoseidon.ServerClient
ProductionPoseidon.Utils
qArchivePoseidon.ServerClient
qDefaultPoseidon.ServerClient
qPacVersionPoseidon.ServerClient
readBibTeXFilePoseidon.BibFile
readChroniclePoseidon.Chronicle
readContributorStringPoseidon.CLI.OptparseApplicativeParsers
readEntitiesFromFilePoseidon.EntityTypes
readEntitiesFromStringPoseidon.EntityTypes
readEntityInputsPoseidon.EntityTypes
readJannoFilePoseidon.Janno
readPlinkPopNamePoseidon.CLI.OptparseApplicativeParsers
readPoseidonPackagePoseidon.Package
readPoseidonPackageCollectionPoseidon.Package
readPoseidonPackageCollectionWithSkipIndicatorPoseidon.Package
readSeqSourceFilePoseidon.SequencingSource
readSeqSourceFileRowPoseidon.SequencingSource
readServerIndInfoPoseidon.CLI.Fetch
readServerPackageInfoPoseidon.CLI.Fetch
recodeAllelesPoseidon.GenotypeData
RectifyOptions 
1 (Type/Class)Poseidon.CLI.Rectify
2 (Data Constructor)Poseidon.CLI.Rectify
ReferenceGenomePoseidon.Janno
RelationDegreePoseidon.Janno
removeUselessSuffixPoseidon.Janno
renderCsvParseErrorPoseidon.Janno
renderJannoCompletenessPoseidon.CLI.Survey
renderMismatchPoseidon.Package
renderNameWithVersionPoseidon.EntityTypes
renderPackageWithCompletenessPoseidon.CLI.Survey
renderPoseidonExceptionPoseidon.Utils
RepoLocalPoseidon.CLI.List
RepoLocationSpecPoseidon.CLI.List
RepoRemotePoseidon.CLI.List
reportDuplicateIndividualsPoseidon.EntityTypes
resolveEntityIndicesPoseidon.EntityTypes
resolveUniqueEntityIndicesPoseidon.EntityTypes
roundToPoseidon.MathHelpers
roundToStrPoseidon.MathHelpers
runChroniclePoseidon.CLI.Chronicle
runFetchPoseidon.CLI.Fetch
runForgePoseidon.CLI.Forge
runGenoconvertPoseidon.CLI.Genoconvert
runInitPoseidon.CLI.Init
runJannocoalescePoseidon.CLI.Jannocoalesce
runListPoseidon.CLI.List
runRectifyPoseidon.CLI.Rectify
runServerPoseidon.CLI.Serve
runServerMainThreadPoseidon.CLI.Serve
runSummarisePoseidon.CLI.Summarise
runSurveyPoseidon.CLI.Survey
runTimetravelPoseidon.CLI.Timetravel
runValidatePoseidon.CLI.Validate
sAdditionalColumnsPoseidon.SequencingSource
SecondPoseidon.Janno
selectIndicesPoseidon.GenotypeData
seqSourceHeaderPoseidon.SequencingSource
seqSourceHeaderStringPoseidon.SequencingSource
seqSourceRefHashMapPoseidon.SequencingSource
SeqSourceRow 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
SeqSourceRows 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
ServeOptions 
1 (Type/Class)Poseidon.CLI.Serve
2 (Data Constructor)Poseidon.CLI.Serve
ServerApiReturnType 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
ServerLogPoseidon.Utils
SexPoseidon.Janno
sFastqASPERAPoseidon.SequencingSource
sFastqBytesPoseidon.SequencingSource
sFastqFTPPoseidon.SequencingSource
sFastqMD5Poseidon.SequencingSource
sFirstPublicPoseidon.SequencingSource
sfSexPoseidon.Janno
ShotgunPoseidon.Janno
showParsecErrPoseidon.Utils
showPoseidonVersionPoseidon.PoseidonVersion
SignedEntitiesListPoseidon.EntityTypes
SignedEntityPoseidon.EntityTypes
SimpleDate 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
SimpleLogPoseidon.Utils
sInstrumentModelPoseidon.SequencingSource
sInstrumentPlatformPoseidon.SequencingSource
SixthToTenthPoseidon.Janno
sLastUpdatedPoseidon.SequencingSource
sLibraryBuiltPoseidon.SequencingSource
sLibraryLayoutPoseidon.SequencingSource
sLibraryNamePoseidon.SequencingSource
sLibrarySourcePoseidon.SequencingSource
sLibraryStrategyPoseidon.SequencingSource
snapYamlChronicleVersionPoseidon.Chronicle
snapYamlDescriptionPoseidon.Chronicle
snapYamlLastModifiedPoseidon.Chronicle
snapYamlPackagesPoseidon.Chronicle
snapYamlTitlePoseidon.Chronicle
snpFilePoseidon.GenotypeData
snpFileChkSumPoseidon.GenotypeData
snpSetPoseidon.GenotypeData
SNPSet1240KPoseidon.GenotypeData
SNPSetHumanOriginsPoseidon.GenotypeData
snpSetMergePoseidon.GenotypeData
snpSetMergeListPoseidon.GenotypeData
SNPSetOtherPoseidon.GenotypeData
SNPSetSpecPoseidon.GenotypeData
sortTupelsBySndDescPoseidon.CLI.Summarise
SpecificIndPoseidon.EntityTypes
sPoseidonIDPoseidon.SequencingSource
sReadCountPoseidon.SequencingSource
sRunAccessionPoseidon.SequencingSource
SSPoseidon.Janno
sSampleAccessionPoseidon.SequencingSource
sSampleAliasPoseidon.SequencingSource
sSecondarySampleAccessionPoseidon.SequencingSource
SSFDSPoseidon.SequencingSource
SSFHalfPoseidon.SequencingSource
SSFLibraryBuiltPoseidon.SequencingSource
SSFMinusPoseidon.SequencingSource
SSFPlusPoseidon.SequencingSource
SSFSSPoseidon.SequencingSource
SSFUDGPoseidon.SequencingSource
sStudyAccessionPoseidon.SequencingSource
sSubmittedFTPPoseidon.SequencingSource
stdevPoseidon.MathHelpers
sUDGPoseidon.SequencingSource
summariseJannoRowsPoseidon.CLI.Summarise
SummariseOptions 
1 (Type/Class)Poseidon.CLI.Summarise
2 (Data Constructor)Poseidon.CLI.Summarise
sumNonMissingSNPsPoseidon.CLI.Forge
SurveyOptions 
1 (Type/Class)Poseidon.CLI.Survey
2 (Data Constructor)Poseidon.CLI.Survey
TestingPoseidon.Utils
testLogPoseidon.Utils
TestModePoseidon.Utils
ThirdToFifthPoseidon.Janno
TimetravelOptions 
1 (Type/Class)Poseidon.CLI.Timetravel
2 (Data Constructor)Poseidon.CLI.Timetravel
TwistAncientDNAPoseidon.Janno
underlyingEntityPoseidon.EntityTypes
UnequalLocalRemotePoseidon.CLI.Fetch
uniqueNumberPoseidon.CLI.Summarise
uniquePOPoseidon.Utils
uniqueROPoseidon.Utils
UnknownPoseidon.Janno
UnrelatedPoseidon.Janno
unzipPackagePoseidon.CLI.Fetch
UpdateChronPoseidon.CLI.Chronicle
updateChroniclePoseidon.Chronicle
updateThreeComponentVersionPoseidon.Version
usePoseidonLoggerPoseidon.Utils
validateGenoPoseidon.Package
ValidateOptions 
1 (Type/Class)Poseidon.CLI.Validate
2 (Data Constructor)Poseidon.CLI.Validate
ValidatePlanPoseidon.CLI.Validate
validPoseidonVersionsPoseidon.PoseidonVersion
ValPlanBaseDirsPoseidon.CLI.Validate
ValPlanBibPoseidon.CLI.Validate
ValPlanGenoPoseidon.CLI.Validate
ValPlanJannoPoseidon.CLI.Validate
ValPlanPoseidonYamlPoseidon.CLI.Validate
ValPlanSSFPoseidon.CLI.Validate
VerboseLogPoseidon.Utils
VersionComponentPoseidon.Version
warnSeqSourceConsistencyPoseidon.SequencingSource
writeBibTeXFilePoseidon.BibFile
writeChroniclePoseidon.Chronicle
writeJannoFilePoseidon.Janno
writePoseidonPackagePoseidon.Package
writeSeqSourceFilePoseidon.SequencingSource
zipWithPaddingPoseidon.Package
_aeArchiveNamePoseidon.ServerClient
_aeServerURLPoseidon.ServerClient
_apiMessagesPoseidon.ServerClient
_apiResponsePoseidon.ServerClient
_archiveEndPoseidon.CLI.Fetch
_chronicleBaseDirsPoseidon.CLI.Chronicle
_chronicleOperationPoseidon.CLI.Chronicle
_entityInputPoseidon.CLI.Fetch
_envErrorLengthPoseidon.Utils
_envInputPlinkModePoseidon.Utils
_envLogActionPoseidon.Utils
_envTestModePoseidon.Utils
_forgeEntityInputPoseidon.CLI.Forge
_forgeGenoSourcesPoseidon.CLI.Forge
_forgeIntersectPoseidon.CLI.Forge
_forgeOutFormatPoseidon.CLI.Forge
_forgeOutModePoseidon.CLI.Forge
_forgeOutPacNamePoseidon.CLI.Forge
_forgeOutPacPathPoseidon.CLI.Forge
_forgeOutputOrderedPoseidon.CLI.Forge
_forgeOutputPlinkPopModePoseidon.CLI.Forge
_forgePackageWisePoseidon.CLI.Forge
_forgeSnpFilePoseidon.CLI.Forge
_genoconvertGenoSourcesPoseidon.CLI.Genoconvert
_genoconvertOnlyLatestPoseidon.CLI.Genoconvert
_genoConvertOutFormatPoseidon.CLI.Genoconvert
_genoConvertOutOnlyGenoPoseidon.CLI.Genoconvert
_genoconvertOutPlinkPopModePoseidon.CLI.Genoconvert
_genoconvertRemoveOldPoseidon.CLI.Genoconvert
_genoMaybeOutPackagePathPoseidon.CLI.Genoconvert
_initGenoDataPoseidon.CLI.Init
_initMinimalPoseidon.CLI.Init
_initPacNamePoseidon.CLI.Init
_initPacPathPoseidon.CLI.Init
_jaBaseDirsPoseidon.CLI.Fetch
_jannocoalesceIdStripPoseidon.CLI.Jannocoalesce
_jannocoalesceJannoColumnsPoseidon.CLI.Jannocoalesce
_jannocoalesceOutSpecPoseidon.CLI.Jannocoalesce
_jannocoalesceOverwriteColumnsPoseidon.CLI.Jannocoalesce
_jannocoalesceSourcePoseidon.CLI.Jannocoalesce
_jannocoalesceSourceKeyPoseidon.CLI.Jannocoalesce
_jannocoalesceTargetPoseidon.CLI.Jannocoalesce
_jannocoalesceTargetKeyPoseidon.CLI.Jannocoalesce
_listListEntityPoseidon.CLI.List
_listOnlyLatestPoseidon.CLI.List
_listRawOutputPoseidon.CLI.List
_listRepoLocationPoseidon.CLI.List
_orcidChecksumPoseidon.Contributor
_orcidNumsPoseidon.Contributor
_pacVerUpLogPoseidon.CLI.Rectify
_pacVerUpVersionComponentPoseidon.CLI.Rectify
_posYamlBibFilePoseidon.Package
_posYamlBibFileChkSumPoseidon.Package
_posYamlChangelogFilePoseidon.Package
_posYamlContributorPoseidon.Package
_posYamlDescriptionPoseidon.Package
_posYamlGenotypeDataPoseidon.Package
_posYamlJannoFilePoseidon.Package
_posYamlJannoFileChkSumPoseidon.Package
_posYamlLastModifiedPoseidon.Package
_posYamlPackageVersionPoseidon.Package
_posYamlPoseidonVersionPoseidon.Package
_posYamlReadmeFilePoseidon.Package
_posYamlSeqSourceFilePoseidon.Package
_posYamlSeqSourceFileChkSumPoseidon.Package
_posYamlTitlePoseidon.Package
_readOptFullGenoPoseidon.Package
_readOptGenoCheckPoseidon.Package
_readOptIgnoreChecksumsPoseidon.Package
_readOptIgnoreGenoPoseidon.Package
_readOptIgnorePosVersionPoseidon.Package
_readOptOnlyLatestPoseidon.Package
_rectifyBaseDirsPoseidon.CLI.Rectify
_rectifyChecksumBibPoseidon.CLI.Rectify
_rectifyChecksumGenoPoseidon.CLI.Rectify
_rectifyChecksumJannoPoseidon.CLI.Rectify
_rectifyChecksumsPoseidon.CLI.Rectify
_rectifyChecksumSSFPoseidon.CLI.Rectify
_rectifyIgnorePoseidonVersionPoseidon.CLI.Rectify
_rectifyNewContributorsPoseidon.CLI.Rectify
_rectifyOnlyLatestPoseidon.CLI.Rectify
_rectifyPackageVersionUpdatePoseidon.CLI.Rectify
_rectifyPoseidonVersionPoseidon.CLI.Rectify
_summariseBaseDirsPoseidon.CLI.Summarise
_summariseRawOutputPoseidon.CLI.Summarise
_surveyBaseDirsPoseidon.CLI.Survey
_surveyOnlyLatestPoseidon.CLI.Survey
_surveyRawOutputPoseidon.CLI.Survey
_timetravelBaseDirsPoseidon.CLI.Timetravel
_timetravelChronicleFilePoseidon.CLI.Timetravel
_timetravelSourceDirPoseidon.CLI.Timetravel
_validateNoExitCodePoseidon.CLI.Validate
_validateOnlyLatestPoseidon.CLI.Validate
_validatePlanPoseidon.CLI.Validate
_valPlanBaseDirsPoseidon.CLI.Validate
_valPlanFullGenoPoseidon.CLI.Validate
_valPlanIgnoreChecksumsPoseidon.CLI.Validate
_valPlanIgnoreDuplicatesPoseidon.CLI.Validate
_valPlanIgnoreGenoPoseidon.CLI.Validate
_valPlanIgnorePosVersionPoseidon.CLI.Validate
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index

+&+Poseidon.ServerClient
A1240KPoseidon.ColumnTypes, Poseidon.Janno
AccessionIDPoseidon.SequencingSource
AccessionIDRun 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
AccessionIDSample 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
AccessionIDStudy 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
AddJannoColAllPoseidon.ServerClient
AddJannoColListPoseidon.ServerClient
AddJannoColSpecPoseidon.ServerClient
AllJannoColumnsPoseidon.CLI.Jannocoalesce
ApiReturnDataPoseidon.ServerClient
ApiReturnExtIndividualInfoPoseidon.ServerClient
ApiReturnGroupInfoPoseidon.ServerClient
ApiReturnPackageInfoPoseidon.ServerClient
ArborAncestralPlusPoseidon.ColumnTypes, Poseidon.Janno
ArborCompletePoseidon.ColumnTypes, Poseidon.Janno
ArborPrimePlusPoseidon.ColumnTypes, Poseidon.Janno
ArchiveEndpoint 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
asVersionPoseidon.PoseidonVersion
avgPoseidon.MathHelpers
BibEntry 
1 (Type/Class)Poseidon.BibFile
2 (Data Constructor)Poseidon.BibFile
bibEntryFieldsPoseidon.BibFile
bibEntryIdPoseidon.BibFile
bibEntryTypePoseidon.BibFile
BibTeXPoseidon.BibFile
C14Poseidon.ColumnTypes, Poseidon.Janno
CharCountPoseidon.Utils
CharInfPoseidon.Utils
checkAtLeastOnePoseidonIDPoseidon.SequencingSource
checkFilePoseidon.Utils
checkIfAllEntitiesExistPoseidon.EntityTypes
checkRunsUniquePoseidon.SequencingSource
ChecksumAllPoseidon.CLI.Rectify
ChecksumNonePoseidon.CLI.Rectify
ChecksumsDetailPoseidon.CLI.Rectify
ChecksumsToRectifyPoseidon.CLI.Rectify
ChronicleOptions 
1 (Type/Class)Poseidon.CLI.Chronicle
2 (Data Constructor)Poseidon.CLI.Chronicle
chroniclePackagesPoseidon.Chronicle
ChronOperationPoseidon.CLI.Chronicle
cliArchiveBaseDirsPoseidon.CLI.Serve
cliCertFilesPoseidon.CLI.Serve
cliIgnoreChecksumsPoseidon.CLI.Serve
cliPortPoseidon.CLI.Serve
cliZipDirPoseidon.CLI.Serve
CoalesceJannoColumnSpecPoseidon.CLI.Jannocoalesce
concludePoseidon.CLI.Validate
ContextualPoseidon.ColumnTypes, Poseidon.Janno
contributorEmailPoseidon.Contributor
contributorNamePoseidon.Contributor
contributorORCIDPoseidon.Contributor
ContributorSpec 
1 (Type/Class)Poseidon.Contributor
2 (Data Constructor)Poseidon.Contributor
contributorSpecParserPoseidon.Contributor
convertGenoToPoseidon.CLI.Genoconvert
copyDirectoryPoseidon.CLI.Timetravel
CounterCopiedPoseidon.CLI.Jannocoalesce
CounterMismatchesPoseidon.CLI.Jannocoalesce
countPresencePoseidon.CLI.Survey
CreateChronPoseidon.CLI.Chronicle
createMinimalJannoPoseidon.Janno
createMinimalSamplePoseidon.Janno
CsvNamedRecord 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
decodingOptionsPoseidon.Janno
DefaultLogPoseidon.Utils
defaultPackageReadOptionsPoseidon.Package
determineNonExistentEntitiesPoseidon.EntityTypes
determinePackageOutNamePoseidon.Utils
determinePackageStatePoseidon.CLI.Fetch
determineRelevantPackagesPoseidon.EntityTypes
DiploidPoseidon.ColumnTypes, Poseidon.Janno
downloadAndUnzipPackagePoseidon.CLI.Fetch
downloadPackagePoseidon.CLI.Fetch
DSPoseidon.ColumnTypes, Poseidon.Janno
dummyBibEntryPoseidon.BibFile
encodingOptionsPoseidon.Janno
EntitiesDirectPoseidon.EntityTypes
EntitiesFromFilePoseidon.EntityTypes
EntitiesListPoseidon.EntityTypes
entitiesListPPoseidon.EntityTypes
EntityInputPoseidon.EntityTypes
EntitySpecPoseidon.EntityTypes
entitySpecParserPoseidon.EntityTypes
Env 
1 (Type/Class)Poseidon.Utils
2 (Data Constructor)Poseidon.Utils
envErrorLengthPoseidon.Utils
envInputPlinkModePoseidon.Utils
envLogActionPoseidon.Utils
EqualLocalRemotePoseidon.CLI.Fetch
ErrorLengthPoseidon.Utils
ExcludePoseidon.EntityTypes
ExcludeJannoColumnsPoseidon.CLI.Jannocoalesce
explicitNAPoseidon.Janno
ExtendedIndividualInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
extIndInfo2IndInfoCollectionPoseidon.ServerClient
extIndInfoAddColsPoseidon.ServerClient
extIndInfoGroupsPoseidon.ServerClient
extIndInfoIsLatestPoseidon.ServerClient
extIndInfoNamePoseidon.ServerClient
extIndInfoPacPoseidon.ServerClient
FemalePoseidon.Janno
FetchOptions 
1 (Type/Class)Poseidon.CLI.Fetch
2 (Data Constructor)Poseidon.CLI.Fetch
fillMissingSnpSetsPoseidon.CLI.Forge
filterBibEntriesPoseidon.CLI.Forge
filterLookupPoseidon.Janno
filterLookupOptionalPoseidon.Janno
filterSeqSourceRowsPoseidon.CLI.Forge
filterToRelevantPackagesPoseidon.Package
findAllPoseidonYmlFilesPoseidon.Package
FirstPoseidon.ColumnTypes, Poseidon.Janno
ForgeOptions 
1 (Type/Class)Poseidon.CLI.Forge
2 (Data Constructor)Poseidon.CLI.Forge
ForgeOutModePoseidon.CLI.Forge
formatPoseidon.GenotypeData
frequencyPoseidon.CLI.Summarise
GeneticSex 
1 (Type/Class)Poseidon.ColumnTypes, Poseidon.Janno
2 (Data Constructor)Poseidon.ColumnTypes, Poseidon.Janno
GenoconvertOptions 
1 (Type/Class)Poseidon.CLI.Genoconvert
2 (Data Constructor)Poseidon.CLI.Genoconvert
GenoDataSourcePoseidon.GenotypeData
GenoDirectPoseidon.GenotypeData
genoFilePoseidon.GenotypeData
genoFileChkSumPoseidon.GenotypeData
GenoInputPoseidon.CLI.OptparseApplicativeParsers
GenoOutPoseidon.CLI.Forge
GenotypeDataSpec 
1 (Type/Class)Poseidon.GenotypeData
2 (Data Constructor)Poseidon.GenotypeData
GenotypeFormatEigenstratPoseidon.GenotypeData
GenotypeFormatPlinkPoseidon.GenotypeData
GenotypeFormatSpecPoseidon.GenotypeData
getAllGroupInfoPoseidon.Package
getChecksumPoseidon.Utils
getConsensusSnpEntryPoseidon.GenotypeData
getCsvNRPoseidon.Janno
getExtendedIndividualInfoPoseidon.Package
getGenoDirectPoseidon.GenotypeData
getGitCommitHashPoseidon.Chronicle
getJannoRowsFromPacPoseidon.Package
getJointGenotypeDataPoseidon.Package
getJointIndividualInfoPoseidon.Package
getJointJannoPoseidon.Package
getKeyFromJannoPoseidon.CLI.Jannocoalesce
getListColumnPoseidon.Janno
getMaybeListColumnPoseidon.Janno
getPacBaseDirsPoseidon.GenotypeData
getPackageVersionPoseidon.Chronicle
getPacNamePoseidon.EntityTypes
getPacVersionPoseidon.EntityTypes
getRunAccessionPoseidon.SequencingSource
getSampleAccessionPoseidon.SequencingSource
getSeqSourceRowListPoseidon.SequencingSource
getStudyAccessionPoseidon.SequencingSource
gIsLatestPoseidon.ServerClient
gitCheckoutPoseidon.CLI.Timetravel
gNamePoseidon.ServerClient
gNrIndividualsPoseidon.ServerClient
gPackagePoseidon.ServerClient
GroupPoseidon.EntityTypes
GroupInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
GroupName 
1 (Type/Class)Poseidon.ColumnTypes, Poseidon.Janno
2 (Data Constructor)Poseidon.ColumnTypes, Poseidon.Janno
HalfPoseidon.ColumnTypes, Poseidon.Janno
handlePackageByStatePoseidon.CLI.Fetch
HaploidPoseidon.ColumnTypes, Poseidon.Janno
HasNameAndVersionPoseidon.EntityTypes
hasVersionPoseidon.EntityTypes
IdenticalPoseidon.ColumnTypes, Poseidon.Janno
IncludePoseidon.EntityTypes
IncludeJannoColumnsPoseidon.CLI.Jannocoalesce
IndPoseidon.EntityTypes
indFilePoseidon.GenotypeData
indFileChkSumPoseidon.GenotypeData
indInfoConformsToEntitySpecsPoseidon.EntityTypes
indInfoGroupsPoseidon.EntityTypes
indInfoNamePoseidon.EntityTypes
indInfoPacPoseidon.EntityTypes
IndividualInfo 
1 (Type/Class)Poseidon.EntityTypes
2 (Data Constructor)Poseidon.EntityTypes
IndividualInfoCollectionPoseidon.EntityTypes
InitOptions 
1 (Type/Class)Poseidon.CLI.Init
2 (Data Constructor)Poseidon.CLI.Init
INSDCAnalysis 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
INSDCBioSample 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
INSDCExperiment 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
INSDCProject 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
INSDCRun 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
INSDCSample 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
INSDCStudy 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
isLatestInCollectionPoseidon.EntityTypes
isMD5HashPoseidon.SequencingSource
jAdditionalColumnsPoseidon.Janno
jAlternativeIDsPoseidon.Janno
JannoAlternativeID 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoCaptureTypePoseidon.ColumnTypes, Poseidon.Janno
JannoCoalesceOptions 
1 (Type/Class)Poseidon.CLI.Jannocoalesce
2 (Data Constructor)Poseidon.CLI.Jannocoalesce
JannoCollectionID 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoComment 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoContamination 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoContaminationErr 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoContaminationMeas 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoContaminationNote 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoCountry 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoCountryISO 
1 (Type/Class)Poseidon.ColumnTypes, Poseidon.Janno
2 (Data Constructor)Poseidon.ColumnTypes, Poseidon.Janno
JannoCoverageOnTargets 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDamage 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDataPreparationPipelineURL 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateBCADMedian 
1 (Type/Class)Poseidon.ColumnTypes, Poseidon.Janno
2 (Data Constructor)Poseidon.ColumnTypes, Poseidon.Janno
JannoDateBCADStart 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateBCADStop 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateC14Labnr 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateC14UncalBP 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateC14UncalBPErr 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateNote 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateTypePoseidon.ColumnTypes, Poseidon.Janno
JannoEndogenous 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoGeneticSourceAccessionIDPoseidon.ColumnTypes
JannoGenotypePloidyPoseidon.ColumnTypes, Poseidon.Janno
jannoHeaderStringPoseidon.Janno
JannoKeyword 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoLatitude 
1 (Type/Class)Poseidon.ColumnTypes, Poseidon.Janno
2 (Data Constructor)Poseidon.ColumnTypes, Poseidon.Janno
JannoLibraryBuiltPoseidon.ColumnTypes, Poseidon.Janno
JannoLibraryName 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoLocation 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoLongitude 
1 (Type/Class)Poseidon.ColumnTypes, Poseidon.Janno
2 (Data Constructor)Poseidon.ColumnTypes, Poseidon.Janno
JannoMTHaplogroup 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoNrLibraries 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoNrSNPs 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoPrimaryContact 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoPublication 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoRelationDegreePoseidon.ColumnTypes, Poseidon.Janno
JannoRelationNote 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoRelationTo 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoRelationType 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoRow 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoRows 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoSite 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoSourceBaseDirsPoseidon.CLI.Jannocoalesce
JannoSourceSinglePoseidon.CLI.Jannocoalesce
JannoSourceSpecPoseidon.CLI.Jannocoalesce
JannoSourceTissue 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoStringListPoseidon.Janno
JannoUDGPoseidon.ColumnTypes, Poseidon.Janno
JannoYHaplogroup 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
jCaptureTypePoseidon.Janno
jCollectionIDPoseidon.Janno
jCommentsPoseidon.Janno
jContaminationPoseidon.Janno
jContaminationErrPoseidon.Janno
jContaminationMeasPoseidon.Janno
jContaminationNotePoseidon.Janno
jCountryPoseidon.Janno
jCountryISOPoseidon.Janno
jCoverageOnTargetsPoseidon.Janno
jDamagePoseidon.Janno
jDataPreparationPipelineURLPoseidon.Janno
jDateBCADMedianPoseidon.Janno
jDateBCADStartPoseidon.Janno
jDateBCADStopPoseidon.Janno
jDateC14LabnrPoseidon.Janno
jDateC14UncalBPPoseidon.Janno
jDateC14UncalBPErrPoseidon.Janno
jDateNotePoseidon.Janno
jDateTypePoseidon.Janno
jEndogenousPoseidon.Janno
jGeneticSexPoseidon.Janno
jGeneticSourceAccessionIDsPoseidon.Janno
jGenotypePloidyPoseidon.Janno
jGroupNamePoseidon.Janno
jKeywordsPoseidon.Janno
jLatitudePoseidon.Janno
jLibraryBuiltPoseidon.Janno
jLibraryNamesPoseidon.Janno
jLocationPoseidon.Janno
jLongitudePoseidon.Janno
jMTHaplogroupPoseidon.Janno
jNrLibrariesPoseidon.Janno
jNrSNPsPoseidon.Janno
joinEntriesPoseidon.GenotypeData
jPoseidonIDPoseidon.Janno
jPrimaryContactPoseidon.Janno
jPublicationPoseidon.Janno
jRelationDegreePoseidon.Janno
jRelationNotePoseidon.Janno
jRelationToPoseidon.Janno
jRelationTypePoseidon.Janno
jSitePoseidon.Janno
jSourceTissuePoseidon.Janno
jUDGPoseidon.Janno
JURI 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
jYHaplogroupPoseidon.Janno
latestPoseidonVersionPoseidon.PoseidonVersion
ListColumn 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
ListEntityPoseidon.CLI.List
ListGroupsPoseidon.CLI.List
ListIndividualsPoseidon.CLI.List
ListOptions 
1 (Type/Class)Poseidon.CLI.List
2 (Data Constructor)Poseidon.CLI.List
ListPackagesPoseidon.CLI.List
loadGenotypeDataPoseidon.GenotypeData
loadIndividualsPoseidon.GenotypeData
LogAPoseidon.Utils
logDebugPoseidon.Utils
logErrorPoseidon.Utils
logInfoPoseidon.Utils
LogModePoseidon.Utils
logWarningPoseidon.Utils
logWithEnvPoseidon.Utils
MajorPoseidon.Version
makePoseidon.ColumnTypesUtils
MakeablePoseidon.ColumnTypesUtils
makeAccessionIDPoseidon.SequencingSource
makeAccessionIDRunPoseidon.SequencingSource
makeAccessionIDSamplePoseidon.SequencingSource
makeAccessionIDStudyPoseidon.SequencingSource
makeChroniclePoseidon.Chronicle
makeInstancesPoseidon.ColumnTypesUtils
makeJURIPoseidon.SequencingSource
makeMD5Poseidon.SequencingSource
makeNewJannoRowsPoseidon.CLI.Jannocoalesce
makePacNameAndVersionPoseidon.EntityTypes
makePseudoPackageFromGenotypeDataPoseidon.Package
makeSimpleDatePoseidon.SequencingSource
makeSSFLibraryBuiltPoseidon.SequencingSource
makeSSFUDGPoseidon.SequencingSource
MalePoseidon.Janno
matchWithOptionalStripPoseidon.CLI.Jannocoalesce
maybeShowPoseidon.CLI.Summarise
maybeShowStringPoseidon.CLI.Summarise
MD5 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
meanAndSdIntegerPoseidon.MathHelpers
meanAndSdRoundToPoseidon.MathHelpers
mergeRowPoseidon.CLI.Jannocoalesce
MinimalOutPoseidon.CLI.Forge
minimalOutputDocuPoseidon.CLI.OptparseApplicativeParsers
minimalRequiredClientVersionPoseidon.PoseidonVersion
MinorPoseidon.Version
MinusPoseidon.ColumnTypes, Poseidon.Janno
MixedPoseidon.ColumnTypes, Poseidon.Janno
MixedSSDSPoseidon.ColumnTypes, Poseidon.Janno
ModernPoseidon.ColumnTypes, Poseidon.Janno
newMinimalPackageTemplatePoseidon.Package
newPackageTemplatePoseidon.Package
NoLogPoseidon.Utils
noLogPoseidon.Utils
NormalOutPoseidon.CLI.Forge
NotLocalPoseidon.CLI.Fetch
onlyGenoOutputDocuPoseidon.CLI.OptparseApplicativeParsers
ORCID 
1 (Type/Class)Poseidon.Contributor
2 (Data Constructor)Poseidon.Contributor
OtherPoseidon.ColumnTypes, Poseidon.Janno
OtherCapturePoseidon.ColumnTypes, Poseidon.Janno
OtherDegreePoseidon.ColumnTypes, Poseidon.Janno
OtherID 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
PacPoseidon.EntityTypes
PacBaseDirPoseidon.GenotypeData
PackageInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
PackageIteration 
1 (Type/Class)Poseidon.Chronicle
2 (Data Constructor)Poseidon.Chronicle
PackageReadOptions 
1 (Type/Class)Poseidon.Package
2 (Data Constructor)Poseidon.Package
PackageStatePoseidon.CLI.Fetch
packagesToPackageInfosPoseidon.Package
PackageVersionUpdate 
1 (Type/Class)Poseidon.CLI.Rectify
2 (Data Constructor)Poseidon.CLI.Rectify
PacNameAndVersion 
1 (Type/Class)Poseidon.EntityTypes
2 (Data Constructor)Poseidon.EntityTypes
pacReadOpts 
1 (Function)Poseidon.CLI.Summarise
2 (Function)Poseidon.CLI.Forge
3 (Function)Poseidon.CLI.Fetch
4 (Function)Poseidon.CLI.Timetravel
5 (Function)Poseidon.CLI.Chronicle
pacStateCommitPoseidon.Chronicle
pacStatePathPoseidon.Chronicle
pacStateTitlePoseidon.Chronicle
pacStateVersionPoseidon.Chronicle
padLeftPoseidon.Utils
padRightPoseidon.Utils
panavNamePoseidon.EntityTypes
panavVersionPoseidon.EntityTypes
parseArchiveBasePathsPoseidon.CLI.OptparseApplicativeParsers
parseArchiveEndpointPoseidon.CLI.OptparseApplicativeParsers
parseBasePathPoseidon.CLI.OptparseApplicativeParsers
parseBasePathsPoseidon.CLI.OptparseApplicativeParsers
parseCertFilePoseidon.CLI.OptparseApplicativeParsers
parseChainFilePoseidon.CLI.OptparseApplicativeParsers
parseChecksumsToRectifyPoseidon.CLI.OptparseApplicativeParsers
parseChronOperationPoseidon.CLI.OptparseApplicativeParsers
parseChronOutPathPoseidon.CLI.OptparseApplicativeParsers
parseChronUpdatePathPoseidon.CLI.OptparseApplicativeParsers
parseContributorsPoseidon.CLI.OptparseApplicativeParsers
parseCsvParseErrorPoseidon.Janno
parseDebugModePoseidon.CLI.OptparseApplicativeParsers
parseErrorLengthPoseidon.CLI.OptparseApplicativeParsers
parseFetchEntitiesDirectPoseidon.CLI.OptparseApplicativeParsers
parseFetchEntitiesFromFilePoseidon.CLI.OptparseApplicativeParsers
parseFetchEntityInputsPoseidon.CLI.OptparseApplicativeParsers
parseForcePoseidon.CLI.OptparseApplicativeParsers
parseForgeEntitiesDirectPoseidon.CLI.OptparseApplicativeParsers
parseForgeEntitiesFromFilePoseidon.CLI.OptparseApplicativeParsers
parseForgeEntityInputsPoseidon.CLI.OptparseApplicativeParsers
parseForgeOutModePoseidon.CLI.OptparseApplicativeParsers
parseFullGenoPoseidon.CLI.OptparseApplicativeParsers
parseGenoDataSourcePoseidon.CLI.OptparseApplicativeParsers
parseGenoDataSourcesPoseidon.CLI.OptparseApplicativeParsers
parseGenotypeSNPSetPoseidon.CLI.OptparseApplicativeParsers
parseIgnoreChecksumsPoseidon.CLI.OptparseApplicativeParsers
parseIgnoreDuplicatesPoseidon.CLI.OptparseApplicativeParsers
parseIgnoreGenoPoseidon.CLI.OptparseApplicativeParsers
parseIgnorePoseidonVersionPoseidon.CLI.OptparseApplicativeParsers
parseInBibFilePoseidon.CLI.OptparseApplicativeParsers
parseInGenoFilePoseidon.CLI.OptparseApplicativeParsers
parseInGenoOnePoseidon.CLI.OptparseApplicativeParsers
parseInGenoSepPoseidon.CLI.OptparseApplicativeParsers
parseInGenotypeDatasetPoseidon.CLI.OptparseApplicativeParsers
parseInGenotypeFormatPoseidon.CLI.OptparseApplicativeParsers
parseInGenoWithoutSNPSetPoseidon.CLI.OptparseApplicativeParsers
parseInIndFilePoseidon.CLI.OptparseApplicativeParsers
parseInJannoFilePoseidon.CLI.OptparseApplicativeParsers
parseInPoseidonYamlFilePoseidon.CLI.OptparseApplicativeParsers
parseInputPlinkPopModePoseidon.CLI.OptparseApplicativeParsers
parseInSnpFilePoseidon.CLI.OptparseApplicativeParsers
parseInSSFilePoseidon.CLI.OptparseApplicativeParsers
parseIntersectPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalIdStripRegexPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalJannoColumnsPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalOutSpecPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalOverridePoseidon.CLI.OptparseApplicativeParsers
parseJannocoalSourceKeyPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalSourceSpecPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalTargetFilePoseidon.CLI.OptparseApplicativeParsers
parseJannocoalTargetKeyPoseidon.CLI.OptparseApplicativeParsers
parseKeyFilePoseidon.CLI.OptparseApplicativeParsers
parseListEntityPoseidon.CLI.OptparseApplicativeParsers
parseLogPoseidon.CLI.OptparseApplicativeParsers
parseLogModePoseidon.CLI.OptparseApplicativeParsers
parseMaybeArchiveNamePoseidon.CLI.OptparseApplicativeParsers
parseMaybeCertFilesPoseidon.CLI.OptparseApplicativeParsers
parseMaybeContributorsPoseidon.CLI.OptparseApplicativeParsers
parseMaybeLogPoseidon.CLI.OptparseApplicativeParsers
parseMaybeOutPackageNamePoseidon.CLI.OptparseApplicativeParsers
parseMaybeOutPackagePathPoseidon.CLI.OptparseApplicativeParsers
parseMaybePackageVersionUpdatePoseidon.CLI.OptparseApplicativeParsers
parseMaybePoseidonVersionPoseidon.CLI.OptparseApplicativeParsers
parseMaybeSnpFilePoseidon.CLI.OptparseApplicativeParsers
parseMaybeZipDirPoseidon.CLI.OptparseApplicativeParsers
parseMinimalOutputFlagPoseidon.CLI.OptparseApplicativeParsers
parseMinimalOutputSwitchPoseidon.CLI.OptparseApplicativeParsers
parseNoChecksumUpdatePoseidon.CLI.OptparseApplicativeParsers
parseNoExitCodePoseidon.CLI.OptparseApplicativeParsers
parseOnlyLatestPoseidon.CLI.OptparseApplicativeParsers
parseOutGenotypeFormatPoseidon.CLI.OptparseApplicativeParsers
parseOutOnlyGenoFlagPoseidon.CLI.OptparseApplicativeParsers
parseOutOnlyGenoSwitchPoseidon.CLI.OptparseApplicativeParsers
parseOutPackagePathPoseidon.CLI.OptparseApplicativeParsers
parseOutputOrderedPoseidon.CLI.OptparseApplicativeParsers
parseOutputPlinkPopModePoseidon.CLI.OptparseApplicativeParsers
parsePackageWisePoseidon.CLI.OptparseApplicativeParsers
parsePortPoseidon.CLI.OptparseApplicativeParsers
parsePreservePymlFlagPoseidon.CLI.OptparseApplicativeParsers
parseRawOutputPoseidon.CLI.OptparseApplicativeParsers
parseRemoteDummyPoseidon.CLI.OptparseApplicativeParsers
parseRemoteURLPoseidon.CLI.OptparseApplicativeParsers
parseRemoveOldPoseidon.CLI.OptparseApplicativeParsers
parseRepoLocationPoseidon.CLI.OptparseApplicativeParsers
parseTestModePoseidon.CLI.OptparseApplicativeParsers
parseTimetravelChronPathPoseidon.CLI.OptparseApplicativeParsers
parseTimetravelSourcePathPoseidon.CLI.OptparseApplicativeParsers
parseTypeCSVPoseidon.ColumnTypesUtils
parseUpgradePoseidon.CLI.OptparseApplicativeParsers
parseValidatePlanPoseidon.CLI.OptparseApplicativeParsers
parseVersionPoseidon.Version
parseVersionComponentPoseidon.CLI.OptparseApplicativeParsers
pastePoseidon.CLI.Summarise
PatchPoseidon.Version
pDescriptionPoseidon.ServerClient
pIsLatestPoseidon.ServerClient
pLastModifiedPoseidon.ServerClient
PlinkPopNameAsBothPoseidon.Utils
PlinkPopNameAsFamilyPoseidon.Utils
PlinkPopNameAsPhenotypePoseidon.Utils
PlinkPopNameModePoseidon.Utils
PlusPoseidon.ColumnTypes, Poseidon.Janno
pNrIndividualsPoseidon.ServerClient
PoseidonBibTeXExceptionPoseidon.Utils, Poseidon.Package
PoseidonCantPreserveExceptionPoseidon.Utils, Poseidon.Package
PoseidonChronicleExceptionPoseidon.Utils, Poseidon.Package
PoseidonCollectionExceptionPoseidon.Utils, Poseidon.Package
PoseidonCrossFileConsistencyExceptionPoseidon.Utils, Poseidon.Package
PoseidonEmptyForgeExceptionPoseidon.Utils, Poseidon.Package
PoseidonEmptyOutPacNameExceptionPoseidon.Utils, Poseidon.Package
PoseidonEntityPoseidon.EntityTypes
PoseidonExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileChecksumExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileConsistencyExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileExistenceExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileRowExceptionPoseidon.Utils, Poseidon.Package
PoseidonForgeEntitiesExceptionPoseidon.Utils, Poseidon.Package
PoseidonFStatsFormatExceptionPoseidon.Utils, Poseidon.Package
PoseidonGenericExceptionPoseidon.Utils, Poseidon.Package
PoseidonGenotypeExceptionPoseidon.Utils, Poseidon.Package
PoseidonGenotypeExceptionForwardPoseidon.Utils, Poseidon.Package
PoseidonGitExceptionPoseidon.Utils, Poseidon.Package
PoseidonHttpExceptionForwardPoseidon.Utils, Poseidon.Package
PoseidonIndSearchExceptionPoseidon.Utils, Poseidon.Package
PoseidonIOPoseidon.Utils
PoseidonNewPackageConstructionExceptionPoseidon.Utils, Poseidon.Package
PoseidonPackage 
1 (Type/Class)Poseidon.Package
2 (Data Constructor)Poseidon.Package
PoseidonPackageChronicle 
1 (Type/Class)Poseidon.Chronicle
2 (Data Constructor)Poseidon.Chronicle
PoseidonPackageExceptionPoseidon.Utils, Poseidon.Package
PoseidonPackageMissingVersionExceptionPoseidon.Utils, Poseidon.Package
PoseidonPackageVersionExceptionPoseidon.Utils, Poseidon.Package
PoseidonPoseidonEntityParsingExceptionPoseidon.Utils, Poseidon.Package
PoseidonRemoteJSONParsingExceptionPoseidon.Utils, Poseidon.Package
PoseidonServerCommunicationExceptionPoseidon.Utils, Poseidon.Package
PoseidonUnequalBaseDirExceptionPoseidon.Utils, Poseidon.Package
PoseidonUnzipExceptionPoseidon.Utils, Poseidon.Package
PoseidonYamlParseExceptionPoseidon.Utils, Poseidon.Package
PoseidonYamlStruct 
1 (Type/Class)Poseidon.Package
2 (Data Constructor)Poseidon.Package
posPacBaseDirPoseidon.Package
posPacBibPoseidon.Package
posPacBibFilePoseidon.Package
posPacBibFileChkSumPoseidon.Package
posPacChangelogFilePoseidon.Package
posPacContributorPoseidon.Package
posPacDescriptionPoseidon.Package
posPacGenotypeDataPoseidon.Package
posPacJannoPoseidon.Package
posPacJannoFilePoseidon.Package
posPacJannoFileChkSumPoseidon.Package
posPacLastModifiedPoseidon.Package
posPacNameAndVersionPoseidon.Package
posPacPoseidonVersionPoseidon.Package
posPacReadmeFilePoseidon.Package
posPacSeqSourcePoseidon.Package
posPacSeqSourceFilePoseidon.Package
posPacSeqSourceFileChkSumPoseidon.Package
pPacPoseidon.ServerClient
pPosVersionPoseidon.ServerClient
PresenceCountablePoseidon.CLI.Survey
preservePymlPoseidon.CLI.Forge
PreservePymlOutPoseidon.CLI.Forge
printDownloadProgressPoseidon.CLI.Fetch
printFrequencyPoseidon.CLI.Summarise
printFrequencyMaybePoseidon.CLI.Summarise
printFrequencyMaybeStringPoseidon.CLI.Summarise
printFrequencyStringPoseidon.CLI.Summarise
printSNPCopyProgressPoseidon.GenotypeData
printVPoseidon.CLI.Fetch
printVsPoseidon.CLI.Fetch
processApiResponsePoseidon.ServerClient
ProductionPoseidon.Utils
qArchivePoseidon.ServerClient
qDefaultPoseidon.ServerClient
qPacVersionPoseidon.ServerClient
readBibTeXFilePoseidon.BibFile
readChroniclePoseidon.Chronicle
readContributorStringPoseidon.CLI.OptparseApplicativeParsers
readEntitiesFromFilePoseidon.EntityTypes
readEntitiesFromStringPoseidon.EntityTypes
readEntityInputsPoseidon.EntityTypes
readJannoFilePoseidon.Janno
readPlinkPopNamePoseidon.CLI.OptparseApplicativeParsers
readPoseidonPackagePoseidon.Package
readPoseidonPackageCollectionPoseidon.Package
readPoseidonPackageCollectionWithSkipIndicatorPoseidon.Package
readSeqSourceFilePoseidon.SequencingSource
readSeqSourceFileRowPoseidon.SequencingSource
readServerIndInfoPoseidon.CLI.Fetch
readServerPackageInfoPoseidon.CLI.Fetch
recodeAllelesPoseidon.GenotypeData
RectifyOptions 
1 (Type/Class)Poseidon.CLI.Rectify
2 (Data Constructor)Poseidon.CLI.Rectify
ReferenceGenomePoseidon.ColumnTypes, Poseidon.Janno
removeUselessSuffixPoseidon.Janno
renderCsvParseErrorPoseidon.Janno
renderJannoCompletenessPoseidon.CLI.Survey
renderMismatchPoseidon.Package
renderNameWithVersionPoseidon.EntityTypes
renderPackageWithCompletenessPoseidon.CLI.Survey
renderPoseidonExceptionPoseidon.Utils
RepoLocalPoseidon.CLI.List
RepoLocationSpecPoseidon.CLI.List
RepoRemotePoseidon.CLI.List
reportDuplicateIndividualsPoseidon.EntityTypes
resolveEntityIndicesPoseidon.EntityTypes
resolveUniqueEntityIndicesPoseidon.EntityTypes
roundToPoseidon.MathHelpers
roundToStrPoseidon.MathHelpers
runChroniclePoseidon.CLI.Chronicle
runFetchPoseidon.CLI.Fetch
runForgePoseidon.CLI.Forge
runGenoconvertPoseidon.CLI.Genoconvert
runInitPoseidon.CLI.Init
runJannocoalescePoseidon.CLI.Jannocoalesce
runListPoseidon.CLI.List
runRectifyPoseidon.CLI.Rectify
runServerPoseidon.CLI.Serve
runServerMainThreadPoseidon.CLI.Serve
runSummarisePoseidon.CLI.Summarise
runSurveyPoseidon.CLI.Survey
runTimetravelPoseidon.CLI.Timetravel
runValidatePoseidon.CLI.Validate
sAdditionalColumnsPoseidon.SequencingSource
SecondPoseidon.ColumnTypes, Poseidon.Janno
selectIndicesPoseidon.GenotypeData
seqSourceHeaderPoseidon.SequencingSource
seqSourceHeaderStringPoseidon.SequencingSource
seqSourceRefHashMapPoseidon.SequencingSource
SeqSourceRow 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
SeqSourceRows 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
ServeOptions 
1 (Type/Class)Poseidon.CLI.Serve
2 (Data Constructor)Poseidon.CLI.Serve
ServerApiReturnType 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
ServerLogPoseidon.Utils
SexPoseidon.Janno
sFastqASPERAPoseidon.SequencingSource
sFastqBytesPoseidon.SequencingSource
sFastqFTPPoseidon.SequencingSource
sFastqMD5Poseidon.SequencingSource
sFirstPublicPoseidon.SequencingSource
sfSexPoseidon.ColumnTypes, Poseidon.Janno
ShotgunPoseidon.ColumnTypes, Poseidon.Janno
showParsecErrPoseidon.Utils
showPoseidonVersionPoseidon.PoseidonVersion
SignedEntitiesListPoseidon.EntityTypes
SignedEntityPoseidon.EntityTypes
SimpleDate 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
SimpleLogPoseidon.Utils
sInstrumentModelPoseidon.SequencingSource
sInstrumentPlatformPoseidon.SequencingSource
SixthToTenthPoseidon.ColumnTypes, Poseidon.Janno
sLastUpdatedPoseidon.SequencingSource
sLibraryBuiltPoseidon.SequencingSource
sLibraryLayoutPoseidon.SequencingSource
sLibraryNamePoseidon.SequencingSource
sLibrarySourcePoseidon.SequencingSource
sLibraryStrategyPoseidon.SequencingSource
snapYamlChronicleVersionPoseidon.Chronicle
snapYamlDescriptionPoseidon.Chronicle
snapYamlLastModifiedPoseidon.Chronicle
snapYamlPackagesPoseidon.Chronicle
snapYamlTitlePoseidon.Chronicle
snpFilePoseidon.GenotypeData
snpFileChkSumPoseidon.GenotypeData
snpSetPoseidon.GenotypeData
SNPSet1240KPoseidon.GenotypeData
SNPSetHumanOriginsPoseidon.GenotypeData
snpSetMergePoseidon.GenotypeData
snpSetMergeListPoseidon.GenotypeData
SNPSetOtherPoseidon.GenotypeData
SNPSetSpecPoseidon.GenotypeData
sortTupelsBySndDescPoseidon.CLI.Summarise
SpecificIndPoseidon.EntityTypes
sPoseidonIDPoseidon.SequencingSource
sReadCountPoseidon.SequencingSource
sRunAccessionPoseidon.SequencingSource
SSPoseidon.ColumnTypes, Poseidon.Janno
sSampleAccessionPoseidon.SequencingSource
sSampleAliasPoseidon.SequencingSource
sSecondarySampleAccessionPoseidon.SequencingSource
SSFDSPoseidon.SequencingSource
SSFHalfPoseidon.SequencingSource
SSFLibraryBuiltPoseidon.SequencingSource
SSFMinusPoseidon.SequencingSource
SSFPlusPoseidon.SequencingSource
SSFSSPoseidon.SequencingSource
SSFUDGPoseidon.SequencingSource
sStudyAccessionPoseidon.SequencingSource
sSubmittedFTPPoseidon.SequencingSource
stdevPoseidon.MathHelpers
sUDGPoseidon.SequencingSource
summariseJannoRowsPoseidon.CLI.Summarise
SummariseOptions 
1 (Type/Class)Poseidon.CLI.Summarise
2 (Data Constructor)Poseidon.CLI.Summarise
sumNonMissingSNPsPoseidon.CLI.Forge
SurveyOptions 
1 (Type/Class)Poseidon.CLI.Survey
2 (Data Constructor)Poseidon.CLI.Survey
TestingPoseidon.Utils
testLogPoseidon.Utils
TestModePoseidon.Utils
ThirdToFifthPoseidon.ColumnTypes, Poseidon.Janno
TimetravelOptions 
1 (Type/Class)Poseidon.CLI.Timetravel
2 (Data Constructor)Poseidon.CLI.Timetravel
TwistAncientDNAPoseidon.ColumnTypes, Poseidon.Janno
underlyingEntityPoseidon.EntityTypes
UnequalLocalRemotePoseidon.CLI.Fetch
uniqueNumberPoseidon.CLI.Summarise
uniquePOPoseidon.Utils
uniqueROPoseidon.Utils
UnknownPoseidon.Janno
UnrelatedPoseidon.ColumnTypes, Poseidon.Janno
unzipPackagePoseidon.CLI.Fetch
UpdateChronPoseidon.CLI.Chronicle
updateChroniclePoseidon.Chronicle
updateThreeComponentVersionPoseidon.Version
usePoseidonLoggerPoseidon.Utils
validateGenoPoseidon.Package
ValidateOptions 
1 (Type/Class)Poseidon.CLI.Validate
2 (Data Constructor)Poseidon.CLI.Validate
ValidatePlanPoseidon.CLI.Validate
validPoseidonVersionsPoseidon.PoseidonVersion
ValPlanBaseDirsPoseidon.CLI.Validate
ValPlanBibPoseidon.CLI.Validate
ValPlanGenoPoseidon.CLI.Validate
ValPlanJannoPoseidon.CLI.Validate
ValPlanPoseidonYamlPoseidon.CLI.Validate
ValPlanSSFPoseidon.CLI.Validate
VerboseLogPoseidon.Utils
VersionComponentPoseidon.Version
warnSeqSourceConsistencyPoseidon.SequencingSource
writeBibTeXFilePoseidon.BibFile
writeChroniclePoseidon.Chronicle
writeJannoFilePoseidon.Janno
writePoseidonPackagePoseidon.Package
writeSeqSourceFilePoseidon.SequencingSource
zipWithPaddingPoseidon.Package
_aeArchiveNamePoseidon.ServerClient
_aeServerURLPoseidon.ServerClient
_apiMessagesPoseidon.ServerClient
_apiResponsePoseidon.ServerClient
_archiveEndPoseidon.CLI.Fetch
_chronicleBaseDirsPoseidon.CLI.Chronicle
_chronicleOperationPoseidon.CLI.Chronicle
_entityInputPoseidon.CLI.Fetch
_envErrorLengthPoseidon.Utils
_envInputPlinkModePoseidon.Utils
_envLogActionPoseidon.Utils
_envTestModePoseidon.Utils
_forgeEntityInputPoseidon.CLI.Forge
_forgeGenoSourcesPoseidon.CLI.Forge
_forgeIntersectPoseidon.CLI.Forge
_forgeOutFormatPoseidon.CLI.Forge
_forgeOutModePoseidon.CLI.Forge
_forgeOutPacNamePoseidon.CLI.Forge
_forgeOutPacPathPoseidon.CLI.Forge
_forgeOutputOrderedPoseidon.CLI.Forge
_forgeOutputPlinkPopModePoseidon.CLI.Forge
_forgePackageWisePoseidon.CLI.Forge
_forgeSnpFilePoseidon.CLI.Forge
_genoconvertGenoSourcesPoseidon.CLI.Genoconvert
_genoconvertOnlyLatestPoseidon.CLI.Genoconvert
_genoConvertOutFormatPoseidon.CLI.Genoconvert
_genoConvertOutOnlyGenoPoseidon.CLI.Genoconvert
_genoconvertOutPlinkPopModePoseidon.CLI.Genoconvert
_genoconvertRemoveOldPoseidon.CLI.Genoconvert
_genoMaybeOutPackagePathPoseidon.CLI.Genoconvert
_initGenoDataPoseidon.CLI.Init
_initMinimalPoseidon.CLI.Init
_initPacNamePoseidon.CLI.Init
_initPacPathPoseidon.CLI.Init
_jaBaseDirsPoseidon.CLI.Fetch
_jannocoalesceIdStripPoseidon.CLI.Jannocoalesce
_jannocoalesceJannoColumnsPoseidon.CLI.Jannocoalesce
_jannocoalesceOutSpecPoseidon.CLI.Jannocoalesce
_jannocoalesceOverwriteColumnsPoseidon.CLI.Jannocoalesce
_jannocoalesceSourcePoseidon.CLI.Jannocoalesce
_jannocoalesceSourceKeyPoseidon.CLI.Jannocoalesce
_jannocoalesceTargetPoseidon.CLI.Jannocoalesce
_jannocoalesceTargetKeyPoseidon.CLI.Jannocoalesce
_listListEntityPoseidon.CLI.List
_listOnlyLatestPoseidon.CLI.List
_listRawOutputPoseidon.CLI.List
_listRepoLocationPoseidon.CLI.List
_orcidChecksumPoseidon.Contributor
_orcidNumsPoseidon.Contributor
_pacVerUpLogPoseidon.CLI.Rectify
_pacVerUpVersionComponentPoseidon.CLI.Rectify
_posYamlBibFilePoseidon.Package
_posYamlBibFileChkSumPoseidon.Package
_posYamlChangelogFilePoseidon.Package
_posYamlContributorPoseidon.Package
_posYamlDescriptionPoseidon.Package
_posYamlGenotypeDataPoseidon.Package
_posYamlJannoFilePoseidon.Package
_posYamlJannoFileChkSumPoseidon.Package
_posYamlLastModifiedPoseidon.Package
_posYamlPackageVersionPoseidon.Package
_posYamlPoseidonVersionPoseidon.Package
_posYamlReadmeFilePoseidon.Package
_posYamlSeqSourceFilePoseidon.Package
_posYamlSeqSourceFileChkSumPoseidon.Package
_posYamlTitlePoseidon.Package
_readOptFullGenoPoseidon.Package
_readOptGenoCheckPoseidon.Package
_readOptIgnoreChecksumsPoseidon.Package
_readOptIgnoreGenoPoseidon.Package
_readOptIgnorePosVersionPoseidon.Package
_readOptOnlyLatestPoseidon.Package
_rectifyBaseDirsPoseidon.CLI.Rectify
_rectifyChecksumBibPoseidon.CLI.Rectify
_rectifyChecksumGenoPoseidon.CLI.Rectify
_rectifyChecksumJannoPoseidon.CLI.Rectify
_rectifyChecksumsPoseidon.CLI.Rectify
_rectifyChecksumSSFPoseidon.CLI.Rectify
_rectifyIgnorePoseidonVersionPoseidon.CLI.Rectify
_rectifyNewContributorsPoseidon.CLI.Rectify
_rectifyOnlyLatestPoseidon.CLI.Rectify
_rectifyPackageVersionUpdatePoseidon.CLI.Rectify
_rectifyPoseidonVersionPoseidon.CLI.Rectify
_summariseBaseDirsPoseidon.CLI.Summarise
_summariseRawOutputPoseidon.CLI.Summarise
_surveyBaseDirsPoseidon.CLI.Survey
_surveyOnlyLatestPoseidon.CLI.Survey
_surveyRawOutputPoseidon.CLI.Survey
_timetravelBaseDirsPoseidon.CLI.Timetravel
_timetravelChronicleFilePoseidon.CLI.Timetravel
_timetravelSourceDirPoseidon.CLI.Timetravel
_validateNoExitCodePoseidon.CLI.Validate
_validateOnlyLatestPoseidon.CLI.Validate
_validatePlanPoseidon.CLI.Validate
_valPlanBaseDirsPoseidon.CLI.Validate
_valPlanFullGenoPoseidon.CLI.Validate
_valPlanIgnoreChecksumsPoseidon.CLI.Validate
_valPlanIgnoreDuplicatesPoseidon.CLI.Validate
_valPlanIgnoreGenoPoseidon.CLI.Validate
_valPlanIgnorePosVersionPoseidon.CLI.Validate
\ No newline at end of file diff --git a/doc-index-B.html b/doc-index-B.html index dca23182..9f751ee1 100644 --- a/doc-index-B.html +++ b/doc-index-B.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - B)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - B

BCADAge 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
BibEntry 
1 (Type/Class)Poseidon.BibFile
2 (Data Constructor)Poseidon.BibFile
bibEntryFieldsPoseidon.BibFile
bibEntryIdPoseidon.BibFile
bibEntryTypePoseidon.BibFile
BibTeXPoseidon.BibFile
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - B)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - B

BibEntry 
1 (Type/Class)Poseidon.BibFile
2 (Data Constructor)Poseidon.BibFile
bibEntryFieldsPoseidon.BibFile
bibEntryIdPoseidon.BibFile
bibEntryTypePoseidon.BibFile
BibTeXPoseidon.BibFile
\ No newline at end of file diff --git a/doc-index-C.html b/doc-index-C.html index f7010f3f..eb6bdced 100644 --- a/doc-index-C.html +++ b/doc-index-C.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - C)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - C

C14Poseidon.Janno
CharCountPoseidon.Utils
CharInfPoseidon.Utils
checkAtLeastOnePoseidonIDPoseidon.SequencingSource
checkFilePoseidon.Utils
checkIfAllEntitiesExistPoseidon.EntityTypes
checkRunsUniquePoseidon.SequencingSource
ChecksumAllPoseidon.CLI.Rectify
ChecksumNonePoseidon.CLI.Rectify
ChecksumsDetailPoseidon.CLI.Rectify
ChecksumsToRectifyPoseidon.CLI.Rectify
ChronicleOptions 
1 (Type/Class)Poseidon.CLI.Chronicle
2 (Data Constructor)Poseidon.CLI.Chronicle
chroniclePackagesPoseidon.Chronicle
ChronOperationPoseidon.CLI.Chronicle
cliArchiveBaseDirsPoseidon.CLI.Serve
cliCertFilesPoseidon.CLI.Serve
cliIgnoreChecksumsPoseidon.CLI.Serve
cliPortPoseidon.CLI.Serve
cliZipDirPoseidon.CLI.Serve
CoalesceJannoColumnSpecPoseidon.CLI.Jannocoalesce
concludePoseidon.CLI.Validate
ContextualPoseidon.Janno
contributorEmailPoseidon.Contributor
contributorNamePoseidon.Contributor
contributorORCIDPoseidon.Contributor
ContributorSpec 
1 (Type/Class)Poseidon.Contributor
2 (Data Constructor)Poseidon.Contributor
contributorSpecParserPoseidon.Contributor
convertGenoToPoseidon.CLI.Genoconvert
copyDirectoryPoseidon.CLI.Timetravel
CounterCopiedPoseidon.CLI.Jannocoalesce
CounterMismatchesPoseidon.CLI.Jannocoalesce
countPresencePoseidon.CLI.Survey
CreateChronPoseidon.CLI.Chronicle
createMinimalJannoPoseidon.Janno
createMinimalSamplePoseidon.Janno
CsvNamedRecord 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - C)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - C

C14Poseidon.ColumnTypes, Poseidon.Janno
CharCountPoseidon.Utils
CharInfPoseidon.Utils
checkAtLeastOnePoseidonIDPoseidon.SequencingSource
checkFilePoseidon.Utils
checkIfAllEntitiesExistPoseidon.EntityTypes
checkRunsUniquePoseidon.SequencingSource
ChecksumAllPoseidon.CLI.Rectify
ChecksumNonePoseidon.CLI.Rectify
ChecksumsDetailPoseidon.CLI.Rectify
ChecksumsToRectifyPoseidon.CLI.Rectify
ChronicleOptions 
1 (Type/Class)Poseidon.CLI.Chronicle
2 (Data Constructor)Poseidon.CLI.Chronicle
chroniclePackagesPoseidon.Chronicle
ChronOperationPoseidon.CLI.Chronicle
cliArchiveBaseDirsPoseidon.CLI.Serve
cliCertFilesPoseidon.CLI.Serve
cliIgnoreChecksumsPoseidon.CLI.Serve
cliPortPoseidon.CLI.Serve
cliZipDirPoseidon.CLI.Serve
CoalesceJannoColumnSpecPoseidon.CLI.Jannocoalesce
concludePoseidon.CLI.Validate
ContextualPoseidon.ColumnTypes, Poseidon.Janno
contributorEmailPoseidon.Contributor
contributorNamePoseidon.Contributor
contributorORCIDPoseidon.Contributor
ContributorSpec 
1 (Type/Class)Poseidon.Contributor
2 (Data Constructor)Poseidon.Contributor
contributorSpecParserPoseidon.Contributor
convertGenoToPoseidon.CLI.Genoconvert
copyDirectoryPoseidon.CLI.Timetravel
CounterCopiedPoseidon.CLI.Jannocoalesce
CounterMismatchesPoseidon.CLI.Jannocoalesce
countPresencePoseidon.CLI.Survey
CreateChronPoseidon.CLI.Chronicle
createMinimalJannoPoseidon.Janno
createMinimalSamplePoseidon.Janno
CsvNamedRecord 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
\ No newline at end of file diff --git a/doc-index-D.html b/doc-index-D.html index 592fb5c6..4fb898d0 100644 --- a/doc-index-D.html +++ b/doc-index-D.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - D)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - D

decodingOptionsPoseidon.Janno
DefaultLogPoseidon.Utils
defaultPackageReadOptionsPoseidon.Package
determineNonExistentEntitiesPoseidon.EntityTypes
determinePackageOutNamePoseidon.Utils
determinePackageStatePoseidon.CLI.Fetch
determineRelevantPackagesPoseidon.EntityTypes
DiploidPoseidon.Janno
downloadAndUnzipPackagePoseidon.CLI.Fetch
downloadPackagePoseidon.CLI.Fetch
DSPoseidon.Janno
dummyBibEntryPoseidon.BibFile
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - D)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - D

decodingOptionsPoseidon.Janno
DefaultLogPoseidon.Utils
defaultPackageReadOptionsPoseidon.Package
determineNonExistentEntitiesPoseidon.EntityTypes
determinePackageOutNamePoseidon.Utils
determinePackageStatePoseidon.CLI.Fetch
determineRelevantPackagesPoseidon.EntityTypes
DiploidPoseidon.ColumnTypes, Poseidon.Janno
downloadAndUnzipPackagePoseidon.CLI.Fetch
downloadPackagePoseidon.CLI.Fetch
DSPoseidon.ColumnTypes, Poseidon.Janno
dummyBibEntryPoseidon.BibFile
\ No newline at end of file diff --git a/doc-index-E.html b/doc-index-E.html index 98b58cf4..97a2f28f 100644 --- a/doc-index-E.html +++ b/doc-index-E.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - E)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - E

encodingOptionsPoseidon.Janno
EntitiesDirectPoseidon.EntityTypes
EntitiesFromFilePoseidon.EntityTypes
EntitiesListPoseidon.EntityTypes
entitiesListPPoseidon.EntityTypes
EntityInputPoseidon.EntityTypes
EntitySpecPoseidon.EntityTypes
entitySpecParserPoseidon.EntityTypes
Env 
1 (Type/Class)Poseidon.Utils
2 (Data Constructor)Poseidon.Utils
envErrorLengthPoseidon.Utils
envInputPlinkModePoseidon.Utils
envLogActionPoseidon.Utils
EqualLocalRemotePoseidon.CLI.Fetch
ErrorLengthPoseidon.Utils
ExcludePoseidon.EntityTypes
ExcludeJannoColumnsPoseidon.CLI.Jannocoalesce
explicitNAPoseidon.Janno
ExtendedIndividualInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
extIndInfo2IndInfoCollectionPoseidon.ServerClient
extIndInfoAddColsPoseidon.ServerClient
extIndInfoGroupsPoseidon.ServerClient
extIndInfoIsLatestPoseidon.ServerClient
extIndInfoNamePoseidon.ServerClient
extIndInfoPacPoseidon.ServerClient
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - E)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - E

encodingOptionsPoseidon.Janno
EntitiesDirectPoseidon.EntityTypes
EntitiesFromFilePoseidon.EntityTypes
EntitiesListPoseidon.EntityTypes
entitiesListPPoseidon.EntityTypes
EntityInputPoseidon.EntityTypes
EntitySpecPoseidon.EntityTypes
entitySpecParserPoseidon.EntityTypes
Env 
1 (Type/Class)Poseidon.Utils
2 (Data Constructor)Poseidon.Utils
envErrorLengthPoseidon.Utils
envInputPlinkModePoseidon.Utils
envLogActionPoseidon.Utils
EqualLocalRemotePoseidon.CLI.Fetch
ErrorLengthPoseidon.Utils
ExcludePoseidon.EntityTypes
ExcludeJannoColumnsPoseidon.CLI.Jannocoalesce
explicitNAPoseidon.Janno
ExtendedIndividualInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
extIndInfo2IndInfoCollectionPoseidon.ServerClient
extIndInfoAddColsPoseidon.ServerClient
extIndInfoGroupsPoseidon.ServerClient
extIndInfoIsLatestPoseidon.ServerClient
extIndInfoNamePoseidon.ServerClient
extIndInfoPacPoseidon.ServerClient
\ No newline at end of file diff --git a/doc-index-F.html b/doc-index-F.html index 9ebea9fc..83c0245b 100644 --- a/doc-index-F.html +++ b/doc-index-F.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - F)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - F

FemalePoseidon.Janno
FetchOptions 
1 (Type/Class)Poseidon.CLI.Fetch
2 (Data Constructor)Poseidon.CLI.Fetch
fillMissingSnpSetsPoseidon.CLI.Forge
filterBibEntriesPoseidon.CLI.Forge
filterLookupPoseidon.Janno
filterLookupOptionalPoseidon.Janno
filterSeqSourceRowsPoseidon.CLI.Forge
filterToRelevantPackagesPoseidon.Package
findAllPoseidonYmlFilesPoseidon.Package
FirstPoseidon.Janno
ForgeOptions 
1 (Type/Class)Poseidon.CLI.Forge
2 (Data Constructor)Poseidon.CLI.Forge
ForgeOutModePoseidon.CLI.Forge
formatPoseidon.GenotypeData
frequencyPoseidon.CLI.Summarise
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - F)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - F

FemalePoseidon.Janno
FetchOptions 
1 (Type/Class)Poseidon.CLI.Fetch
2 (Data Constructor)Poseidon.CLI.Fetch
fillMissingSnpSetsPoseidon.CLI.Forge
filterBibEntriesPoseidon.CLI.Forge
filterLookupPoseidon.Janno
filterLookupOptionalPoseidon.Janno
filterSeqSourceRowsPoseidon.CLI.Forge
filterToRelevantPackagesPoseidon.Package
findAllPoseidonYmlFilesPoseidon.Package
FirstPoseidon.ColumnTypes, Poseidon.Janno
ForgeOptions 
1 (Type/Class)Poseidon.CLI.Forge
2 (Data Constructor)Poseidon.CLI.Forge
ForgeOutModePoseidon.CLI.Forge
formatPoseidon.GenotypeData
frequencyPoseidon.CLI.Summarise
\ No newline at end of file diff --git a/doc-index-G.html b/doc-index-G.html index 76bffe8d..d7bc50f9 100644 --- a/doc-index-G.html +++ b/doc-index-G.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - G)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - G

GenoconvertOptions 
1 (Type/Class)Poseidon.CLI.Genoconvert
2 (Data Constructor)Poseidon.CLI.Genoconvert
GenoDataSourcePoseidon.GenotypeData
GenoDirectPoseidon.GenotypeData
genoFilePoseidon.GenotypeData
genoFileChkSumPoseidon.GenotypeData
GenoInputPoseidon.CLI.OptparseApplicativeParsers
GenoOutPoseidon.CLI.Forge
GenotypeDataSpec 
1 (Type/Class)Poseidon.GenotypeData
2 (Data Constructor)Poseidon.GenotypeData
GenotypeFormatEigenstratPoseidon.GenotypeData
GenotypeFormatPlinkPoseidon.GenotypeData
GenotypeFormatSpecPoseidon.GenotypeData
getAllGroupInfoPoseidon.Package
getChecksumPoseidon.Utils
getConsensusSnpEntryPoseidon.GenotypeData
getCsvNRPoseidon.Janno
getExtendedIndividualInfoPoseidon.Package
getGenoDirectPoseidon.GenotypeData
getGitCommitHashPoseidon.Chronicle
getJannoListPoseidon.Janno
getJannoRowsFromPacPoseidon.Package
getJointGenotypeDataPoseidon.Package
getJointIndividualInfoPoseidon.Package
getJointJannoPoseidon.Package
getKeyFromJannoPoseidon.CLI.Jannocoalesce
getMaybeJannoListPoseidon.Janno
getPacBaseDirsPoseidon.GenotypeData
getPackageVersionPoseidon.Chronicle
getPacNamePoseidon.EntityTypes
getPacVersionPoseidon.EntityTypes
getRunAccessionPoseidon.SequencingSource
getSampleAccessionPoseidon.SequencingSource
getSeqSourceRowListPoseidon.SequencingSource
getStudyAccessionPoseidon.SequencingSource
gIsLatestPoseidon.ServerClient
gitCheckoutPoseidon.CLI.Timetravel
gNamePoseidon.ServerClient
gNrIndividualsPoseidon.ServerClient
gPackagePoseidon.ServerClient
GroupPoseidon.EntityTypes
GroupInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - G)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - G

GeneticSex 
1 (Type/Class)Poseidon.ColumnTypes, Poseidon.Janno
2 (Data Constructor)Poseidon.ColumnTypes, Poseidon.Janno
GenoconvertOptions 
1 (Type/Class)Poseidon.CLI.Genoconvert
2 (Data Constructor)Poseidon.CLI.Genoconvert
GenoDataSourcePoseidon.GenotypeData
GenoDirectPoseidon.GenotypeData
genoFilePoseidon.GenotypeData
genoFileChkSumPoseidon.GenotypeData
GenoInputPoseidon.CLI.OptparseApplicativeParsers
GenoOutPoseidon.CLI.Forge
GenotypeDataSpec 
1 (Type/Class)Poseidon.GenotypeData
2 (Data Constructor)Poseidon.GenotypeData
GenotypeFormatEigenstratPoseidon.GenotypeData
GenotypeFormatPlinkPoseidon.GenotypeData
GenotypeFormatSpecPoseidon.GenotypeData
getAllGroupInfoPoseidon.Package
getChecksumPoseidon.Utils
getConsensusSnpEntryPoseidon.GenotypeData
getCsvNRPoseidon.Janno
getExtendedIndividualInfoPoseidon.Package
getGenoDirectPoseidon.GenotypeData
getGitCommitHashPoseidon.Chronicle
getJannoRowsFromPacPoseidon.Package
getJointGenotypeDataPoseidon.Package
getJointIndividualInfoPoseidon.Package
getJointJannoPoseidon.Package
getKeyFromJannoPoseidon.CLI.Jannocoalesce
getListColumnPoseidon.Janno
getMaybeListColumnPoseidon.Janno
getPacBaseDirsPoseidon.GenotypeData
getPackageVersionPoseidon.Chronicle
getPacNamePoseidon.EntityTypes
getPacVersionPoseidon.EntityTypes
getRunAccessionPoseidon.SequencingSource
getSampleAccessionPoseidon.SequencingSource
getSeqSourceRowListPoseidon.SequencingSource
getStudyAccessionPoseidon.SequencingSource
gIsLatestPoseidon.ServerClient
gitCheckoutPoseidon.CLI.Timetravel
gNamePoseidon.ServerClient
gNrIndividualsPoseidon.ServerClient
gPackagePoseidon.ServerClient
GroupPoseidon.EntityTypes
GroupInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
GroupName 
1 (Type/Class)Poseidon.ColumnTypes, Poseidon.Janno
2 (Data Constructor)Poseidon.ColumnTypes, Poseidon.Janno
\ No newline at end of file diff --git a/doc-index-H.html b/doc-index-H.html index 4502a31f..5ecb4043 100644 --- a/doc-index-H.html +++ b/doc-index-H.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - H)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - H)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file diff --git a/doc-index-I.html b/doc-index-I.html index aee45a85..63860b3b 100644 --- a/doc-index-I.html +++ b/doc-index-I.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - I)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - I

IdenticalPoseidon.Janno
IncludePoseidon.EntityTypes
IncludeJannoColumnsPoseidon.CLI.Jannocoalesce
IndPoseidon.EntityTypes
indFilePoseidon.GenotypeData
indFileChkSumPoseidon.GenotypeData
indInfoConformsToEntitySpecsPoseidon.EntityTypes
indInfoGroupsPoseidon.EntityTypes
indInfoNamePoseidon.EntityTypes
indInfoPacPoseidon.EntityTypes
IndividualInfo 
1 (Type/Class)Poseidon.EntityTypes
2 (Data Constructor)Poseidon.EntityTypes
IndividualInfoCollectionPoseidon.EntityTypes
InitOptions 
1 (Type/Class)Poseidon.CLI.Init
2 (Data Constructor)Poseidon.CLI.Init
INSDCAnalysisPoseidon.Janno
INSDCBioSamplePoseidon.Janno
INSDCExperimentPoseidon.Janno
INSDCProjectPoseidon.Janno
INSDCRunPoseidon.Janno
INSDCSamplePoseidon.Janno
INSDCStudyPoseidon.Janno
isLatestInCollectionPoseidon.EntityTypes
isMD5HashPoseidon.SequencingSource
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - I)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - I

IdenticalPoseidon.ColumnTypes, Poseidon.Janno
IncludePoseidon.EntityTypes
IncludeJannoColumnsPoseidon.CLI.Jannocoalesce
IndPoseidon.EntityTypes
indFilePoseidon.GenotypeData
indFileChkSumPoseidon.GenotypeData
indInfoConformsToEntitySpecsPoseidon.EntityTypes
indInfoGroupsPoseidon.EntityTypes
indInfoNamePoseidon.EntityTypes
indInfoPacPoseidon.EntityTypes
IndividualInfo 
1 (Type/Class)Poseidon.EntityTypes
2 (Data Constructor)Poseidon.EntityTypes
IndividualInfoCollectionPoseidon.EntityTypes
InitOptions 
1 (Type/Class)Poseidon.CLI.Init
2 (Data Constructor)Poseidon.CLI.Init
INSDCAnalysis 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
INSDCBioSample 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
INSDCExperiment 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
INSDCProject 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
INSDCRun 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
INSDCSample 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
INSDCStudy 
1 (Data Constructor)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.SequencingSource
isLatestInCollectionPoseidon.EntityTypes
isMD5HashPoseidon.SequencingSource
\ No newline at end of file diff --git a/doc-index-J.html b/doc-index-J.html index ef2f1d8d..c0dca2d7 100644 --- a/doc-index-J.html +++ b/doc-index-J.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - J)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - J

jAdditionalColumnsPoseidon.Janno
jAlternativeIDsPoseidon.Janno
JannoCaptureTypePoseidon.Janno
JannoCoalesceOptions 
1 (Type/Class)Poseidon.CLI.Jannocoalesce
2 (Data Constructor)Poseidon.CLI.Jannocoalesce
JannoCountry 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoDateTypePoseidon.Janno
JannoGenotypePloidyPoseidon.Janno
jannoHeaderStringPoseidon.Janno
JannoLibraryBuiltPoseidon.Janno
JannoList 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoRow 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoRows 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoSex 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoSourceBaseDirsPoseidon.CLI.Jannocoalesce
JannoSourceSinglePoseidon.CLI.Jannocoalesce
JannoSourceSpecPoseidon.CLI.Jannocoalesce
JannoStringListPoseidon.Janno
JannoUDGPoseidon.Janno
jCaptureTypePoseidon.Janno
jCollectionIDPoseidon.Janno
jCommentsPoseidon.Janno
jContaminationPoseidon.Janno
jContaminationErrPoseidon.Janno
jContaminationMeasPoseidon.Janno
jContaminationNotePoseidon.Janno
jCountryPoseidon.Janno
jCountryISOPoseidon.Janno
jCoverageOnTargetsPoseidon.Janno
jDamagePoseidon.Janno
jDataPreparationPipelineURLPoseidon.Janno
jDateBCADMedianPoseidon.Janno
jDateBCADStartPoseidon.Janno
jDateBCADStopPoseidon.Janno
jDateC14LabnrPoseidon.Janno
jDateC14UncalBPPoseidon.Janno
jDateC14UncalBPErrPoseidon.Janno
jDateNotePoseidon.Janno
jDateTypePoseidon.Janno
jEndogenousPoseidon.Janno
jGeneticSexPoseidon.Janno
jGeneticSourceAccessionIDsPoseidon.Janno
jGenotypePloidyPoseidon.Janno
jGroupNamePoseidon.Janno
jKeywordsPoseidon.Janno
jLatitudePoseidon.Janno
jLibraryBuiltPoseidon.Janno
jLibraryNamesPoseidon.Janno
jLocationPoseidon.Janno
jLongitudePoseidon.Janno
jMTHaplogroupPoseidon.Janno
jNrLibrariesPoseidon.Janno
jNrSNPsPoseidon.Janno
joinEntriesPoseidon.GenotypeData
jPoseidonIDPoseidon.Janno
jPrimaryContactPoseidon.Janno
jPublicationPoseidon.Janno
jRelationDegreePoseidon.Janno
jRelationNotePoseidon.Janno
jRelationToPoseidon.Janno
jRelationTypePoseidon.Janno
jSitePoseidon.Janno
jSourceTissuePoseidon.Janno
jUDGPoseidon.Janno
JURI 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
jYHaplogroupPoseidon.Janno
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - J)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - J

jAdditionalColumnsPoseidon.Janno
jAlternativeIDsPoseidon.Janno
JannoAlternativeID 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoCaptureTypePoseidon.ColumnTypes, Poseidon.Janno
JannoCoalesceOptions 
1 (Type/Class)Poseidon.CLI.Jannocoalesce
2 (Data Constructor)Poseidon.CLI.Jannocoalesce
JannoCollectionID 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoComment 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoContamination 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoContaminationErr 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoContaminationMeas 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoContaminationNote 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoCountry 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoCountryISO 
1 (Type/Class)Poseidon.ColumnTypes, Poseidon.Janno
2 (Data Constructor)Poseidon.ColumnTypes, Poseidon.Janno
JannoCoverageOnTargets 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDamage 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDataPreparationPipelineURL 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateBCADMedian 
1 (Type/Class)Poseidon.ColumnTypes, Poseidon.Janno
2 (Data Constructor)Poseidon.ColumnTypes, Poseidon.Janno
JannoDateBCADStart 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateBCADStop 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateC14Labnr 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateC14UncalBP 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateC14UncalBPErr 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateNote 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoDateTypePoseidon.ColumnTypes, Poseidon.Janno
JannoEndogenous 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoGeneticSourceAccessionIDPoseidon.ColumnTypes
JannoGenotypePloidyPoseidon.ColumnTypes, Poseidon.Janno
jannoHeaderStringPoseidon.Janno
JannoKeyword 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoLatitude 
1 (Type/Class)Poseidon.ColumnTypes, Poseidon.Janno
2 (Data Constructor)Poseidon.ColumnTypes, Poseidon.Janno
JannoLibraryBuiltPoseidon.ColumnTypes, Poseidon.Janno
JannoLibraryName 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoLocation 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoLongitude 
1 (Type/Class)Poseidon.ColumnTypes, Poseidon.Janno
2 (Data Constructor)Poseidon.ColumnTypes, Poseidon.Janno
JannoMTHaplogroup 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoNrLibraries 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoNrSNPs 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoPrimaryContact 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoPublication 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoRelationDegreePoseidon.ColumnTypes, Poseidon.Janno
JannoRelationNote 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoRelationTo 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoRelationType 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoRow 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoRows 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
JannoSite 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoSourceBaseDirsPoseidon.CLI.Jannocoalesce
JannoSourceSinglePoseidon.CLI.Jannocoalesce
JannoSourceSpecPoseidon.CLI.Jannocoalesce
JannoSourceTissue 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
JannoStringListPoseidon.Janno
JannoUDGPoseidon.ColumnTypes, Poseidon.Janno
JannoYHaplogroup 
1 (Type/Class)Poseidon.ColumnTypes
2 (Data Constructor)Poseidon.ColumnTypes
jCaptureTypePoseidon.Janno
jCollectionIDPoseidon.Janno
jCommentsPoseidon.Janno
jContaminationPoseidon.Janno
jContaminationErrPoseidon.Janno
jContaminationMeasPoseidon.Janno
jContaminationNotePoseidon.Janno
jCountryPoseidon.Janno
jCountryISOPoseidon.Janno
jCoverageOnTargetsPoseidon.Janno
jDamagePoseidon.Janno
jDataPreparationPipelineURLPoseidon.Janno
jDateBCADMedianPoseidon.Janno
jDateBCADStartPoseidon.Janno
jDateBCADStopPoseidon.Janno
jDateC14LabnrPoseidon.Janno
jDateC14UncalBPPoseidon.Janno
jDateC14UncalBPErrPoseidon.Janno
jDateNotePoseidon.Janno
jDateTypePoseidon.Janno
jEndogenousPoseidon.Janno
jGeneticSexPoseidon.Janno
jGeneticSourceAccessionIDsPoseidon.Janno
jGenotypePloidyPoseidon.Janno
jGroupNamePoseidon.Janno
jKeywordsPoseidon.Janno
jLatitudePoseidon.Janno
jLibraryBuiltPoseidon.Janno
jLibraryNamesPoseidon.Janno
jLocationPoseidon.Janno
jLongitudePoseidon.Janno
jMTHaplogroupPoseidon.Janno
jNrLibrariesPoseidon.Janno
jNrSNPsPoseidon.Janno
joinEntriesPoseidon.GenotypeData
jPoseidonIDPoseidon.Janno
jPrimaryContactPoseidon.Janno
jPublicationPoseidon.Janno
jRelationDegreePoseidon.Janno
jRelationNotePoseidon.Janno
jRelationToPoseidon.Janno
jRelationTypePoseidon.Janno
jSitePoseidon.Janno
jSourceTissuePoseidon.Janno
jUDGPoseidon.Janno
JURI 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
jYHaplogroupPoseidon.Janno
\ No newline at end of file diff --git a/doc-index-L.html b/doc-index-L.html index 115903bb..6ee16785 100644 --- a/doc-index-L.html +++ b/doc-index-L.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - L)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - L

latestPoseidonVersionPoseidon.PoseidonVersion
Latitude 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
ListEntityPoseidon.CLI.List
ListGroupsPoseidon.CLI.List
ListIndividualsPoseidon.CLI.List
ListOptions 
1 (Type/Class)Poseidon.CLI.List
2 (Data Constructor)Poseidon.CLI.List
ListPackagesPoseidon.CLI.List
loadGenotypeDataPoseidon.GenotypeData
loadIndividualsPoseidon.GenotypeData
LogAPoseidon.Utils
logDebugPoseidon.Utils
logErrorPoseidon.Utils
logInfoPoseidon.Utils
LogModePoseidon.Utils
logWarningPoseidon.Utils
logWithEnvPoseidon.Utils
Longitude 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - L)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - L

latestPoseidonVersionPoseidon.PoseidonVersion
ListColumn 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
ListEntityPoseidon.CLI.List
ListGroupsPoseidon.CLI.List
ListIndividualsPoseidon.CLI.List
ListOptions 
1 (Type/Class)Poseidon.CLI.List
2 (Data Constructor)Poseidon.CLI.List
ListPackagesPoseidon.CLI.List
loadGenotypeDataPoseidon.GenotypeData
loadIndividualsPoseidon.GenotypeData
LogAPoseidon.Utils
logDebugPoseidon.Utils
logErrorPoseidon.Utils
logInfoPoseidon.Utils
LogModePoseidon.Utils
logWarningPoseidon.Utils
logWithEnvPoseidon.Utils
\ No newline at end of file diff --git a/doc-index-M.html b/doc-index-M.html index d376aece..5d40a9ad 100644 --- a/doc-index-M.html +++ b/doc-index-M.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - M)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - M

MajorPoseidon.Version
makeAccessionIDPoseidon.Janno
makeAccessionIDRunPoseidon.SequencingSource
makeAccessionIDSamplePoseidon.SequencingSource
makeAccessionIDStudyPoseidon.SequencingSource
makeChroniclePoseidon.Chronicle
makeJannoCountryUnsafePoseidon.Janno
makeLatitudePoseidon.Janno
makeLongitudePoseidon.Janno
makeMD5Poseidon.SequencingSource
makeNewJannoRowsPoseidon.CLI.Jannocoalesce
makePacNameAndVersionPoseidon.EntityTypes
makePseudoPackageFromGenotypeDataPoseidon.Package
makeSimpleDatePoseidon.SequencingSource
makeSSFLibraryBuiltPoseidon.SequencingSource
makeSSFUDGPoseidon.SequencingSource
MalePoseidon.Janno
matchWithOptionalStripPoseidon.CLI.Jannocoalesce
maybeShowPoseidon.CLI.Summarise
maybeShowStringPoseidon.CLI.Summarise
MD5 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
meanAndSdIntegerPoseidon.MathHelpers
meanAndSdRoundToPoseidon.MathHelpers
mergeRowPoseidon.CLI.Jannocoalesce
MinimalOutPoseidon.CLI.Forge
minimalOutputDocuPoseidon.CLI.OptparseApplicativeParsers
minimalRequiredClientVersionPoseidon.PoseidonVersion
MinorPoseidon.Version
MinusPoseidon.Janno
MixedPoseidon.Janno
MixedSSDSPoseidon.Janno
ModernPoseidon.Janno
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - M)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file diff --git a/doc-index-N.html b/doc-index-N.html index 2db96c3a..f6756c69 100644 --- a/doc-index-N.html +++ b/doc-index-N.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - N)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - N)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file diff --git a/doc-index-O.html b/doc-index-O.html index 79b99f6a..23901334 100644 --- a/doc-index-O.html +++ b/doc-index-O.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - O)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - O)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file diff --git a/doc-index-P.html b/doc-index-P.html index 1440bc77..23085ec6 100644 --- a/doc-index-P.html +++ b/doc-index-P.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - P)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - P

PacPoseidon.EntityTypes
PacBaseDirPoseidon.GenotypeData
PackageInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
PackageIteration 
1 (Type/Class)Poseidon.Chronicle
2 (Data Constructor)Poseidon.Chronicle
PackageReadOptions 
1 (Type/Class)Poseidon.Package
2 (Data Constructor)Poseidon.Package
PackageStatePoseidon.CLI.Fetch
packagesToPackageInfosPoseidon.Package
PackageVersionUpdate 
1 (Type/Class)Poseidon.CLI.Rectify
2 (Data Constructor)Poseidon.CLI.Rectify
PacNameAndVersion 
1 (Type/Class)Poseidon.EntityTypes
2 (Data Constructor)Poseidon.EntityTypes
pacReadOpts 
1 (Function)Poseidon.CLI.Summarise
2 (Function)Poseidon.CLI.Forge
3 (Function)Poseidon.CLI.Fetch
4 (Function)Poseidon.CLI.Timetravel
5 (Function)Poseidon.CLI.Chronicle
pacStateCommitPoseidon.Chronicle
pacStatePathPoseidon.Chronicle
pacStateTitlePoseidon.Chronicle
pacStateVersionPoseidon.Chronicle
padLeftPoseidon.Utils
padRightPoseidon.Utils
panavNamePoseidon.EntityTypes
panavVersionPoseidon.EntityTypes
parseArchiveBasePathsPoseidon.CLI.OptparseApplicativeParsers
parseArchiveEndpointPoseidon.CLI.OptparseApplicativeParsers
parseBasePathPoseidon.CLI.OptparseApplicativeParsers
parseBasePathsPoseidon.CLI.OptparseApplicativeParsers
parseCertFilePoseidon.CLI.OptparseApplicativeParsers
parseChainFilePoseidon.CLI.OptparseApplicativeParsers
parseChecksumsToRectifyPoseidon.CLI.OptparseApplicativeParsers
parseChronOperationPoseidon.CLI.OptparseApplicativeParsers
parseChronOutPathPoseidon.CLI.OptparseApplicativeParsers
parseChronUpdatePathPoseidon.CLI.OptparseApplicativeParsers
parseContributorsPoseidon.CLI.OptparseApplicativeParsers
parseCsvParseErrorPoseidon.Janno
parseDebugModePoseidon.CLI.OptparseApplicativeParsers
parseErrorLengthPoseidon.CLI.OptparseApplicativeParsers
parseFetchEntitiesDirectPoseidon.CLI.OptparseApplicativeParsers
parseFetchEntitiesFromFilePoseidon.CLI.OptparseApplicativeParsers
parseFetchEntityInputsPoseidon.CLI.OptparseApplicativeParsers
parseForcePoseidon.CLI.OptparseApplicativeParsers
parseForgeEntitiesDirectPoseidon.CLI.OptparseApplicativeParsers
parseForgeEntitiesFromFilePoseidon.CLI.OptparseApplicativeParsers
parseForgeEntityInputsPoseidon.CLI.OptparseApplicativeParsers
parseForgeOutModePoseidon.CLI.OptparseApplicativeParsers
parseFullGenoPoseidon.CLI.OptparseApplicativeParsers
parseGenoDataSourcePoseidon.CLI.OptparseApplicativeParsers
parseGenoDataSourcesPoseidon.CLI.OptparseApplicativeParsers
parseGenotypeSNPSetPoseidon.CLI.OptparseApplicativeParsers
parseIgnoreChecksumsPoseidon.CLI.OptparseApplicativeParsers
parseIgnoreDuplicatesPoseidon.CLI.OptparseApplicativeParsers
parseIgnoreGenoPoseidon.CLI.OptparseApplicativeParsers
parseIgnorePoseidonVersionPoseidon.CLI.OptparseApplicativeParsers
parseInBibFilePoseidon.CLI.OptparseApplicativeParsers
parseInGenoFilePoseidon.CLI.OptparseApplicativeParsers
parseInGenoOnePoseidon.CLI.OptparseApplicativeParsers
parseInGenoSepPoseidon.CLI.OptparseApplicativeParsers
parseInGenotypeDatasetPoseidon.CLI.OptparseApplicativeParsers
parseInGenotypeFormatPoseidon.CLI.OptparseApplicativeParsers
parseInGenoWithoutSNPSetPoseidon.CLI.OptparseApplicativeParsers
parseInIndFilePoseidon.CLI.OptparseApplicativeParsers
parseInJannoFilePoseidon.CLI.OptparseApplicativeParsers
parseInPoseidonYamlFilePoseidon.CLI.OptparseApplicativeParsers
parseInputPlinkPopModePoseidon.CLI.OptparseApplicativeParsers
parseInSnpFilePoseidon.CLI.OptparseApplicativeParsers
parseInSSFilePoseidon.CLI.OptparseApplicativeParsers
parseIntersectPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalIdStripRegexPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalJannoColumnsPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalOutSpecPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalOverridePoseidon.CLI.OptparseApplicativeParsers
parseJannocoalSourceKeyPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalSourceSpecPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalTargetFilePoseidon.CLI.OptparseApplicativeParsers
parseJannocoalTargetKeyPoseidon.CLI.OptparseApplicativeParsers
parseKeyFilePoseidon.CLI.OptparseApplicativeParsers
parseListEntityPoseidon.CLI.OptparseApplicativeParsers
parseLogPoseidon.CLI.OptparseApplicativeParsers
parseLogModePoseidon.CLI.OptparseApplicativeParsers
parseMaybeArchiveNamePoseidon.CLI.OptparseApplicativeParsers
parseMaybeCertFilesPoseidon.CLI.OptparseApplicativeParsers
parseMaybeContributorsPoseidon.CLI.OptparseApplicativeParsers
parseMaybeLogPoseidon.CLI.OptparseApplicativeParsers
parseMaybeOutPackageNamePoseidon.CLI.OptparseApplicativeParsers
parseMaybeOutPackagePathPoseidon.CLI.OptparseApplicativeParsers
parseMaybePackageVersionUpdatePoseidon.CLI.OptparseApplicativeParsers
parseMaybePoseidonVersionPoseidon.CLI.OptparseApplicativeParsers
parseMaybeSnpFilePoseidon.CLI.OptparseApplicativeParsers
parseMaybeZipDirPoseidon.CLI.OptparseApplicativeParsers
parseMinimalOutputFlagPoseidon.CLI.OptparseApplicativeParsers
parseMinimalOutputSwitchPoseidon.CLI.OptparseApplicativeParsers
parseNoChecksumUpdatePoseidon.CLI.OptparseApplicativeParsers
parseNoExitCodePoseidon.CLI.OptparseApplicativeParsers
parseOnlyLatestPoseidon.CLI.OptparseApplicativeParsers
parseOutGenotypeFormatPoseidon.CLI.OptparseApplicativeParsers
parseOutOnlyGenoFlagPoseidon.CLI.OptparseApplicativeParsers
parseOutOnlyGenoSwitchPoseidon.CLI.OptparseApplicativeParsers
parseOutPackagePathPoseidon.CLI.OptparseApplicativeParsers
parseOutputOrderedPoseidon.CLI.OptparseApplicativeParsers
parseOutputPlinkPopModePoseidon.CLI.OptparseApplicativeParsers
parsePackageWisePoseidon.CLI.OptparseApplicativeParsers
parsePortPoseidon.CLI.OptparseApplicativeParsers
parsePreservePymlFlagPoseidon.CLI.OptparseApplicativeParsers
parseRawOutputPoseidon.CLI.OptparseApplicativeParsers
parseRemoteDummyPoseidon.CLI.OptparseApplicativeParsers
parseRemoteURLPoseidon.CLI.OptparseApplicativeParsers
parseRemoveOldPoseidon.CLI.OptparseApplicativeParsers
parseRepoLocationPoseidon.CLI.OptparseApplicativeParsers
parseTestModePoseidon.CLI.OptparseApplicativeParsers
parseTimetravelChronPathPoseidon.CLI.OptparseApplicativeParsers
parseTimetravelSourcePathPoseidon.CLI.OptparseApplicativeParsers
parseUpgradePoseidon.CLI.OptparseApplicativeParsers
parseValidatePlanPoseidon.CLI.OptparseApplicativeParsers
parseVersionPoseidon.Version
parseVersionComponentPoseidon.CLI.OptparseApplicativeParsers
pastePoseidon.CLI.Summarise
PatchPoseidon.Version
pDescriptionPoseidon.ServerClient
Percent 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
pIsLatestPoseidon.ServerClient
pLastModifiedPoseidon.ServerClient
PlinkPopNameAsBothPoseidon.Utils
PlinkPopNameAsFamilyPoseidon.Utils
PlinkPopNameAsPhenotypePoseidon.Utils
PlinkPopNameModePoseidon.Utils
PlusPoseidon.Janno
pNrIndividualsPoseidon.ServerClient
PoseidonBibTeXExceptionPoseidon.Utils, Poseidon.Package
PoseidonCantPreserveExceptionPoseidon.Utils, Poseidon.Package
PoseidonChronicleExceptionPoseidon.Utils, Poseidon.Package
PoseidonCollectionExceptionPoseidon.Utils, Poseidon.Package
PoseidonCrossFileConsistencyExceptionPoseidon.Utils, Poseidon.Package
PoseidonEmptyForgeExceptionPoseidon.Utils, Poseidon.Package
PoseidonEmptyOutPacNameExceptionPoseidon.Utils, Poseidon.Package
PoseidonEntityPoseidon.EntityTypes
PoseidonExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileChecksumExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileConsistencyExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileExistenceExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileRowExceptionPoseidon.Utils, Poseidon.Package
PoseidonForgeEntitiesExceptionPoseidon.Utils, Poseidon.Package
PoseidonFStatsFormatExceptionPoseidon.Utils, Poseidon.Package
PoseidonGenericExceptionPoseidon.Utils, Poseidon.Package
PoseidonGenotypeExceptionPoseidon.Utils, Poseidon.Package
PoseidonGenotypeExceptionForwardPoseidon.Utils, Poseidon.Package
PoseidonGitExceptionPoseidon.Utils, Poseidon.Package
PoseidonHttpExceptionForwardPoseidon.Utils, Poseidon.Package
PoseidonIndSearchExceptionPoseidon.Utils, Poseidon.Package
PoseidonIOPoseidon.Utils
PoseidonNewPackageConstructionExceptionPoseidon.Utils, Poseidon.Package
PoseidonPackage 
1 (Type/Class)Poseidon.Package
2 (Data Constructor)Poseidon.Package
PoseidonPackageChronicle 
1 (Type/Class)Poseidon.Chronicle
2 (Data Constructor)Poseidon.Chronicle
PoseidonPackageExceptionPoseidon.Utils, Poseidon.Package
PoseidonPackageMissingVersionExceptionPoseidon.Utils, Poseidon.Package
PoseidonPackageVersionExceptionPoseidon.Utils, Poseidon.Package
PoseidonPoseidonEntityParsingExceptionPoseidon.Utils, Poseidon.Package
PoseidonRemoteJSONParsingExceptionPoseidon.Utils, Poseidon.Package
PoseidonServerCommunicationExceptionPoseidon.Utils, Poseidon.Package
PoseidonUnequalBaseDirExceptionPoseidon.Utils, Poseidon.Package
PoseidonUnzipExceptionPoseidon.Utils, Poseidon.Package
PoseidonYamlParseExceptionPoseidon.Utils, Poseidon.Package
PoseidonYamlStruct 
1 (Type/Class)Poseidon.Package
2 (Data Constructor)Poseidon.Package
posPacBaseDirPoseidon.Package
posPacBibPoseidon.Package
posPacBibFilePoseidon.Package
posPacBibFileChkSumPoseidon.Package
posPacChangelogFilePoseidon.Package
posPacContributorPoseidon.Package
posPacDescriptionPoseidon.Package
posPacGenotypeDataPoseidon.Package
posPacJannoPoseidon.Package
posPacJannoFilePoseidon.Package
posPacJannoFileChkSumPoseidon.Package
posPacLastModifiedPoseidon.Package
posPacNameAndVersionPoseidon.Package
posPacPoseidonVersionPoseidon.Package
posPacReadmeFilePoseidon.Package
posPacSeqSourcePoseidon.Package
posPacSeqSourceFilePoseidon.Package
posPacSeqSourceFileChkSumPoseidon.Package
pPacPoseidon.ServerClient
pPosVersionPoseidon.ServerClient
PresenceCountablePoseidon.CLI.Survey
preservePymlPoseidon.CLI.Forge
PreservePymlOutPoseidon.CLI.Forge
printDownloadProgressPoseidon.CLI.Fetch
printFrequencyPoseidon.CLI.Summarise
printFrequencyMaybePoseidon.CLI.Summarise
printFrequencyMaybeStringPoseidon.CLI.Summarise
printFrequencyStringPoseidon.CLI.Summarise
printSNPCopyProgressPoseidon.GenotypeData
printVPoseidon.CLI.Fetch
printVsPoseidon.CLI.Fetch
processApiResponsePoseidon.ServerClient
ProductionPoseidon.Utils
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - P)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - P

PacPoseidon.EntityTypes
PacBaseDirPoseidon.GenotypeData
PackageInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
PackageIteration 
1 (Type/Class)Poseidon.Chronicle
2 (Data Constructor)Poseidon.Chronicle
PackageReadOptions 
1 (Type/Class)Poseidon.Package
2 (Data Constructor)Poseidon.Package
PackageStatePoseidon.CLI.Fetch
packagesToPackageInfosPoseidon.Package
PackageVersionUpdate 
1 (Type/Class)Poseidon.CLI.Rectify
2 (Data Constructor)Poseidon.CLI.Rectify
PacNameAndVersion 
1 (Type/Class)Poseidon.EntityTypes
2 (Data Constructor)Poseidon.EntityTypes
pacReadOpts 
1 (Function)Poseidon.CLI.Summarise
2 (Function)Poseidon.CLI.Forge
3 (Function)Poseidon.CLI.Fetch
4 (Function)Poseidon.CLI.Timetravel
5 (Function)Poseidon.CLI.Chronicle
pacStateCommitPoseidon.Chronicle
pacStatePathPoseidon.Chronicle
pacStateTitlePoseidon.Chronicle
pacStateVersionPoseidon.Chronicle
padLeftPoseidon.Utils
padRightPoseidon.Utils
panavNamePoseidon.EntityTypes
panavVersionPoseidon.EntityTypes
parseArchiveBasePathsPoseidon.CLI.OptparseApplicativeParsers
parseArchiveEndpointPoseidon.CLI.OptparseApplicativeParsers
parseBasePathPoseidon.CLI.OptparseApplicativeParsers
parseBasePathsPoseidon.CLI.OptparseApplicativeParsers
parseCertFilePoseidon.CLI.OptparseApplicativeParsers
parseChainFilePoseidon.CLI.OptparseApplicativeParsers
parseChecksumsToRectifyPoseidon.CLI.OptparseApplicativeParsers
parseChronOperationPoseidon.CLI.OptparseApplicativeParsers
parseChronOutPathPoseidon.CLI.OptparseApplicativeParsers
parseChronUpdatePathPoseidon.CLI.OptparseApplicativeParsers
parseContributorsPoseidon.CLI.OptparseApplicativeParsers
parseCsvParseErrorPoseidon.Janno
parseDebugModePoseidon.CLI.OptparseApplicativeParsers
parseErrorLengthPoseidon.CLI.OptparseApplicativeParsers
parseFetchEntitiesDirectPoseidon.CLI.OptparseApplicativeParsers
parseFetchEntitiesFromFilePoseidon.CLI.OptparseApplicativeParsers
parseFetchEntityInputsPoseidon.CLI.OptparseApplicativeParsers
parseForcePoseidon.CLI.OptparseApplicativeParsers
parseForgeEntitiesDirectPoseidon.CLI.OptparseApplicativeParsers
parseForgeEntitiesFromFilePoseidon.CLI.OptparseApplicativeParsers
parseForgeEntityInputsPoseidon.CLI.OptparseApplicativeParsers
parseForgeOutModePoseidon.CLI.OptparseApplicativeParsers
parseFullGenoPoseidon.CLI.OptparseApplicativeParsers
parseGenoDataSourcePoseidon.CLI.OptparseApplicativeParsers
parseGenoDataSourcesPoseidon.CLI.OptparseApplicativeParsers
parseGenotypeSNPSetPoseidon.CLI.OptparseApplicativeParsers
parseIgnoreChecksumsPoseidon.CLI.OptparseApplicativeParsers
parseIgnoreDuplicatesPoseidon.CLI.OptparseApplicativeParsers
parseIgnoreGenoPoseidon.CLI.OptparseApplicativeParsers
parseIgnorePoseidonVersionPoseidon.CLI.OptparseApplicativeParsers
parseInBibFilePoseidon.CLI.OptparseApplicativeParsers
parseInGenoFilePoseidon.CLI.OptparseApplicativeParsers
parseInGenoOnePoseidon.CLI.OptparseApplicativeParsers
parseInGenoSepPoseidon.CLI.OptparseApplicativeParsers
parseInGenotypeDatasetPoseidon.CLI.OptparseApplicativeParsers
parseInGenotypeFormatPoseidon.CLI.OptparseApplicativeParsers
parseInGenoWithoutSNPSetPoseidon.CLI.OptparseApplicativeParsers
parseInIndFilePoseidon.CLI.OptparseApplicativeParsers
parseInJannoFilePoseidon.CLI.OptparseApplicativeParsers
parseInPoseidonYamlFilePoseidon.CLI.OptparseApplicativeParsers
parseInputPlinkPopModePoseidon.CLI.OptparseApplicativeParsers
parseInSnpFilePoseidon.CLI.OptparseApplicativeParsers
parseInSSFilePoseidon.CLI.OptparseApplicativeParsers
parseIntersectPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalIdStripRegexPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalJannoColumnsPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalOutSpecPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalOverridePoseidon.CLI.OptparseApplicativeParsers
parseJannocoalSourceKeyPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalSourceSpecPoseidon.CLI.OptparseApplicativeParsers
parseJannocoalTargetFilePoseidon.CLI.OptparseApplicativeParsers
parseJannocoalTargetKeyPoseidon.CLI.OptparseApplicativeParsers
parseKeyFilePoseidon.CLI.OptparseApplicativeParsers
parseListEntityPoseidon.CLI.OptparseApplicativeParsers
parseLogPoseidon.CLI.OptparseApplicativeParsers
parseLogModePoseidon.CLI.OptparseApplicativeParsers
parseMaybeArchiveNamePoseidon.CLI.OptparseApplicativeParsers
parseMaybeCertFilesPoseidon.CLI.OptparseApplicativeParsers
parseMaybeContributorsPoseidon.CLI.OptparseApplicativeParsers
parseMaybeLogPoseidon.CLI.OptparseApplicativeParsers
parseMaybeOutPackageNamePoseidon.CLI.OptparseApplicativeParsers
parseMaybeOutPackagePathPoseidon.CLI.OptparseApplicativeParsers
parseMaybePackageVersionUpdatePoseidon.CLI.OptparseApplicativeParsers
parseMaybePoseidonVersionPoseidon.CLI.OptparseApplicativeParsers
parseMaybeSnpFilePoseidon.CLI.OptparseApplicativeParsers
parseMaybeZipDirPoseidon.CLI.OptparseApplicativeParsers
parseMinimalOutputFlagPoseidon.CLI.OptparseApplicativeParsers
parseMinimalOutputSwitchPoseidon.CLI.OptparseApplicativeParsers
parseNoChecksumUpdatePoseidon.CLI.OptparseApplicativeParsers
parseNoExitCodePoseidon.CLI.OptparseApplicativeParsers
parseOnlyLatestPoseidon.CLI.OptparseApplicativeParsers
parseOutGenotypeFormatPoseidon.CLI.OptparseApplicativeParsers
parseOutOnlyGenoFlagPoseidon.CLI.OptparseApplicativeParsers
parseOutOnlyGenoSwitchPoseidon.CLI.OptparseApplicativeParsers
parseOutPackagePathPoseidon.CLI.OptparseApplicativeParsers
parseOutputOrderedPoseidon.CLI.OptparseApplicativeParsers
parseOutputPlinkPopModePoseidon.CLI.OptparseApplicativeParsers
parsePackageWisePoseidon.CLI.OptparseApplicativeParsers
parsePortPoseidon.CLI.OptparseApplicativeParsers
parsePreservePymlFlagPoseidon.CLI.OptparseApplicativeParsers
parseRawOutputPoseidon.CLI.OptparseApplicativeParsers
parseRemoteDummyPoseidon.CLI.OptparseApplicativeParsers
parseRemoteURLPoseidon.CLI.OptparseApplicativeParsers
parseRemoveOldPoseidon.CLI.OptparseApplicativeParsers
parseRepoLocationPoseidon.CLI.OptparseApplicativeParsers
parseTestModePoseidon.CLI.OptparseApplicativeParsers
parseTimetravelChronPathPoseidon.CLI.OptparseApplicativeParsers
parseTimetravelSourcePathPoseidon.CLI.OptparseApplicativeParsers
parseTypeCSVPoseidon.ColumnTypesUtils
parseUpgradePoseidon.CLI.OptparseApplicativeParsers
parseValidatePlanPoseidon.CLI.OptparseApplicativeParsers
parseVersionPoseidon.Version
parseVersionComponentPoseidon.CLI.OptparseApplicativeParsers
pastePoseidon.CLI.Summarise
PatchPoseidon.Version
pDescriptionPoseidon.ServerClient
pIsLatestPoseidon.ServerClient
pLastModifiedPoseidon.ServerClient
PlinkPopNameAsBothPoseidon.Utils
PlinkPopNameAsFamilyPoseidon.Utils
PlinkPopNameAsPhenotypePoseidon.Utils
PlinkPopNameModePoseidon.Utils
PlusPoseidon.ColumnTypes, Poseidon.Janno
pNrIndividualsPoseidon.ServerClient
PoseidonBibTeXExceptionPoseidon.Utils, Poseidon.Package
PoseidonCantPreserveExceptionPoseidon.Utils, Poseidon.Package
PoseidonChronicleExceptionPoseidon.Utils, Poseidon.Package
PoseidonCollectionExceptionPoseidon.Utils, Poseidon.Package
PoseidonCrossFileConsistencyExceptionPoseidon.Utils, Poseidon.Package
PoseidonEmptyForgeExceptionPoseidon.Utils, Poseidon.Package
PoseidonEmptyOutPacNameExceptionPoseidon.Utils, Poseidon.Package
PoseidonEntityPoseidon.EntityTypes
PoseidonExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileChecksumExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileConsistencyExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileExistenceExceptionPoseidon.Utils, Poseidon.Package
PoseidonFileRowExceptionPoseidon.Utils, Poseidon.Package
PoseidonForgeEntitiesExceptionPoseidon.Utils, Poseidon.Package
PoseidonFStatsFormatExceptionPoseidon.Utils, Poseidon.Package
PoseidonGenericExceptionPoseidon.Utils, Poseidon.Package
PoseidonGenotypeExceptionPoseidon.Utils, Poseidon.Package
PoseidonGenotypeExceptionForwardPoseidon.Utils, Poseidon.Package
PoseidonGitExceptionPoseidon.Utils, Poseidon.Package
PoseidonHttpExceptionForwardPoseidon.Utils, Poseidon.Package
PoseidonIndSearchExceptionPoseidon.Utils, Poseidon.Package
PoseidonIOPoseidon.Utils
PoseidonNewPackageConstructionExceptionPoseidon.Utils, Poseidon.Package
PoseidonPackage 
1 (Type/Class)Poseidon.Package
2 (Data Constructor)Poseidon.Package
PoseidonPackageChronicle 
1 (Type/Class)Poseidon.Chronicle
2 (Data Constructor)Poseidon.Chronicle
PoseidonPackageExceptionPoseidon.Utils, Poseidon.Package
PoseidonPackageMissingVersionExceptionPoseidon.Utils, Poseidon.Package
PoseidonPackageVersionExceptionPoseidon.Utils, Poseidon.Package
PoseidonPoseidonEntityParsingExceptionPoseidon.Utils, Poseidon.Package
PoseidonRemoteJSONParsingExceptionPoseidon.Utils, Poseidon.Package
PoseidonServerCommunicationExceptionPoseidon.Utils, Poseidon.Package
PoseidonUnequalBaseDirExceptionPoseidon.Utils, Poseidon.Package
PoseidonUnzipExceptionPoseidon.Utils, Poseidon.Package
PoseidonYamlParseExceptionPoseidon.Utils, Poseidon.Package
PoseidonYamlStruct 
1 (Type/Class)Poseidon.Package
2 (Data Constructor)Poseidon.Package
posPacBaseDirPoseidon.Package
posPacBibPoseidon.Package
posPacBibFilePoseidon.Package
posPacBibFileChkSumPoseidon.Package
posPacChangelogFilePoseidon.Package
posPacContributorPoseidon.Package
posPacDescriptionPoseidon.Package
posPacGenotypeDataPoseidon.Package
posPacJannoPoseidon.Package
posPacJannoFilePoseidon.Package
posPacJannoFileChkSumPoseidon.Package
posPacLastModifiedPoseidon.Package
posPacNameAndVersionPoseidon.Package
posPacPoseidonVersionPoseidon.Package
posPacReadmeFilePoseidon.Package
posPacSeqSourcePoseidon.Package
posPacSeqSourceFilePoseidon.Package
posPacSeqSourceFileChkSumPoseidon.Package
pPacPoseidon.ServerClient
pPosVersionPoseidon.ServerClient
PresenceCountablePoseidon.CLI.Survey
preservePymlPoseidon.CLI.Forge
PreservePymlOutPoseidon.CLI.Forge
printDownloadProgressPoseidon.CLI.Fetch
printFrequencyPoseidon.CLI.Summarise
printFrequencyMaybePoseidon.CLI.Summarise
printFrequencyMaybeStringPoseidon.CLI.Summarise
printFrequencyStringPoseidon.CLI.Summarise
printSNPCopyProgressPoseidon.GenotypeData
printVPoseidon.CLI.Fetch
printVsPoseidon.CLI.Fetch
processApiResponsePoseidon.ServerClient
ProductionPoseidon.Utils
\ No newline at end of file diff --git a/doc-index-Q.html b/doc-index-Q.html index 63539e1d..fe3d79d9 100644 --- a/doc-index-Q.html +++ b/doc-index-Q.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - Q)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - Q)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file diff --git a/doc-index-R.html b/doc-index-R.html index dfaa8f98..163e6715 100644 --- a/doc-index-R.html +++ b/doc-index-R.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - R)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - R

readBibTeXFilePoseidon.BibFile
readChroniclePoseidon.Chronicle
readContributorStringPoseidon.CLI.OptparseApplicativeParsers
readEntitiesFromFilePoseidon.EntityTypes
readEntitiesFromStringPoseidon.EntityTypes
readEntityInputsPoseidon.EntityTypes
readJannoFilePoseidon.Janno
readPlinkPopNamePoseidon.CLI.OptparseApplicativeParsers
readPoseidonPackagePoseidon.Package
readPoseidonPackageCollectionPoseidon.Package
readPoseidonPackageCollectionWithSkipIndicatorPoseidon.Package
readSeqSourceFilePoseidon.SequencingSource
readSeqSourceFileRowPoseidon.SequencingSource
readServerIndInfoPoseidon.CLI.Fetch
readServerPackageInfoPoseidon.CLI.Fetch
recodeAllelesPoseidon.GenotypeData
RectifyOptions 
1 (Type/Class)Poseidon.CLI.Rectify
2 (Data Constructor)Poseidon.CLI.Rectify
ReferenceGenomePoseidon.Janno
RelationDegreePoseidon.Janno
removeUselessSuffixPoseidon.Janno
renderCsvParseErrorPoseidon.Janno
renderJannoCompletenessPoseidon.CLI.Survey
renderMismatchPoseidon.Package
renderNameWithVersionPoseidon.EntityTypes
renderPackageWithCompletenessPoseidon.CLI.Survey
renderPoseidonExceptionPoseidon.Utils
RepoLocalPoseidon.CLI.List
RepoLocationSpecPoseidon.CLI.List
RepoRemotePoseidon.CLI.List
reportDuplicateIndividualsPoseidon.EntityTypes
resolveEntityIndicesPoseidon.EntityTypes
resolveUniqueEntityIndicesPoseidon.EntityTypes
roundToPoseidon.MathHelpers
roundToStrPoseidon.MathHelpers
runChroniclePoseidon.CLI.Chronicle
runFetchPoseidon.CLI.Fetch
runForgePoseidon.CLI.Forge
runGenoconvertPoseidon.CLI.Genoconvert
runInitPoseidon.CLI.Init
runJannocoalescePoseidon.CLI.Jannocoalesce
runListPoseidon.CLI.List
runRectifyPoseidon.CLI.Rectify
runServerPoseidon.CLI.Serve
runServerMainThreadPoseidon.CLI.Serve
runSummarisePoseidon.CLI.Summarise
runSurveyPoseidon.CLI.Survey
runTimetravelPoseidon.CLI.Timetravel
runValidatePoseidon.CLI.Validate
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - R)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - R

readBibTeXFilePoseidon.BibFile
readChroniclePoseidon.Chronicle
readContributorStringPoseidon.CLI.OptparseApplicativeParsers
readEntitiesFromFilePoseidon.EntityTypes
readEntitiesFromStringPoseidon.EntityTypes
readEntityInputsPoseidon.EntityTypes
readJannoFilePoseidon.Janno
readPlinkPopNamePoseidon.CLI.OptparseApplicativeParsers
readPoseidonPackagePoseidon.Package
readPoseidonPackageCollectionPoseidon.Package
readPoseidonPackageCollectionWithSkipIndicatorPoseidon.Package
readSeqSourceFilePoseidon.SequencingSource
readSeqSourceFileRowPoseidon.SequencingSource
readServerIndInfoPoseidon.CLI.Fetch
readServerPackageInfoPoseidon.CLI.Fetch
recodeAllelesPoseidon.GenotypeData
RectifyOptions 
1 (Type/Class)Poseidon.CLI.Rectify
2 (Data Constructor)Poseidon.CLI.Rectify
ReferenceGenomePoseidon.ColumnTypes, Poseidon.Janno
removeUselessSuffixPoseidon.Janno
renderCsvParseErrorPoseidon.Janno
renderJannoCompletenessPoseidon.CLI.Survey
renderMismatchPoseidon.Package
renderNameWithVersionPoseidon.EntityTypes
renderPackageWithCompletenessPoseidon.CLI.Survey
renderPoseidonExceptionPoseidon.Utils
RepoLocalPoseidon.CLI.List
RepoLocationSpecPoseidon.CLI.List
RepoRemotePoseidon.CLI.List
reportDuplicateIndividualsPoseidon.EntityTypes
resolveEntityIndicesPoseidon.EntityTypes
resolveUniqueEntityIndicesPoseidon.EntityTypes
roundToPoseidon.MathHelpers
roundToStrPoseidon.MathHelpers
runChroniclePoseidon.CLI.Chronicle
runFetchPoseidon.CLI.Fetch
runForgePoseidon.CLI.Forge
runGenoconvertPoseidon.CLI.Genoconvert
runInitPoseidon.CLI.Init
runJannocoalescePoseidon.CLI.Jannocoalesce
runListPoseidon.CLI.List
runRectifyPoseidon.CLI.Rectify
runServerPoseidon.CLI.Serve
runServerMainThreadPoseidon.CLI.Serve
runSummarisePoseidon.CLI.Summarise
runSurveyPoseidon.CLI.Survey
runTimetravelPoseidon.CLI.Timetravel
runValidatePoseidon.CLI.Validate
\ No newline at end of file diff --git a/doc-index-S.html b/doc-index-S.html index 4fa48481..5f61f4c4 100644 --- a/doc-index-S.html +++ b/doc-index-S.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - S)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - S

sAdditionalColumnsPoseidon.SequencingSource
SecondPoseidon.Janno
selectIndicesPoseidon.GenotypeData
seqSourceHeaderPoseidon.SequencingSource
seqSourceHeaderStringPoseidon.SequencingSource
seqSourceRefHashMapPoseidon.SequencingSource
SeqSourceRow 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
SeqSourceRows 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
ServeOptions 
1 (Type/Class)Poseidon.CLI.Serve
2 (Data Constructor)Poseidon.CLI.Serve
ServerApiReturnType 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
ServerLogPoseidon.Utils
SexPoseidon.Janno
sFastqASPERAPoseidon.SequencingSource
sFastqBytesPoseidon.SequencingSource
sFastqFTPPoseidon.SequencingSource
sFastqMD5Poseidon.SequencingSource
sFirstPublicPoseidon.SequencingSource
sfSexPoseidon.Janno
ShotgunPoseidon.Janno
showParsecErrPoseidon.Utils
showPoseidonVersionPoseidon.PoseidonVersion
SignedEntitiesListPoseidon.EntityTypes
SignedEntityPoseidon.EntityTypes
SimpleDate 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
SimpleLogPoseidon.Utils
sInstrumentModelPoseidon.SequencingSource
sInstrumentPlatformPoseidon.SequencingSource
SixthToTenthPoseidon.Janno
sLastUpdatedPoseidon.SequencingSource
sLibraryBuiltPoseidon.SequencingSource
sLibraryLayoutPoseidon.SequencingSource
sLibraryNamePoseidon.SequencingSource
sLibrarySourcePoseidon.SequencingSource
sLibraryStrategyPoseidon.SequencingSource
snapYamlChronicleVersionPoseidon.Chronicle
snapYamlDescriptionPoseidon.Chronicle
snapYamlLastModifiedPoseidon.Chronicle
snapYamlPackagesPoseidon.Chronicle
snapYamlTitlePoseidon.Chronicle
snpFilePoseidon.GenotypeData
snpFileChkSumPoseidon.GenotypeData
snpSetPoseidon.GenotypeData
SNPSet1240KPoseidon.GenotypeData
SNPSetHumanOriginsPoseidon.GenotypeData
snpSetMergePoseidon.GenotypeData
snpSetMergeListPoseidon.GenotypeData
SNPSetOtherPoseidon.GenotypeData
SNPSetSpecPoseidon.GenotypeData
sortTupelsBySndDescPoseidon.CLI.Summarise
SpecificIndPoseidon.EntityTypes
sPoseidonIDPoseidon.SequencingSource
sReadCountPoseidon.SequencingSource
sRunAccessionPoseidon.SequencingSource
SSPoseidon.Janno
sSampleAccessionPoseidon.SequencingSource
sSampleAliasPoseidon.SequencingSource
sSecondarySampleAccessionPoseidon.SequencingSource
SSFDSPoseidon.SequencingSource
SSFHalfPoseidon.SequencingSource
SSFLibraryBuiltPoseidon.SequencingSource
SSFMinusPoseidon.SequencingSource
SSFPlusPoseidon.SequencingSource
SSFSSPoseidon.SequencingSource
SSFUDGPoseidon.SequencingSource
sStudyAccessionPoseidon.SequencingSource
sSubmittedFTPPoseidon.SequencingSource
stdevPoseidon.MathHelpers
sUDGPoseidon.SequencingSource
summariseJannoRowsPoseidon.CLI.Summarise
SummariseOptions 
1 (Type/Class)Poseidon.CLI.Summarise
2 (Data Constructor)Poseidon.CLI.Summarise
sumNonMissingSNPsPoseidon.CLI.Forge
SurveyOptions 
1 (Type/Class)Poseidon.CLI.Survey
2 (Data Constructor)Poseidon.CLI.Survey
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - S)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - S

sAdditionalColumnsPoseidon.SequencingSource
SecondPoseidon.ColumnTypes, Poseidon.Janno
selectIndicesPoseidon.GenotypeData
seqSourceHeaderPoseidon.SequencingSource
seqSourceHeaderStringPoseidon.SequencingSource
seqSourceRefHashMapPoseidon.SequencingSource
SeqSourceRow 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
SeqSourceRows 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
ServeOptions 
1 (Type/Class)Poseidon.CLI.Serve
2 (Data Constructor)Poseidon.CLI.Serve
ServerApiReturnType 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
ServerLogPoseidon.Utils
SexPoseidon.Janno
sFastqASPERAPoseidon.SequencingSource
sFastqBytesPoseidon.SequencingSource
sFastqFTPPoseidon.SequencingSource
sFastqMD5Poseidon.SequencingSource
sFirstPublicPoseidon.SequencingSource
sfSexPoseidon.ColumnTypes, Poseidon.Janno
ShotgunPoseidon.ColumnTypes, Poseidon.Janno
showParsecErrPoseidon.Utils
showPoseidonVersionPoseidon.PoseidonVersion
SignedEntitiesListPoseidon.EntityTypes
SignedEntityPoseidon.EntityTypes
SimpleDate 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
SimpleLogPoseidon.Utils
sInstrumentModelPoseidon.SequencingSource
sInstrumentPlatformPoseidon.SequencingSource
SixthToTenthPoseidon.ColumnTypes, Poseidon.Janno
sLastUpdatedPoseidon.SequencingSource
sLibraryBuiltPoseidon.SequencingSource
sLibraryLayoutPoseidon.SequencingSource
sLibraryNamePoseidon.SequencingSource
sLibrarySourcePoseidon.SequencingSource
sLibraryStrategyPoseidon.SequencingSource
snapYamlChronicleVersionPoseidon.Chronicle
snapYamlDescriptionPoseidon.Chronicle
snapYamlLastModifiedPoseidon.Chronicle
snapYamlPackagesPoseidon.Chronicle
snapYamlTitlePoseidon.Chronicle
snpFilePoseidon.GenotypeData
snpFileChkSumPoseidon.GenotypeData
snpSetPoseidon.GenotypeData
SNPSet1240KPoseidon.GenotypeData
SNPSetHumanOriginsPoseidon.GenotypeData
snpSetMergePoseidon.GenotypeData
snpSetMergeListPoseidon.GenotypeData
SNPSetOtherPoseidon.GenotypeData
SNPSetSpecPoseidon.GenotypeData
sortTupelsBySndDescPoseidon.CLI.Summarise
SpecificIndPoseidon.EntityTypes
sPoseidonIDPoseidon.SequencingSource
sReadCountPoseidon.SequencingSource
sRunAccessionPoseidon.SequencingSource
SSPoseidon.ColumnTypes, Poseidon.Janno
sSampleAccessionPoseidon.SequencingSource
sSampleAliasPoseidon.SequencingSource
sSecondarySampleAccessionPoseidon.SequencingSource
SSFDSPoseidon.SequencingSource
SSFHalfPoseidon.SequencingSource
SSFLibraryBuiltPoseidon.SequencingSource
SSFMinusPoseidon.SequencingSource
SSFPlusPoseidon.SequencingSource
SSFSSPoseidon.SequencingSource
SSFUDGPoseidon.SequencingSource
sStudyAccessionPoseidon.SequencingSource
sSubmittedFTPPoseidon.SequencingSource
stdevPoseidon.MathHelpers
sUDGPoseidon.SequencingSource
summariseJannoRowsPoseidon.CLI.Summarise
SummariseOptions 
1 (Type/Class)Poseidon.CLI.Summarise
2 (Data Constructor)Poseidon.CLI.Summarise
sumNonMissingSNPsPoseidon.CLI.Forge
SurveyOptions 
1 (Type/Class)Poseidon.CLI.Survey
2 (Data Constructor)Poseidon.CLI.Survey
\ No newline at end of file diff --git a/doc-index-T.html b/doc-index-T.html index 60babfd9..989437c7 100644 --- a/doc-index-T.html +++ b/doc-index-T.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - T)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - T

TestingPoseidon.Utils
testLogPoseidon.Utils
TestModePoseidon.Utils
ThirdToFifthPoseidon.Janno
TimetravelOptions 
1 (Type/Class)Poseidon.CLI.Timetravel
2 (Data Constructor)Poseidon.CLI.Timetravel
TwistAncientDNAPoseidon.Janno
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - T)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file diff --git a/doc-index-U.html b/doc-index-U.html index d64f6b3b..506ed0df 100644 --- a/doc-index-U.html +++ b/doc-index-U.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - U)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - U

underlyingEntityPoseidon.EntityTypes
UnequalLocalRemotePoseidon.CLI.Fetch
uniqueNumberPoseidon.CLI.Summarise
uniquePOPoseidon.Utils
uniqueROPoseidon.Utils
UnknownPoseidon.Janno
UnrelatedPoseidon.Janno
unzipPackagePoseidon.CLI.Fetch
UpdateChronPoseidon.CLI.Chronicle
updateChroniclePoseidon.Chronicle
updateThreeComponentVersionPoseidon.Version
usePoseidonLoggerPoseidon.Utils
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - U)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - U

underlyingEntityPoseidon.EntityTypes
UnequalLocalRemotePoseidon.CLI.Fetch
uniqueNumberPoseidon.CLI.Summarise
uniquePOPoseidon.Utils
uniqueROPoseidon.Utils
UnknownPoseidon.Janno
UnrelatedPoseidon.ColumnTypes, Poseidon.Janno
unzipPackagePoseidon.CLI.Fetch
UpdateChronPoseidon.CLI.Chronicle
updateChroniclePoseidon.Chronicle
updateThreeComponentVersionPoseidon.Version
usePoseidonLoggerPoseidon.Utils
\ No newline at end of file diff --git a/doc-index-V.html b/doc-index-V.html index 5a460599..c3854596 100644 --- a/doc-index-V.html +++ b/doc-index-V.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - V)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - V

validateGenoPoseidon.Package
ValidateOptions 
1 (Type/Class)Poseidon.CLI.Validate
2 (Data Constructor)Poseidon.CLI.Validate
ValidatePlanPoseidon.CLI.Validate
validPoseidonVersionsPoseidon.PoseidonVersion
ValPlanBaseDirsPoseidon.CLI.Validate
ValPlanBibPoseidon.CLI.Validate
ValPlanGenoPoseidon.CLI.Validate
ValPlanJannoPoseidon.CLI.Validate
ValPlanPoseidonYamlPoseidon.CLI.Validate
ValPlanSSFPoseidon.CLI.Validate
VerboseLogPoseidon.Utils
VersionComponentPoseidon.Version
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - V)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - V

validateGenoPoseidon.Package
ValidateOptions 
1 (Type/Class)Poseidon.CLI.Validate
2 (Data Constructor)Poseidon.CLI.Validate
ValidatePlanPoseidon.CLI.Validate
validPoseidonVersionsPoseidon.PoseidonVersion
ValPlanBaseDirsPoseidon.CLI.Validate
ValPlanBibPoseidon.CLI.Validate
ValPlanGenoPoseidon.CLI.Validate
ValPlanJannoPoseidon.CLI.Validate
ValPlanPoseidonYamlPoseidon.CLI.Validate
ValPlanSSFPoseidon.CLI.Validate
VerboseLogPoseidon.Utils
VersionComponentPoseidon.Version
\ No newline at end of file diff --git a/doc-index-W.html b/doc-index-W.html index f9db12f4..18d89465 100644 --- a/doc-index-W.html +++ b/doc-index-W.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - W)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data

Index - W

warnSeqSourceConsistencyPoseidon.SequencingSource
writeBibTeXFilePoseidon.BibFile
writeChroniclePoseidon.Chronicle
writeJannoFilePoseidon.Janno
writePoseidonPackagePoseidon.Package
writeSeqSourceFilePoseidon.SequencingSource
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - W)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data

Index - W

warnSeqSourceConsistencyPoseidon.SequencingSource
writeBibTeXFilePoseidon.BibFile
writeChroniclePoseidon.Chronicle
writeJannoFilePoseidon.Janno
writePoseidonPackagePoseidon.Package
writeSeqSourceFilePoseidon.SequencingSource
\ No newline at end of file diff --git a/doc-index-Z.html b/doc-index-Z.html index ebc9f70e..d108a99c 100644 --- a/doc-index-Z.html +++ b/doc-index-Z.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index - Z)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index - Z)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file diff --git a/doc-index.html b/doc-index.html index 86dadb46..3a388764 100644 --- a/doc-index.html +++ b/doc-index.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data (Index)
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data (Index)
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file diff --git a/doc-index.json b/doc-index.json index f3e20e83..1f33ee85 100644 --- a/doc-index.json +++ b/doc-index.json @@ -1 +1 @@ -[{"display_html":"avg :: [Double] -> Double","name":"avg","module":"Poseidon.MathHelpers","link":"Poseidon-MathHelpers.html#v:avg"},{"display_html":"roundTo :: Int -> Double -> Double","name":"roundTo","module":"Poseidon.MathHelpers","link":"Poseidon-MathHelpers.html#v:roundTo"},{"display_html":"roundToStr :: (PrintfArg a, Floating a) => Int -> a -> String","name":"roundToStr","module":"Poseidon.MathHelpers","link":"Poseidon-MathHelpers.html#v:roundToStr"},{"display_html":"stdev :: [Double] -> Double","name":"stdev","module":"Poseidon.MathHelpers","link":"Poseidon-MathHelpers.html#v:stdev"},{"display_html":"meanAndSdRoundTo :: Int -> [Double] -> String","name":"meanAndSdRoundTo","module":"Poseidon.MathHelpers","link":"Poseidon-MathHelpers.html#v:meanAndSdRoundTo"},{"display_html":"meanAndSdInteger :: [Double] -> String","name":"meanAndSdInteger","module":"Poseidon.MathHelpers","link":"Poseidon-MathHelpers.html#v:meanAndSdInteger"},{"display_html":"validPoseidonVersions :: [PoseidonVersion]","name":"validPoseidonVersions","module":"Poseidon.PoseidonVersion","link":"Poseidon-PoseidonVersion.html#v:validPoseidonVersions"},{"display_html":"showPoseidonVersion :: PoseidonVersion -> String","name":"showPoseidonVersion","module":"Poseidon.PoseidonVersion","link":"Poseidon-PoseidonVersion.html#v:showPoseidonVersion"},{"display_html":"latestPoseidonVersion :: PoseidonVersion","name":"latestPoseidonVersion","module":"Poseidon.PoseidonVersion","link":"Poseidon-PoseidonVersion.html#v:latestPoseidonVersion"},{"display_html":"asVersion :: PoseidonVersion -> Version","name":"asVersion","module":"Poseidon.PoseidonVersion","link":"Poseidon-PoseidonVersion.html#v:asVersion"},{"display_html":"minimalRequiredClientVersion :: Version","name":"minimalRequiredClientVersion","module":"Poseidon.PoseidonVersion","link":"Poseidon-PoseidonVersion.html#v:minimalRequiredClientVersion"},{"display_html":"data PoseidonException","name":"PoseidonException PoseidonGenotypeExceptionForward PoseidonYamlParseException PoseidonPackageException PoseidonPackageVersionException PoseidonPackageMissingVersionException PoseidonIndSearchException PoseidonGenotypeException PoseidonHttpExceptionForward PoseidonFileRowException PoseidonFileConsistencyException PoseidonCrossFileConsistencyException PoseidonCollectionException PoseidonFileExistenceException PoseidonFileChecksumException PoseidonFStatsFormatException PoseidonBibTeXException PoseidonPoseidonEntityParsingException PoseidonForgeEntitiesException PoseidonEmptyForgeException PoseidonNewPackageConstructionException PoseidonRemoteJSONParsingException PoseidonGenericException PoseidonEmptyOutPacNameException PoseidonUnequalBaseDirException PoseidonServerCommunicationException PoseidonUnzipException PoseidonChronicleException PoseidonGitException PoseidonCantPreserveException","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:PoseidonException"},{"display_html":"renderPoseidonException :: PoseidonException -> String","name":"renderPoseidonException","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:renderPoseidonException"},{"display_html":"usePoseidonLogger :: LogMode -> TestMode -> PlinkPopNameMode -> ErrorLength -> PoseidonIO a -> IO a","name":"usePoseidonLogger","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:usePoseidonLogger"},{"display_html":"testLog :: PoseidonIO a -> IO a","name":"testLog","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:testLog"},{"display_html":"type PoseidonIO = ReaderT Env IO","name":"PoseidonIO","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:PoseidonIO"},{"display_html":"envLogAction :: PoseidonIO LogA","name":"envLogAction","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:envLogAction"},{"display_html":"envInputPlinkMode :: PoseidonIO PlinkPopNameMode","name":"envInputPlinkMode","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:envInputPlinkMode"},{"display_html":"envErrorLength :: PoseidonIO ErrorLength","name":"envErrorLength","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:envErrorLength"},{"display_html":"data LogMode","name":"LogMode NoLog SimpleLog DefaultLog ServerLog VerboseLog","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:LogMode"},{"display_html":"checkFile :: FilePath -> Maybe String -> IO ()","name":"checkFile","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:checkFile"},{"display_html":"getChecksum :: FilePath -> IO String","name":"getChecksum","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:getChecksum"},{"display_html":"logWarning :: String -> PoseidonIO ()","name":"logWarning","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:logWarning"},{"display_html":"logInfo :: String -> PoseidonIO ()","name":"logInfo","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:logInfo"},{"display_html":"logDebug :: String -> PoseidonIO ()","name":"logDebug","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:logDebug"},{"display_html":"logError :: String -> PoseidonIO ()","name":"logError","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:logError"},{"display_html":"type LogA = LogAction IO Message","name":"LogA","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:LogA"},{"display_html":"noLog :: LogA","name":"noLog","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:noLog"},{"display_html":"logWithEnv :: MonadIO m => LogA -> PoseidonIO () -> m ()","name":"logWithEnv","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:logWithEnv"},{"display_html":"padRight :: Int -> String -> String","name":"padRight","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:padRight"},{"display_html":"padLeft :: Int -> String -> String","name":"padLeft","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:padLeft"},{"display_html":"determinePackageOutName :: Maybe String -> FilePath -> IO String","name":"determinePackageOutName","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:determinePackageOutName"},{"display_html":"data PlinkPopNameMode","name":"PlinkPopNameMode PlinkPopNameAsBoth PlinkPopNameAsFamily PlinkPopNameAsPhenotype","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:PlinkPopNameMode"},{"display_html":"data TestMode","name":"TestMode Testing Production","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:TestMode"},{"display_html":"data Env = Env {}","name":"Env Env _envLogAction _envTestMode _envInputPlinkMode _envErrorLength","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:Env"},{"display_html":"uniquePO :: Ord a => [a] -> [a]","name":"uniquePO","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:uniquePO"},{"display_html":"uniqueRO :: Ord a => [a] -> [a]","name":"uniqueRO","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:uniqueRO"},{"display_html":"showParsecErr :: ParseError -> String","name":"showParsecErr","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:showParsecErr"},{"display_html":"data ErrorLength","name":"ErrorLength CharInf CharCount","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:ErrorLength"},{"display_html":"data JannoRow = JannoRow {}","name":"JannoRow JannoRow jAdditionalColumns jPoseidonID jGeneticSex jGroupName jAlternativeIDs jRelationTo jRelationDegree jRelationType jRelationNote jCollectionID jCountry jCountryISO jLocation jSite jLatitude jLongitude jDateType jDateC14Labnr jDateC14UncalBP jDateC14UncalBPErr jDateBCADStart jDateBCADMedian jDateBCADStop jDateNote jMTHaplogroup jYHaplogroup jSourceTissue jNrLibraries jLibraryNames jCaptureType jUDG jLibraryBuilt jGenotypePloidy jDataPreparationPipelineURL jEndogenous jNrSNPs jCoverageOnTargets jDamage jContamination jContaminationErr jContaminationMeas jContaminationNote jGeneticSourceAccessionIDs jPrimaryContact jPublication jComments jKeywords","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoRow"},{"display_html":"newtype JannoSex = JannoSex {}","name":"JannoSex JannoSex sfSex","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoSex"},{"display_html":"newtype JannoList a = JannoList {}","name":"JannoList JannoList getJannoList","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoList"},{"display_html":"data Sex","name":"Sex Unknown Female Male","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:Sex"},{"display_html":"newtype BCADAge = BCADAge Int","name":"BCADAge BCADAge","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:BCADAge"},{"display_html":"newtype JannoCountry = JannoCountry Country","name":"JannoCountry JannoCountry","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoCountry"},{"display_html":"makeJannoCountryUnsafe :: String -> JannoCountry","name":"makeJannoCountryUnsafe","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:makeJannoCountryUnsafe"},{"display_html":"newtype Latitude = Latitude Double","name":"Latitude Latitude","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:Latitude"},{"display_html":"newtype Longitude = Longitude Double","name":"Longitude Longitude","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:Longitude"},{"display_html":"data JannoDateType","name":"JannoDateType C14 Contextual Modern","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoDateType"},{"display_html":"data JannoCaptureType","name":"JannoCaptureType Shotgun A1240K ArborComplete ArborPrimePlus ArborAncestralPlus TwistAncientDNA OtherCapture ReferenceGenome","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoCaptureType"},{"display_html":"data JannoGenotypePloidy","name":"JannoGenotypePloidy Diploid Haploid","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoGenotypePloidy"},{"display_html":"newtype Percent = Percent Double","name":"Percent Percent","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:Percent"},{"display_html":"data JannoUDG","name":"JannoUDG Minus Half Plus Mixed","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoUDG"},{"display_html":"newtype JURI = JURI String","name":"JURI JURI","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JURI"},{"display_html":"data RelationDegree","name":"RelationDegree First Identical Second ThirdToFifth SixthToTenth Unrelated OtherDegree","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:RelationDegree"},{"display_html":"data JannoLibraryBuilt","name":"JannoLibraryBuilt Other DS SS MixedSSDS","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoLibraryBuilt"},{"display_html":"data AccessionID","name":"AccessionID INSDCProject INSDCStudy INSDCBioSample INSDCSample INSDCExperiment INSDCRun INSDCAnalysis OtherID","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:AccessionID"},{"display_html":"makeAccessionID :: MonadFail m => String -> m AccessionID","name":"makeAccessionID","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:makeAccessionID"},{"display_html":"makeLatitude :: MonadFail m => Double -> m Latitude","name":"makeLatitude","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:makeLatitude"},{"display_html":"makeLongitude :: MonadFail m => Double -> m Longitude","name":"makeLongitude","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:makeLongitude"},{"display_html":"writeJannoFile :: FilePath -> JannoRows -> IO ()","name":"writeJannoFile","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:writeJannoFile"},{"display_html":"readJannoFile :: FilePath -> PoseidonIO JannoRows","name":"readJannoFile","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:readJannoFile"},{"display_html":"createMinimalJanno :: [EigenstratIndEntry] -> JannoRows","name":"createMinimalJanno","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:createMinimalJanno"},{"display_html":"createMinimalSample :: EigenstratIndEntry -> JannoRow","name":"createMinimalSample","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:createMinimalSample"},{"display_html":"jannoHeaderString :: [String]","name":"jannoHeaderString","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:jannoHeaderString"},{"display_html":"newtype CsvNamedRecord = CsvNamedRecord NamedRecord","name":"CsvNamedRecord CsvNamedRecord","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:CsvNamedRecord"},{"display_html":"newtype JannoRows = JannoRows [JannoRow]","name":"JannoRows JannoRows","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoRows"},{"display_html":"type JannoStringList = JannoList String","name":"JannoStringList","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoStringList"},{"display_html":"filterLookup :: FromField a => NamedRecord -> ByteString -> Parser a","name":"filterLookup","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:filterLookup"},{"display_html":"filterLookupOptional :: FromField a => NamedRecord -> ByteString -> Parser (Maybe a)","name":"filterLookupOptional","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:filterLookupOptional"},{"display_html":"getCsvNR :: CsvNamedRecord -> NamedRecord","name":"getCsvNR","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:getCsvNR"},{"display_html":"encodingOptions :: EncodeOptions","name":"encodingOptions","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:encodingOptions"},{"display_html":"decodingOptions :: DecodeOptions","name":"decodingOptions","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:decodingOptions"},{"display_html":"explicitNA :: ByteString -> ByteString","name":"explicitNA","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:explicitNA"},{"display_html":"removeUselessSuffix :: String -> String","name":"removeUselessSuffix","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:removeUselessSuffix"},{"display_html":"parseCsvParseError :: Parser CsvParseError","name":"parseCsvParseError","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:parseCsvParseError"},{"display_html":"renderCsvParseError :: CsvParseError -> String","name":"renderCsvParseError","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:renderCsvParseError"},{"display_html":"getMaybeJannoList :: Maybe (JannoList a) -> [a]","name":"getMaybeJannoList","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:getMaybeJannoList"},{"display_html":"data SSFUDG","name":"SSFUDG SSFPlus SSFHalf SSFMinus","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:SSFUDG"},{"display_html":"makeSSFUDG :: MonadFail m => String -> m SSFUDG","name":"makeSSFUDG","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeSSFUDG"},{"display_html":"data SSFLibraryBuilt","name":"SSFLibraryBuilt SSFSS SSFDS","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:SSFLibraryBuilt"},{"display_html":"makeSSFLibraryBuilt :: MonadFail m => String -> m SSFLibraryBuilt","name":"makeSSFLibraryBuilt","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeSSFLibraryBuilt"},{"display_html":"newtype SeqSourceRows = SeqSourceRows {}","name":"SeqSourceRows getSeqSourceRowList SeqSourceRows","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:SeqSourceRows"},{"display_html":"newtype AccessionIDRun = AccessionIDRun {}","name":"AccessionIDRun getRunAccession AccessionIDRun","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:AccessionIDRun"},{"display_html":"makeAccessionIDRun :: MonadFail m => String -> m AccessionIDRun","name":"makeAccessionIDRun","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeAccessionIDRun"},{"display_html":"newtype AccessionIDSample = AccessionIDSample {}","name":"AccessionIDSample getSampleAccession AccessionIDSample","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:AccessionIDSample"},{"display_html":"makeAccessionIDSample :: MonadFail m => String -> m AccessionIDSample","name":"makeAccessionIDSample","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeAccessionIDSample"},{"display_html":"newtype AccessionIDStudy = AccessionIDStudy {}","name":"AccessionIDStudy getStudyAccession AccessionIDStudy","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:AccessionIDStudy"},{"display_html":"makeAccessionIDStudy :: MonadFail m => String -> m AccessionIDStudy","name":"makeAccessionIDStudy","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeAccessionIDStudy"},{"display_html":"newtype SimpleDate = SimpleDate Day","name":"SimpleDate SimpleDate","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:SimpleDate"},{"display_html":"makeSimpleDate :: MonadFail m => String -> m SimpleDate","name":"makeSimpleDate","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeSimpleDate"},{"display_html":"newtype MD5 = MD5 String","name":"MD5 MD5","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:MD5"},{"display_html":"makeMD5 :: MonadFail m => String -> m MD5","name":"makeMD5","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeMD5"},{"display_html":"isMD5Hash :: String -> Bool","name":"isMD5Hash","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:isMD5Hash"},{"display_html":"data SeqSourceRow = SeqSourceRow {}","name":"SeqSourceRow sSubmittedFTP sReadCount sFastqMD5 sFastqBytes sFastqASPERA sFastqFTP sLibraryStrategy sLibraryName sInstrumentPlatform sLibrarySource sLibraryLayout sInstrumentModel sLastUpdated sFirstPublic sSecondarySampleAccession sSampleAlias sRunAccession sStudyAccession sSampleAccession sLibraryBuilt sUDG sPoseidonID sAdditionalColumns SeqSourceRow","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:SeqSourceRow"},{"display_html":"seqSourceHeader :: [ByteString]","name":"seqSourceHeader","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:seqSourceHeader"},{"display_html":"seqSourceHeaderString :: [String]","name":"seqSourceHeaderString","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:seqSourceHeaderString"},{"display_html":"seqSourceRefHashMap :: HashMap ByteString ()","name":"seqSourceRefHashMap","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:seqSourceRefHashMap"},{"display_html":"writeSeqSourceFile :: FilePath -> SeqSourceRows -> IO ()","name":"writeSeqSourceFile","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:writeSeqSourceFile"},{"display_html":"readSeqSourceFile :: FilePath -> PoseidonIO SeqSourceRows","name":"readSeqSourceFile","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:readSeqSourceFile"},{"display_html":"readSeqSourceFileRow :: FilePath -> (Int, ByteString) -> PoseidonIO (Either PoseidonException SeqSourceRow)","name":"readSeqSourceFileRow","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:readSeqSourceFileRow"},{"display_html":"warnSeqSourceConsistency :: FilePath -> SeqSourceRows -> PoseidonIO ()","name":"warnSeqSourceConsistency","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:warnSeqSourceConsistency"},{"display_html":"checkRunsUnique :: SeqSourceRows -> Bool","name":"checkRunsUnique","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:checkRunsUnique"},{"display_html":"checkAtLeastOnePoseidonID :: SeqSourceRows -> Bool","name":"checkAtLeastOnePoseidonID","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:checkAtLeastOnePoseidonID"},{"display_html":"data GenoDataSource","name":"GenoDataSource getGenoDirect getPacBaseDirs GenoDirect PacBaseDir","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#t:GenoDataSource"},{"display_html":"data GenotypeDataSpec = GenotypeDataSpec {}","name":"GenotypeDataSpec snpSet indFileChkSum indFile snpFileChkSum snpFile genoFileChkSum genoFile format GenotypeDataSpec","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#t:GenotypeDataSpec"},{"display_html":"data GenotypeFormatSpec","name":"GenotypeFormatSpec GenotypeFormatPlink GenotypeFormatEigenstrat","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#t:GenotypeFormatSpec"},{"display_html":"data SNPSetSpec","name":"SNPSetSpec SNPSetOther SNPSetHumanOrigins SNPSet1240K","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#t:SNPSetSpec"},{"display_html":"snpSetMergeList :: [SNPSetSpec] -> Bool -> SNPSetSpec","name":"snpSetMergeList","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:snpSetMergeList"},{"display_html":"snpSetMerge :: SNPSetSpec -> SNPSetSpec -> Bool -> SNPSetSpec","name":"snpSetMerge","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:snpSetMerge"},{"display_html":"loadIndividuals :: FilePath -> GenotypeDataSpec -> PoseidonIO [EigenstratIndEntry]","name":"loadIndividuals","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:loadIndividuals"},{"display_html":"loadGenotypeData :: MonadSafe m => FilePath -> GenotypeDataSpec -> PlinkPopNameMode -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())","name":"loadGenotypeData","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:loadGenotypeData"},{"display_html":"joinEntries :: MonadIO m => LogA -> [Int] -> [String] -> [Maybe (EigenstratSnpEntry, GenoLine)] -> m (EigenstratSnpEntry, GenoLine)","name":"joinEntries","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:joinEntries"},{"display_html":"getConsensusSnpEntry :: MonadIO m => LogA -> [EigenstratSnpEntry] -> m EigenstratSnpEntry","name":"getConsensusSnpEntry","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:getConsensusSnpEntry"},{"display_html":"recodeAlleles :: EigenstratSnpEntry -> EigenstratSnpEntry -> GenoLine -> Either String GenoLine","name":"recodeAlleles","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:recodeAlleles"},{"display_html":"printSNPCopyProgress :: MonadIO m => LogA -> UTCTime -> Pipe a a m ()","name":"printSNPCopyProgress","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:printSNPCopyProgress"},{"display_html":"selectIndices :: [Int] -> (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine)","name":"selectIndices","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:selectIndices"},{"display_html":"data ContributorSpec = ContributorSpec {}","name":"ContributorSpec ContributorSpec contributorName contributorEmail contributorORCID","module":"Poseidon.Contributor","link":"Poseidon-Contributor.html#t:ContributorSpec"},{"display_html":"contributorSpecParser :: Parser [ContributorSpec]","name":"contributorSpecParser","module":"Poseidon.Contributor","link":"Poseidon-Contributor.html#v:contributorSpecParser"},{"display_html":"data ORCID = ORCID {}","name":"ORCID ORCID _orcidNums _orcidChecksum","module":"Poseidon.Contributor","link":"Poseidon-Contributor.html#t:ORCID"},{"display_html":"dummyBibEntry :: BibEntry","name":"dummyBibEntry","module":"Poseidon.BibFile","link":"Poseidon-BibFile.html#v:dummyBibEntry"},{"display_html":"readBibTeXFile :: FilePath -> IO BibTeX","name":"readBibTeXFile","module":"Poseidon.BibFile","link":"Poseidon-BibFile.html#v:readBibTeXFile"},{"display_html":"writeBibTeXFile :: FilePath -> BibTeX -> IO ()","name":"writeBibTeXFile","module":"Poseidon.BibFile","link":"Poseidon-BibFile.html#v:writeBibTeXFile"},{"display_html":"type BibTeX = [BibEntry]","name":"BibTeX","module":"Poseidon.BibFile","link":"Poseidon-BibFile.html#t:BibTeX"},{"display_html":"data BibEntry = BibEntry {}","name":"BibEntry BibEntry bibEntryType bibEntryId bibEntryFields","module":"Poseidon.BibFile","link":"Poseidon-BibFile.html#t:BibEntry"},{"display_html":"data VersionComponent","name":"VersionComponent Major Minor Patch","module":"Poseidon.Version","link":"Poseidon-Version.html#t:VersionComponent"},{"display_html":"updateThreeComponentVersion :: VersionComponent -> Version -> Version","name":"updateThreeComponentVersion","module":"Poseidon.Version","link":"Poseidon-Version.html#v:updateThreeComponentVersion"},{"display_html":"parseVersion :: Parser Version","name":"parseVersion","module":"Poseidon.Version","link":"Poseidon-Version.html#v:parseVersion"},{"display_html":"data IndividualInfo = IndividualInfo {}","name":"IndividualInfo IndividualInfo indInfoName indInfoGroups indInfoPac","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:IndividualInfo"},{"display_html":"type IndividualInfoCollection = ([IndividualInfo], [Bool])","name":"IndividualInfoCollection","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:IndividualInfoCollection"},{"display_html":"renderNameWithVersion :: HasNameAndVersion a => a -> String","name":"renderNameWithVersion","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:renderNameWithVersion"},{"display_html":"class Eq a => HasNameAndVersion a where","name":"HasNameAndVersion getPacName getPacVersion","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:HasNameAndVersion"},{"display_html":"data PoseidonEntity","name":"PoseidonEntity Pac Group Ind SpecificInd","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:PoseidonEntity"},{"display_html":"data SignedEntity","name":"SignedEntity Include Exclude","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:SignedEntity"},{"display_html":"hasVersion :: HasNameAndVersion a => a -> Bool","name":"hasVersion","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:hasVersion"},{"display_html":"type EntitiesList = [PoseidonEntity]","name":"EntitiesList","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:EntitiesList"},{"display_html":"type SignedEntitiesList = [SignedEntity]","name":"SignedEntitiesList","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:SignedEntitiesList"},{"display_html":"data PacNameAndVersion = PacNameAndVersion {}","name":"PacNameAndVersion PacNameAndVersion panavName panavVersion","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:PacNameAndVersion"},{"display_html":"makePacNameAndVersion :: HasNameAndVersion a => a -> PacNameAndVersion","name":"makePacNameAndVersion","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:makePacNameAndVersion"},{"display_html":"isLatestInCollection :: (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool","name":"isLatestInCollection","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:isLatestInCollection"},{"display_html":"class EntitySpec a","name":"EntitySpec","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:EntitySpec"},{"display_html":"resolveUniqueEntityIndices :: EntitySpec a => Bool -> [a] -> IndividualInfoCollection -> PoseidonIO [Int]","name":"resolveUniqueEntityIndices","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:resolveUniqueEntityIndices"},{"display_html":"indInfoConformsToEntitySpecs :: EntitySpec a => IndividualInfo -> Bool -> [a] -> Bool","name":"indInfoConformsToEntitySpecs","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:indInfoConformsToEntitySpecs"},{"display_html":"underlyingEntity :: EntitySpec a => a -> PoseidonEntity","name":"underlyingEntity","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:underlyingEntity"},{"display_html":"entitySpecParser :: EntitySpec a => Parser a","name":"entitySpecParser","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:entitySpecParser"},{"display_html":"readEntitiesFromFile :: EntitySpec a => FilePath -> IO [a]","name":"readEntitiesFromFile","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:readEntitiesFromFile"},{"display_html":"readEntitiesFromString :: EntitySpec a => String -> Either PoseidonException [a]","name":"readEntitiesFromString","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:readEntitiesFromString"},{"display_html":"determineNonExistentEntities :: EntitySpec a => [a] -> IndividualInfoCollection -> EntitiesList","name":"determineNonExistentEntities","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:determineNonExistentEntities"},{"display_html":"determineRelevantPackages :: (MonadThrow m, EntitySpec a) => [a] -> IndividualInfoCollection -> m [PacNameAndVersion]","name":"determineRelevantPackages","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:determineRelevantPackages"},{"display_html":"entitiesListP :: EntitySpec a => Parser [a]","name":"entitiesListP","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:entitiesListP"},{"display_html":"data EntityInput a","name":"EntityInput EntitiesDirect EntitiesFromFile","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:EntityInput"},{"display_html":"readEntityInputs :: (MonadIO m, EntitySpec a, Eq a) => [EntityInput a] -> m [a]","name":"readEntityInputs","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:readEntityInputs"},{"display_html":"checkIfAllEntitiesExist :: EntitySpec a => [a] -> IndividualInfoCollection -> PoseidonIO ()","name":"checkIfAllEntitiesExist","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:checkIfAllEntitiesExist"},{"display_html":"resolveEntityIndices :: EntitySpec a => Bool -> [a] -> IndividualInfoCollection -> [Int]","name":"resolveEntityIndices","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:resolveEntityIndices"},{"display_html":"reportDuplicateIndividuals :: [IndividualInfo] -> [(IndividualInfo, [PoseidonEntity])]","name":"reportDuplicateIndividuals","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:reportDuplicateIndividuals"},{"display_html":"data ServerApiReturnType = ServerApiReturnType {}","name":"ServerApiReturnType ServerApiReturnType _apiMessages _apiResponse","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:ServerApiReturnType"},{"display_html":"data ApiReturnData","name":"ApiReturnData ApiReturnPackageInfo ApiReturnGroupInfo ApiReturnExtIndividualInfo ApiReturnJanno","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:ApiReturnData"},{"display_html":"processApiResponse :: String -> Bool -> PoseidonIO ApiReturnData","name":"processApiResponse","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#v:processApiResponse"},{"display_html":"data ArchiveEndpoint = ArchiveEndpoint {}","name":"ArchiveEndpoint ArchiveEndpoint _aeServerURL _aeArchiveName","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:ArchiveEndpoint"},{"display_html":"data PackageInfo = PackageInfo {}","name":"PackageInfo PackageInfo pPac pIsLatest pPosVersion pDescription pLastModified pNrIndividuals","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:PackageInfo"},{"display_html":"data GroupInfo = GroupInfo {}","name":"GroupInfo GroupInfo gName gPackage gIsLatest gNrIndividuals","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:GroupInfo"},{"display_html":"data ExtendedIndividualInfo = ExtendedIndividualInfo {}","name":"ExtendedIndividualInfo ExtendedIndividualInfo extIndInfoName extIndInfoGroups extIndInfoPac extIndInfoIsLatest extIndInfoAddCols","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:ExtendedIndividualInfo"},{"display_html":"extIndInfo2IndInfoCollection :: [ExtendedIndividualInfo] -> IndividualInfoCollection","name":"extIndInfo2IndInfoCollection","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#v:extIndInfo2IndInfoCollection"},{"display_html":"qDefault :: Maybe String -> String","name":"qDefault","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#v:qDefault"},{"display_html":"qArchive :: Maybe String -> String","name":"qArchive","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#v:qArchive"},{"display_html":"qPacVersion :: Maybe Version -> String","name":"qPacVersion","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#v:qPacVersion"},{"display_html":"(+&+) :: String -> String -> String","name":"+&+","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#v:-43--38--43-"},{"display_html":"data AddJannoColSpec","name":"AddJannoColSpec AddJannoColList AddJannoColAll","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:AddJannoColSpec"},{"display_html":"data PoseidonYamlStruct = PoseidonYamlStruct {}","name":"PoseidonYamlStruct PoseidonYamlStruct _posYamlPoseidonVersion _posYamlTitle _posYamlDescription _posYamlContributor _posYamlPackageVersion _posYamlLastModified _posYamlGenotypeData _posYamlJannoFile _posYamlJannoFileChkSum _posYamlSeqSourceFile _posYamlSeqSourceFileChkSum _posYamlBibFile _posYamlBibFileChkSum _posYamlReadmeFile _posYamlChangelogFile","module":"Poseidon.Package","link":"Poseidon-Package.html#t:PoseidonYamlStruct"},{"display_html":"data PoseidonPackage = PoseidonPackage {}","name":"PoseidonPackage PoseidonPackage posPacBaseDir posPacPoseidonVersion posPacNameAndVersion posPacDescription posPacContributor posPacLastModified posPacGenotypeData posPacJannoFile posPacJanno posPacJannoFileChkSum posPacSeqSourceFile posPacSeqSource posPacSeqSourceFileChkSum posPacBibFile posPacBib posPacBibFileChkSum posPacReadmeFile posPacChangelogFile","module":"Poseidon.Package","link":"Poseidon-Package.html#t:PoseidonPackage"},{"display_html":"data PoseidonException","name":"PoseidonException PoseidonGenotypeExceptionForward PoseidonYamlParseException PoseidonPackageException PoseidonPackageVersionException PoseidonPackageMissingVersionException PoseidonIndSearchException PoseidonGenotypeException PoseidonHttpExceptionForward PoseidonFileRowException PoseidonFileConsistencyException PoseidonCrossFileConsistencyException PoseidonCollectionException PoseidonFileExistenceException PoseidonFileChecksumException PoseidonFStatsFormatException PoseidonBibTeXException PoseidonPoseidonEntityParsingException PoseidonForgeEntitiesException PoseidonEmptyForgeException PoseidonNewPackageConstructionException PoseidonRemoteJSONParsingException PoseidonGenericException PoseidonEmptyOutPacNameException PoseidonUnequalBaseDirException PoseidonServerCommunicationException PoseidonUnzipException PoseidonChronicleException PoseidonGitException PoseidonCantPreserveException","module":"Poseidon.Package","link":"Poseidon-Package.html#t:PoseidonException"},{"display_html":"data PackageReadOptions = PackageReadOptions {}","name":"PackageReadOptions PackageReadOptions _readOptIgnoreChecksums _readOptIgnoreGeno _readOptGenoCheck _readOptFullGeno _readOptIgnorePosVersion _readOptOnlyLatest","module":"Poseidon.Package","link":"Poseidon-Package.html#t:PackageReadOptions"},{"display_html":"findAllPoseidonYmlFiles :: FilePath -> IO [FilePath]","name":"findAllPoseidonYmlFiles","module":"Poseidon.Package","link":"Poseidon-Package.html#v:findAllPoseidonYmlFiles"},{"display_html":"readPoseidonPackageCollection :: PackageReadOptions -> [FilePath] -> PoseidonIO [PoseidonPackage]","name":"readPoseidonPackageCollection","module":"Poseidon.Package","link":"Poseidon-Package.html#v:readPoseidonPackageCollection"},{"display_html":"readPoseidonPackageCollectionWithSkipIndicator :: PackageReadOptions -> [FilePath] -> PoseidonIO ([PoseidonPackage], Bool)","name":"readPoseidonPackageCollectionWithSkipIndicator","module":"Poseidon.Package","link":"Poseidon-Package.html#v:readPoseidonPackageCollectionWithSkipIndicator"},{"display_html":"getJointGenotypeData :: MonadSafe m => LogA -> Bool -> PlinkPopNameMode -> [PoseidonPackage] -> Maybe FilePath -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())","name":"getJointGenotypeData","module":"Poseidon.Package","link":"Poseidon-Package.html#v:getJointGenotypeData"},{"display_html":"getJointJanno :: [PoseidonPackage] -> JannoRows","name":"getJointJanno","module":"Poseidon.Package","link":"Poseidon-Package.html#v:getJointJanno"},{"display_html":"getJointIndividualInfo :: MonadThrow m => [PoseidonPackage] -> m IndividualInfoCollection","name":"getJointIndividualInfo","module":"Poseidon.Package","link":"Poseidon-Package.html#v:getJointIndividualInfo"},{"display_html":"getExtendedIndividualInfo :: MonadThrow m => [PoseidonPackage] -> AddJannoColSpec -> m [ExtendedIndividualInfo]","name":"getExtendedIndividualInfo","module":"Poseidon.Package","link":"Poseidon-Package.html#v:getExtendedIndividualInfo"},{"display_html":"newMinimalPackageTemplate :: FilePath -> String -> GenotypeDataSpec -> PoseidonPackage","name":"newMinimalPackageTemplate","module":"Poseidon.Package","link":"Poseidon-Package.html#v:newMinimalPackageTemplate"},{"display_html":"newPackageTemplate :: FilePath -> String -> GenotypeDataSpec -> Maybe (Either [EigenstratIndEntry] JannoRows) -> SeqSourceRows -> BibTeX -> PoseidonIO PoseidonPackage","name":"newPackageTemplate","module":"Poseidon.Package","link":"Poseidon-Package.html#v:newPackageTemplate"},{"display_html":"renderMismatch :: [String] -> [String] -> String","name":"renderMismatch","module":"Poseidon.Package","link":"Poseidon-Package.html#v:renderMismatch"},{"display_html":"zipWithPadding :: a -> b -> [a] -> [b] -> [(a, b)]","name":"zipWithPadding","module":"Poseidon.Package","link":"Poseidon-Package.html#v:zipWithPadding"},{"display_html":"writePoseidonPackage :: PoseidonPackage -> IO ()","name":"writePoseidonPackage","module":"Poseidon.Package","link":"Poseidon-Package.html#v:writePoseidonPackage"},{"display_html":"defaultPackageReadOptions :: PackageReadOptions","name":"defaultPackageReadOptions","module":"Poseidon.Package","link":"Poseidon-Package.html#v:defaultPackageReadOptions"},{"display_html":"readPoseidonPackage :: PackageReadOptions -> FilePath -> PoseidonIO PoseidonPackage","name":"readPoseidonPackage","module":"Poseidon.Package","link":"Poseidon-Package.html#v:readPoseidonPackage"},{"display_html":"makePseudoPackageFromGenotypeData :: GenotypeDataSpec -> PoseidonIO PoseidonPackage","name":"makePseudoPackageFromGenotypeData","module":"Poseidon.Package","link":"Poseidon-Package.html#v:makePseudoPackageFromGenotypeData"},{"display_html":"getJannoRowsFromPac :: PoseidonPackage -> [JannoRow]","name":"getJannoRowsFromPac","module":"Poseidon.Package","link":"Poseidon-Package.html#v:getJannoRowsFromPac"},{"display_html":"packagesToPackageInfos :: MonadThrow m => [PoseidonPackage] -> m [PackageInfo]","name":"packagesToPackageInfos","module":"Poseidon.Package","link":"Poseidon-Package.html#v:packagesToPackageInfos"},{"display_html":"getAllGroupInfo :: MonadThrow m => [PoseidonPackage] -> m [GroupInfo]","name":"getAllGroupInfo","module":"Poseidon.Package","link":"Poseidon-Package.html#v:getAllGroupInfo"},{"display_html":"validateGeno :: PoseidonPackage -> Bool -> PoseidonIO ()","name":"validateGeno","module":"Poseidon.Package","link":"Poseidon-Package.html#v:validateGeno"},{"display_html":"filterToRelevantPackages :: MonadThrow m => EntitySpec a => [a] -> [PoseidonPackage] -> m [PoseidonPackage]","name":"filterToRelevantPackages","module":"Poseidon.Package","link":"Poseidon-Package.html#v:filterToRelevantPackages"},{"display_html":"data SurveyOptions = SurveyOptions {}","name":"SurveyOptions _surveyOnlyLatest _surveyRawOutput _surveyBaseDirs SurveyOptions","module":"Poseidon.CLI.Survey","link":"Poseidon-CLI-Survey.html#t:SurveyOptions"},{"display_html":"runSurvey :: SurveyOptions -> PoseidonIO ()","name":"runSurvey","module":"Poseidon.CLI.Survey","link":"Poseidon-CLI-Survey.html#v:runSurvey"},{"display_html":"renderPackageWithCompleteness :: Bool -> JannoRows -> SeqSourceRows -> BibTeX -> String","name":"renderPackageWithCompleteness","module":"Poseidon.CLI.Survey","link":"Poseidon-CLI-Survey.html#v:renderPackageWithCompleteness"},{"display_html":"renderJannoCompleteness :: JannoRows -> String","name":"renderJannoCompleteness","module":"Poseidon.CLI.Survey","link":"Poseidon-CLI-Survey.html#v:renderJannoCompleteness"},{"display_html":"class PresenceCountable a where","name":"PresenceCountable countPresence","module":"Poseidon.CLI.Survey","link":"Poseidon-CLI-Survey.html#t:PresenceCountable"},{"display_html":"data SummariseOptions = SummariseOptions {}","name":"SummariseOptions _summariseRawOutput _summariseBaseDirs SummariseOptions","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#t:SummariseOptions"},{"display_html":"pacReadOpts :: PackageReadOptions","name":"pacReadOpts","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:pacReadOpts"},{"display_html":"runSummarise :: SummariseOptions -> PoseidonIO ()","name":"runSummarise","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:runSummarise"},{"display_html":"summariseJannoRows :: JannoRows -> Bool -> IO ()","name":"summariseJannoRows","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:summariseJannoRows"},{"display_html":"paste :: [String] -> String","name":"paste","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:paste"},{"display_html":"uniqueNumber :: Ord a => [a] -> String","name":"uniqueNumber","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:uniqueNumber"},{"display_html":"frequency :: Ord a => [a] -> [(a, Int)]","name":"frequency","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:frequency"},{"display_html":"sortTupelsBySndDesc :: (Ord a, Ord b) => (a, b) -> (a, b) -> Ordering","name":"sortTupelsBySndDesc","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:sortTupelsBySndDesc"},{"display_html":"printFrequency :: Show a => String -> [(a, Int)] -> String","name":"printFrequency","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:printFrequency"},{"display_html":"printFrequencyMaybe :: Show a => String -> [(Maybe a, Int)] -> String","name":"printFrequencyMaybe","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:printFrequencyMaybe"},{"display_html":"maybeShow :: Show a => Maybe a -> String","name":"maybeShow","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:maybeShow"},{"display_html":"printFrequencyString :: String -> [(String, Int)] -> String","name":"printFrequencyString","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:printFrequencyString"},{"display_html":"printFrequencyMaybeString :: String -> [(Maybe String, Int)] -> String","name":"printFrequencyMaybeString","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:printFrequencyMaybeString"},{"display_html":"maybeShowString :: Maybe String -> String","name":"maybeShowString","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:maybeShowString"},{"display_html":"data JannoSourceSpec","name":"JannoSourceSpec JannoSourceBaseDirs JannoSourceSingle","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#t:JannoSourceSpec"},{"display_html":"data CoalesceJannoColumnSpec","name":"CoalesceJannoColumnSpec ExcludeJannoColumns IncludeJannoColumns AllJannoColumns","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#t:CoalesceJannoColumnSpec"},{"display_html":"data JannoCoalesceOptions = JannoCoalesceOptions {}","name":"JannoCoalesceOptions _jannocoalesceIdStrip _jannocoalesceTargetKey _jannocoalesceSourceKey _jannocoalesceOverwriteColumns _jannocoalesceJannoColumns _jannocoalesceOutSpec _jannocoalesceTarget _jannocoalesceSource JannoCoalesceOptions","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#t:JannoCoalesceOptions"},{"display_html":"runJannocoalesce :: JannoCoalesceOptions -> PoseidonIO ()","name":"runJannocoalesce","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#v:runJannocoalesce"},{"display_html":"type CounterMismatches = IORef Int","name":"CounterMismatches","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#t:CounterMismatches"},{"display_html":"type CounterCopied = IORef Int","name":"CounterCopied","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#t:CounterCopied"},{"display_html":"makeNewJannoRows :: [JannoRow] -> [JannoRow] -> CoalesceJannoColumnSpec -> Bool -> String -> String -> Maybe String -> PoseidonIO [JannoRow]","name":"makeNewJannoRows","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#v:makeNewJannoRows"},{"display_html":"getKeyFromJanno :: MonadThrow m => JannoRow -> String -> m String","name":"getKeyFromJanno","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#v:getKeyFromJanno"},{"display_html":"matchWithOptionalStrip :: Maybe String -> String -> String -> Bool","name":"matchWithOptionalStrip","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#v:matchWithOptionalStrip"},{"display_html":"mergeRow :: CounterCopied -> JannoRow -> JannoRow -> CoalesceJannoColumnSpec -> Bool -> String -> String -> PoseidonIO JannoRow","name":"mergeRow","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#v:mergeRow"},{"display_html":"data InitOptions = InitOptions {}","name":"InitOptions _initMinimal _initPacName _initPacPath _initGenoData InitOptions","module":"Poseidon.CLI.Init","link":"Poseidon-CLI-Init.html#t:InitOptions"},{"display_html":"runInit :: InitOptions -> PoseidonIO ()","name":"runInit","module":"Poseidon.CLI.Init","link":"Poseidon-CLI-Init.html#v:runInit"},{"display_html":"data ValidateOptions = ValidateOptions {}","name":"ValidateOptions _validateOnlyLatest _validateNoExitCode _validatePlan ValidateOptions","module":"Poseidon.CLI.Validate","link":"Poseidon-CLI-Validate.html#t:ValidateOptions"},{"display_html":"data ValidatePlan","name":"ValidatePlan _valPlanIgnorePosVersion _valPlanIgnoreChecksums _valPlanIgnoreDuplicates _valPlanFullGeno _valPlanIgnoreGeno _valPlanBaseDirs ValPlanBib ValPlanSSF ValPlanJanno ValPlanGeno ValPlanPoseidonYaml ValPlanBaseDirs","module":"Poseidon.CLI.Validate","link":"Poseidon-CLI-Validate.html#t:ValidatePlan"},{"display_html":"runValidate :: ValidateOptions -> PoseidonIO ()","name":"runValidate","module":"Poseidon.CLI.Validate","link":"Poseidon-CLI-Validate.html#v:runValidate"},{"display_html":"conclude :: Bool -> Bool -> PoseidonIO ()","name":"conclude","module":"Poseidon.CLI.Validate","link":"Poseidon-CLI-Validate.html#v:conclude"},{"display_html":"runServer :: ServeOptions -> MVar () -> PoseidonIO ()","name":"runServer","module":"Poseidon.CLI.Serve","link":"Poseidon-CLI-Serve.html#v:runServer"},{"display_html":"runServerMainThread :: ServeOptions -> PoseidonIO ()","name":"runServerMainThread","module":"Poseidon.CLI.Serve","link":"Poseidon-CLI-Serve.html#v:runServerMainThread"},{"display_html":"data ServeOptions = ServeOptions {}","name":"ServeOptions ServeOptions cliArchiveBaseDirs cliZipDir cliPort cliIgnoreChecksums cliCertFiles","module":"Poseidon.CLI.Serve","link":"Poseidon-CLI-Serve.html#t:ServeOptions"},{"display_html":"runList :: ListOptions -> PoseidonIO ()","name":"runList","module":"Poseidon.CLI.List","link":"Poseidon-CLI-List.html#v:runList"},{"display_html":"data ListOptions = ListOptions {}","name":"ListOptions ListOptions _listRepoLocation _listListEntity _listRawOutput _listOnlyLatest","module":"Poseidon.CLI.List","link":"Poseidon-CLI-List.html#t:ListOptions"},{"display_html":"data ListEntity","name":"ListEntity ListPackages ListGroups ListIndividuals","module":"Poseidon.CLI.List","link":"Poseidon-CLI-List.html#t:ListEntity"},{"display_html":"data RepoLocationSpec","name":"RepoLocationSpec RepoLocal RepoRemote","module":"Poseidon.CLI.List","link":"Poseidon-CLI-List.html#t:RepoLocationSpec"},{"display_html":"data GenoconvertOptions = GenoconvertOptions {}","name":"GenoconvertOptions _genoconvertOnlyLatest _genoconvertOutPlinkPopMode _genoconvertRemoveOld _genoMaybeOutPackagePath _genoConvertOutOnlyGeno _genoConvertOutFormat _genoconvertGenoSources GenoconvertOptions","module":"Poseidon.CLI.Genoconvert","link":"Poseidon-CLI-Genoconvert.html#t:GenoconvertOptions"},{"display_html":"runGenoconvert :: GenoconvertOptions -> PoseidonIO ()","name":"runGenoconvert","module":"Poseidon.CLI.Genoconvert","link":"Poseidon-CLI-Genoconvert.html#v:runGenoconvert"},{"display_html":"convertGenoTo :: GenotypeFormatSpec -> Bool -> Maybe FilePath -> Bool -> PlinkPopNameMode -> PlinkPopNameMode -> PoseidonPackage -> PoseidonIO ()","name":"convertGenoTo","module":"Poseidon.CLI.Genoconvert","link":"Poseidon-CLI-Genoconvert.html#v:convertGenoTo"},{"display_html":"data ForgeOptions = ForgeOptions {}","name":"ForgeOptions _forgeOutputOrdered _forgeOutputPlinkPopMode _forgePackageWise _forgeOutPacName _forgeOutPacPath _forgeOutMode _forgeOutFormat _forgeIntersect _forgeSnpFile _forgeEntityInput _forgeGenoSources ForgeOptions","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#t:ForgeOptions"},{"display_html":"data ForgeOutMode","name":"ForgeOutMode NormalOut PreservePymlOut MinimalOut GenoOut","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#t:ForgeOutMode"},{"display_html":"preservePyml :: ForgeOutMode -> Bool","name":"preservePyml","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:preservePyml"},{"display_html":"pacReadOpts :: PackageReadOptions","name":"pacReadOpts","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:pacReadOpts"},{"display_html":"runForge :: ForgeOptions -> PoseidonIO ()","name":"runForge","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:runForge"},{"display_html":"sumNonMissingSNPs :: IOVector Int -> (EigenstratSnpEntry, GenoLine) -> SafeT IO (IOVector Int)","name":"sumNonMissingSNPs","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:sumNonMissingSNPs"},{"display_html":"filterSeqSourceRows :: JannoRows -> SeqSourceRows -> SeqSourceRows","name":"filterSeqSourceRows","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:filterSeqSourceRows"},{"display_html":"filterBibEntries :: JannoRows -> BibTeX -> BibTeX","name":"filterBibEntries","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:filterBibEntries"},{"display_html":"fillMissingSnpSets :: [PoseidonPackage] -> PoseidonIO [SNPSetSpec]","name":"fillMissingSnpSets","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:fillMissingSnpSets"},{"display_html":"data FetchOptions = FetchOptions {}","name":"FetchOptions _archiveEnd _entityInput _jaBaseDirs FetchOptions","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#t:FetchOptions"},{"display_html":"data PackageState","name":"PackageState UnequalLocalRemote EqualLocalRemote NotLocal","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#t:PackageState"},{"display_html":"pacReadOpts :: PackageReadOptions","name":"pacReadOpts","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:pacReadOpts"},{"display_html":"runFetch :: FetchOptions -> PoseidonIO ()","name":"runFetch","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:runFetch"},{"display_html":"readServerIndInfo :: ByteString -> IO [ExtendedIndividualInfo]","name":"readServerIndInfo","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:readServerIndInfo"},{"display_html":"readServerPackageInfo :: ByteString -> IO [PackageInfo]","name":"readServerPackageInfo","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:readServerPackageInfo"},{"display_html":"determinePackageState :: [PacNameAndVersion] -> PacNameAndVersion -> (PackageState, String, Maybe Version, [Maybe Version])","name":"determinePackageState","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:determinePackageState"},{"display_html":"handlePackageByState :: FilePath -> FilePath -> ArchiveEndpoint -> (PackageState, String, Maybe Version, [Maybe Version]) -> PoseidonIO ()","name":"handlePackageByState","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:handlePackageByState"},{"display_html":"printVs :: [Maybe Version] -> String","name":"printVs","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:printVs"},{"display_html":"printV :: Maybe Version -> String","name":"printV","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:printV"},{"display_html":"downloadAndUnzipPackage :: FilePath -> FilePath -> ArchiveEndpoint -> PacNameAndVersion -> PoseidonIO ()","name":"downloadAndUnzipPackage","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:downloadAndUnzipPackage"},{"display_html":"unzipPackage :: FilePath -> FilePath -> IO ()","name":"unzipPackage","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:unzipPackage"},{"display_html":"downloadPackage :: FilePath -> ArchiveEndpoint -> PacNameAndVersion -> PoseidonIO ()","name":"downloadPackage","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:downloadPackage"},{"display_html":"printDownloadProgress :: LogA -> Double -> ConduitT ByteString ByteString (ResourceT IO) ()","name":"printDownloadProgress","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:printDownloadProgress"},{"display_html":"data PoseidonPackageChronicle = PoseidonPackageChronicle {}","name":"PoseidonPackageChronicle snapYamlPackages snapYamlLastModified snapYamlChronicleVersion snapYamlDescription snapYamlTitle PoseidonPackageChronicle","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#t:PoseidonPackageChronicle"},{"display_html":"data PackageIteration = PackageIteration {}","name":"PackageIteration pacStatePath pacStateCommit pacStateVersion pacStateTitle PackageIteration","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#t:PackageIteration"},{"display_html":"updateChronicle :: PoseidonPackageChronicle -> PoseidonPackageChronicle -> PoseidonPackageChronicle","name":"updateChronicle","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:updateChronicle"},{"display_html":"readChronicle :: FilePath -> PoseidonIO PoseidonPackageChronicle","name":"readChronicle","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:readChronicle"},{"display_html":"writeChronicle :: FilePath -> PoseidonPackageChronicle -> PoseidonIO ()","name":"writeChronicle","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:writeChronicle"},{"display_html":"makeChronicle :: FilePath -> [PoseidonPackage] -> PoseidonIO PoseidonPackageChronicle","name":"makeChronicle","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:makeChronicle"},{"display_html":"chroniclePackages :: FilePath -> [PoseidonPackage] -> PoseidonIO (Set PackageIteration)","name":"chroniclePackages","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:chroniclePackages"},{"display_html":"getPackageVersion :: PoseidonPackage -> PoseidonIO Version","name":"getPackageVersion","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:getPackageVersion"},{"display_html":"getGitCommitHash :: FilePath -> PoseidonIO String","name":"getGitCommitHash","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:getGitCommitHash"},{"display_html":"data TimetravelOptions = TimetravelOptions {}","name":"TimetravelOptions _timetravelChronicleFile _timetravelSourceDir _timetravelBaseDirs TimetravelOptions","module":"Poseidon.CLI.Timetravel","link":"Poseidon-CLI-Timetravel.html#t:TimetravelOptions"},{"display_html":"pacReadOpts :: PackageReadOptions","name":"pacReadOpts","module":"Poseidon.CLI.Timetravel","link":"Poseidon-CLI-Timetravel.html#v:pacReadOpts"},{"display_html":"runTimetravel :: TimetravelOptions -> PoseidonIO ()","name":"runTimetravel","module":"Poseidon.CLI.Timetravel","link":"Poseidon-CLI-Timetravel.html#v:runTimetravel"},{"display_html":"gitCheckout :: FilePath -> String -> PoseidonIO ()","name":"gitCheckout","module":"Poseidon.CLI.Timetravel","link":"Poseidon-CLI-Timetravel.html#v:gitCheckout"},{"display_html":"copyDirectory :: FilePath -> FilePath -> PoseidonIO ()","name":"copyDirectory","module":"Poseidon.CLI.Timetravel","link":"Poseidon-CLI-Timetravel.html#v:copyDirectory"},{"display_html":"data ChronicleOptions = ChronicleOptions {}","name":"ChronicleOptions _chronicleOperation _chronicleBaseDirs ChronicleOptions","module":"Poseidon.CLI.Chronicle","link":"Poseidon-CLI-Chronicle.html#t:ChronicleOptions"},{"display_html":"data ChronOperation","name":"ChronOperation UpdateChron CreateChron","module":"Poseidon.CLI.Chronicle","link":"Poseidon-CLI-Chronicle.html#t:ChronOperation"},{"display_html":"pacReadOpts :: PackageReadOptions","name":"pacReadOpts","module":"Poseidon.CLI.Chronicle","link":"Poseidon-CLI-Chronicle.html#v:pacReadOpts"},{"display_html":"runChronicle :: ChronicleOptions -> PoseidonIO ()","name":"runChronicle","module":"Poseidon.CLI.Chronicle","link":"Poseidon-CLI-Chronicle.html#v:runChronicle"},{"display_html":"runRectify :: RectifyOptions -> PoseidonIO ()","name":"runRectify","module":"Poseidon.CLI.Rectify","link":"Poseidon-CLI-Rectify.html#v:runRectify"},{"display_html":"data RectifyOptions = RectifyOptions {}","name":"RectifyOptions RectifyOptions _rectifyBaseDirs _rectifyIgnorePoseidonVersion _rectifyPoseidonVersion _rectifyPackageVersionUpdate _rectifyChecksums _rectifyNewContributors _rectifyOnlyLatest","module":"Poseidon.CLI.Rectify","link":"Poseidon-CLI-Rectify.html#t:RectifyOptions"},{"display_html":"data PackageVersionUpdate = PackageVersionUpdate {}","name":"PackageVersionUpdate PackageVersionUpdate _pacVerUpVersionComponent _pacVerUpLog","module":"Poseidon.CLI.Rectify","link":"Poseidon-CLI-Rectify.html#t:PackageVersionUpdate"},{"display_html":"data ChecksumsToRectify","name":"ChecksumsToRectify ChecksumNone ChecksumAll ChecksumsDetail _rectifyChecksumGeno _rectifyChecksumJanno _rectifyChecksumSSF _rectifyChecksumBib","module":"Poseidon.CLI.Rectify","link":"Poseidon-CLI-Rectify.html#t:ChecksumsToRectify"},{"display_html":"parseChronOperation :: Parser ChronOperation","name":"parseChronOperation","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseChronOperation"},{"display_html":"parseTimetravelSourcePath :: Parser FilePath","name":"parseTimetravelSourcePath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseTimetravelSourcePath"},{"display_html":"parseTimetravelChronPath :: Parser FilePath","name":"parseTimetravelChronPath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseTimetravelChronPath"},{"display_html":"parseChronOutPath :: Parser FilePath","name":"parseChronOutPath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseChronOutPath"},{"display_html":"parseChronUpdatePath :: Parser FilePath","name":"parseChronUpdatePath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseChronUpdatePath"},{"display_html":"parseMaybePoseidonVersion :: Parser (Maybe Version)","name":"parseMaybePoseidonVersion","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybePoseidonVersion"},{"display_html":"parseDebugMode :: Parser LogMode","name":"parseDebugMode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseDebugMode"},{"display_html":"parseLogMode :: Parser LogMode","name":"parseLogMode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseLogMode"},{"display_html":"parseTestMode :: Parser TestMode","name":"parseTestMode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseTestMode"},{"display_html":"parseErrorLength :: Parser ErrorLength","name":"parseErrorLength","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseErrorLength"},{"display_html":"parseRemoveOld :: Parser Bool","name":"parseRemoveOld","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseRemoveOld"},{"display_html":"parseChecksumsToRectify :: Parser ChecksumsToRectify","name":"parseChecksumsToRectify","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseChecksumsToRectify"},{"display_html":"parseMaybePackageVersionUpdate :: Parser (Maybe PackageVersionUpdate)","name":"parseMaybePackageVersionUpdate","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybePackageVersionUpdate"},{"display_html":"parseVersionComponent :: Parser VersionComponent","name":"parseVersionComponent","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseVersionComponent"},{"display_html":"parseNoChecksumUpdate :: Parser Bool","name":"parseNoChecksumUpdate","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseNoChecksumUpdate"},{"display_html":"parseMaybeContributors :: Parser (Maybe [ContributorSpec])","name":"parseMaybeContributors","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeContributors"},{"display_html":"parseContributors :: Parser [ContributorSpec]","name":"parseContributors","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseContributors"},{"display_html":"readContributorString :: String -> Either String [ContributorSpec]","name":"readContributorString","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:readContributorString"},{"display_html":"parseMaybeLog :: Parser (Maybe String)","name":"parseMaybeLog","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeLog"},{"display_html":"parseLog :: Parser String","name":"parseLog","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseLog"},{"display_html":"parseForce :: Parser Bool","name":"parseForce","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseForce"},{"display_html":"parseForgeEntityInputs :: Parser [EntityInput SignedEntity]","name":"parseForgeEntityInputs","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseForgeEntityInputs"},{"display_html":"parseFetchEntityInputs :: Parser [EntityInput PoseidonEntity]","name":"parseFetchEntityInputs","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseFetchEntityInputs"},{"display_html":"parseIgnorePoseidonVersion :: Parser Bool","name":"parseIgnorePoseidonVersion","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseIgnorePoseidonVersion"},{"display_html":"parseForgeEntitiesDirect :: Parser SignedEntitiesList","name":"parseForgeEntitiesDirect","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseForgeEntitiesDirect"},{"display_html":"parseFetchEntitiesDirect :: Parser EntitiesList","name":"parseFetchEntitiesDirect","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseFetchEntitiesDirect"},{"display_html":"parseForgeEntitiesFromFile :: Parser FilePath","name":"parseForgeEntitiesFromFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseForgeEntitiesFromFile"},{"display_html":"parseFetchEntitiesFromFile :: Parser FilePath","name":"parseFetchEntitiesFromFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseFetchEntitiesFromFile"},{"display_html":"parseIntersect :: Parser Bool","name":"parseIntersect","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseIntersect"},{"display_html":"parseRemoteDummy :: Parser ()","name":"parseRemoteDummy","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseRemoteDummy"},{"display_html":"parseOutGenotypeFormat :: Bool -> Parser GenotypeFormatSpec","name":"parseOutGenotypeFormat","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOutGenotypeFormat"},{"display_html":"parseGenoDataSources :: Parser [GenoDataSource]","name":"parseGenoDataSources","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseGenoDataSources"},{"display_html":"parseGenoDataSource :: Parser GenoDataSource","name":"parseGenoDataSource","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseGenoDataSource"},{"display_html":"parseRepoLocation :: Parser RepoLocationSpec","name":"parseRepoLocation","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseRepoLocation"},{"display_html":"parseArchiveEndpoint :: Parser ArchiveEndpoint","name":"parseArchiveEndpoint","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseArchiveEndpoint"},{"display_html":"parseValidatePlan :: Parser ValidatePlan","name":"parseValidatePlan","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseValidatePlan"},{"display_html":"parseInPoseidonYamlFile :: Parser FilePath","name":"parseInPoseidonYamlFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInPoseidonYamlFile"},{"display_html":"parseInJannoFile :: Parser FilePath","name":"parseInJannoFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInJannoFile"},{"display_html":"parseInSSFile :: Parser FilePath","name":"parseInSSFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInSSFile"},{"display_html":"parseInBibFile :: Parser FilePath","name":"parseInBibFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInBibFile"},{"display_html":"parseBasePaths :: Parser [FilePath]","name":"parseBasePaths","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseBasePaths"},{"display_html":"parseBasePath :: Parser FilePath","name":"parseBasePath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseBasePath"},{"display_html":"parseInGenoWithoutSNPSet :: Parser GenotypeDataSpec","name":"parseInGenoWithoutSNPSet","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInGenoWithoutSNPSet"},{"display_html":"parseInGenotypeDataset :: Parser GenotypeDataSpec","name":"parseInGenotypeDataset","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInGenotypeDataset"},{"display_html":"type GenoInput = (GenotypeFormatSpec, FilePath, FilePath, FilePath)","name":"GenoInput","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#t:GenoInput"},{"display_html":"parseInGenoOne :: Parser GenoInput","name":"parseInGenoOne","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInGenoOne"},{"display_html":"parseInGenoSep :: Parser GenoInput","name":"parseInGenoSep","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInGenoSep"},{"display_html":"parseInGenotypeFormat :: Parser GenotypeFormatSpec","name":"parseInGenotypeFormat","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInGenotypeFormat"},{"display_html":"parseInGenoFile :: Parser FilePath","name":"parseInGenoFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInGenoFile"},{"display_html":"parseInSnpFile :: Parser FilePath","name":"parseInSnpFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInSnpFile"},{"display_html":"parseInIndFile :: Parser FilePath","name":"parseInIndFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInIndFile"},{"display_html":"parseGenotypeSNPSet :: Parser (Maybe SNPSetSpec)","name":"parseGenotypeSNPSet","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseGenotypeSNPSet"},{"display_html":"parseOutPackagePath :: Parser FilePath","name":"parseOutPackagePath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOutPackagePath"},{"display_html":"parseMaybeOutPackagePath :: Parser (Maybe FilePath)","name":"parseMaybeOutPackagePath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeOutPackagePath"},{"display_html":"parseMaybeOutPackageName :: Parser (Maybe String)","name":"parseMaybeOutPackageName","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeOutPackageName"},{"display_html":"parseForgeOutMode :: Parser ForgeOutMode","name":"parseForgeOutMode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseForgeOutMode"},{"display_html":"parseOutOnlyGenoFlag :: Parser ForgeOutMode","name":"parseOutOnlyGenoFlag","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOutOnlyGenoFlag"},{"display_html":"parseOutOnlyGenoSwitch :: Parser Bool","name":"parseOutOnlyGenoSwitch","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOutOnlyGenoSwitch"},{"display_html":"onlyGenoOutputDocu :: Mod FlagFields a","name":"onlyGenoOutputDocu","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:onlyGenoOutputDocu"},{"display_html":"parseMinimalOutputFlag :: Parser ForgeOutMode","name":"parseMinimalOutputFlag","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMinimalOutputFlag"},{"display_html":"parseMinimalOutputSwitch :: Parser Bool","name":"parseMinimalOutputSwitch","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMinimalOutputSwitch"},{"display_html":"minimalOutputDocu :: Mod FlagFields a","name":"minimalOutputDocu","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:minimalOutputDocu"},{"display_html":"parsePreservePymlFlag :: Parser ForgeOutMode","name":"parsePreservePymlFlag","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parsePreservePymlFlag"},{"display_html":"parsePackageWise :: Parser Bool","name":"parsePackageWise","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parsePackageWise"},{"display_html":"parseMaybeSnpFile :: Parser (Maybe FilePath)","name":"parseMaybeSnpFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeSnpFile"},{"display_html":"parseListEntity :: Parser ListEntity","name":"parseListEntity","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseListEntity"},{"display_html":"parseRawOutput :: Parser Bool","name":"parseRawOutput","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseRawOutput"},{"display_html":"parseOnlyLatest :: Parser Bool","name":"parseOnlyLatest","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOnlyLatest"},{"display_html":"parseIgnoreGeno :: Parser Bool","name":"parseIgnoreGeno","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseIgnoreGeno"},{"display_html":"parseFullGeno :: Parser Bool","name":"parseFullGeno","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseFullGeno"},{"display_html":"parseNoExitCode :: Parser Bool","name":"parseNoExitCode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseNoExitCode"},{"display_html":"parseIgnoreDuplicates :: Parser Bool","name":"parseIgnoreDuplicates","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseIgnoreDuplicates"},{"display_html":"parseRemoteURL :: Parser String","name":"parseRemoteURL","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseRemoteURL"},{"display_html":"parseUpgrade :: Parser Bool","name":"parseUpgrade","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseUpgrade"},{"display_html":"parseInputPlinkPopMode :: Parser PlinkPopNameMode","name":"parseInputPlinkPopMode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInputPlinkPopMode"},{"display_html":"parseOutputPlinkPopMode :: Parser PlinkPopNameMode","name":"parseOutputPlinkPopMode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOutputPlinkPopMode"},{"display_html":"readPlinkPopName :: String -> Either String PlinkPopNameMode","name":"readPlinkPopName","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:readPlinkPopName"},{"display_html":"parseMaybeZipDir :: Parser (Maybe FilePath)","name":"parseMaybeZipDir","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeZipDir"},{"display_html":"parsePort :: Parser Int","name":"parsePort","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parsePort"},{"display_html":"parseIgnoreChecksums :: Parser Bool","name":"parseIgnoreChecksums","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseIgnoreChecksums"},{"display_html":"parseMaybeCertFiles :: Parser (Maybe (FilePath, [FilePath], FilePath))","name":"parseMaybeCertFiles","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeCertFiles"},{"display_html":"parseKeyFile :: Parser FilePath","name":"parseKeyFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseKeyFile"},{"display_html":"parseChainFile :: Parser FilePath","name":"parseChainFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseChainFile"},{"display_html":"parseCertFile :: Parser FilePath","name":"parseCertFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseCertFile"},{"display_html":"parseArchiveBasePaths :: Parser [(String, FilePath)]","name":"parseArchiveBasePaths","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseArchiveBasePaths"},{"display_html":"parseMaybeArchiveName :: Parser (Maybe String)","name":"parseMaybeArchiveName","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeArchiveName"},{"display_html":"parseJannocoalSourceSpec :: Parser JannoSourceSpec","name":"parseJannocoalSourceSpec","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalSourceSpec"},{"display_html":"parseJannocoalTargetFile :: Parser FilePath","name":"parseJannocoalTargetFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalTargetFile"},{"display_html":"parseJannocoalOutSpec :: Parser (Maybe FilePath)","name":"parseJannocoalOutSpec","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalOutSpec"},{"display_html":"parseJannocoalJannoColumns :: Parser CoalesceJannoColumnSpec","name":"parseJannocoalJannoColumns","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalJannoColumns"},{"display_html":"parseJannocoalOverride :: Parser Bool","name":"parseJannocoalOverride","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalOverride"},{"display_html":"parseJannocoalSourceKey :: Parser String","name":"parseJannocoalSourceKey","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalSourceKey"},{"display_html":"parseJannocoalTargetKey :: Parser String","name":"parseJannocoalTargetKey","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalTargetKey"},{"display_html":"parseJannocoalIdStripRegex :: Parser (Maybe String)","name":"parseJannocoalIdStripRegex","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalIdStripRegex"},{"display_html":"parseOutputOrdered :: Parser Bool","name":"parseOutputOrdered","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOutputOrdered"}] \ No newline at end of file +[{"display_html":"class Makeable a where","name":"Makeable make","module":"Poseidon.ColumnTypesUtils","link":"Poseidon-ColumnTypesUtils.html#t:Makeable"},{"display_html":"parseTypeCSV :: forall a m. (MonadFail m, Makeable a, Typeable a) => String -> ByteString -> m a","name":"parseTypeCSV","module":"Poseidon.ColumnTypesUtils","link":"Poseidon-ColumnTypesUtils.html#v:parseTypeCSV"},{"display_html":"makeInstances :: Name -> String -> DecsQ","name":"makeInstances","module":"Poseidon.ColumnTypesUtils","link":"Poseidon-ColumnTypesUtils.html#v:makeInstances"},{"display_html":"newtype GeneticSex = GeneticSex {}","name":"GeneticSex sfSex GeneticSex","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:GeneticSex"},{"display_html":"newtype GroupName = GroupName Text","name":"GroupName GroupName","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:GroupName"},{"display_html":"newtype JannoAlternativeID = JannoAlternativeID Text","name":"JannoAlternativeID JannoAlternativeID","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoAlternativeID"},{"display_html":"newtype JannoRelationTo = JannoRelationTo Text","name":"JannoRelationTo JannoRelationTo","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoRelationTo"},{"display_html":"data JannoRelationDegree","name":"JannoRelationDegree OtherDegree Unrelated SixthToTenth ThirdToFifth Second Identical First","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoRelationDegree"},{"display_html":"newtype JannoRelationType = JannoRelationType Text","name":"JannoRelationType JannoRelationType","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoRelationType"},{"display_html":"newtype JannoRelationNote = JannoRelationNote Text","name":"JannoRelationNote JannoRelationNote","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoRelationNote"},{"display_html":"newtype JannoCollectionID = JannoCollectionID Text","name":"JannoCollectionID JannoCollectionID","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoCollectionID"},{"display_html":"newtype JannoCountry = JannoCountry Text","name":"JannoCountry JannoCountry","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoCountry"},{"display_html":"newtype JannoCountryISO = JannoCountryISO Country","name":"JannoCountryISO JannoCountryISO","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoCountryISO"},{"display_html":"newtype JannoLocation = JannoLocation Text","name":"JannoLocation JannoLocation","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoLocation"},{"display_html":"newtype JannoSite = JannoSite Text","name":"JannoSite JannoSite","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoSite"},{"display_html":"newtype JannoLatitude = JannoLatitude Double","name":"JannoLatitude JannoLatitude","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoLatitude"},{"display_html":"newtype JannoLongitude = JannoLongitude Double","name":"JannoLongitude JannoLongitude","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoLongitude"},{"display_html":"data JannoDateType","name":"JannoDateType Modern Contextual C14","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoDateType"},{"display_html":"newtype JannoDateC14Labnr = JannoDateC14Labnr Text","name":"JannoDateC14Labnr JannoDateC14Labnr","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoDateC14Labnr"},{"display_html":"newtype JannoDateC14UncalBP = JannoDateC14UncalBP Int","name":"JannoDateC14UncalBP JannoDateC14UncalBP","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoDateC14UncalBP"},{"display_html":"newtype JannoDateC14UncalBPErr = JannoDateC14UncalBPErr Int","name":"JannoDateC14UncalBPErr JannoDateC14UncalBPErr","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoDateC14UncalBPErr"},{"display_html":"newtype JannoDateBCADStart = JannoDateBCADStart Int","name":"JannoDateBCADStart JannoDateBCADStart","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoDateBCADStart"},{"display_html":"newtype JannoDateBCADMedian = JannoDateBCADMedian Int","name":"JannoDateBCADMedian JannoDateBCADMedian","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoDateBCADMedian"},{"display_html":"newtype JannoDateBCADStop = JannoDateBCADStop Int","name":"JannoDateBCADStop JannoDateBCADStop","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoDateBCADStop"},{"display_html":"newtype JannoDateNote = JannoDateNote Text","name":"JannoDateNote JannoDateNote","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoDateNote"},{"display_html":"newtype JannoMTHaplogroup = JannoMTHaplogroup Text","name":"JannoMTHaplogroup JannoMTHaplogroup","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoMTHaplogroup"},{"display_html":"newtype JannoYHaplogroup = JannoYHaplogroup Text","name":"JannoYHaplogroup JannoYHaplogroup","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoYHaplogroup"},{"display_html":"newtype JannoSourceTissue = JannoSourceTissue Text","name":"JannoSourceTissue JannoSourceTissue","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoSourceTissue"},{"display_html":"newtype JannoNrLibraries = JannoNrLibraries Int","name":"JannoNrLibraries JannoNrLibraries","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoNrLibraries"},{"display_html":"newtype JannoLibraryName = JannoLibraryName Text","name":"JannoLibraryName JannoLibraryName","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoLibraryName"},{"display_html":"data JannoCaptureType","name":"JannoCaptureType ReferenceGenome OtherCapture TwistAncientDNA ArborAncestralPlus ArborPrimePlus ArborComplete A1240K Shotgun","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoCaptureType"},{"display_html":"data JannoUDG","name":"JannoUDG Mixed Plus Half Minus","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoUDG"},{"display_html":"data JannoLibraryBuilt","name":"JannoLibraryBuilt MixedSSDS SS DS Other","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoLibraryBuilt"},{"display_html":"data JannoGenotypePloidy","name":"JannoGenotypePloidy Haploid Diploid","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoGenotypePloidy"},{"display_html":"newtype JannoDataPreparationPipelineURL = JannoDataPreparationPipelineURL Text","name":"JannoDataPreparationPipelineURL JannoDataPreparationPipelineURL","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoDataPreparationPipelineURL"},{"display_html":"newtype JannoEndogenous = JannoEndogenous Double","name":"JannoEndogenous JannoEndogenous","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoEndogenous"},{"display_html":"newtype JannoNrSNPs = JannoNrSNPs Int","name":"JannoNrSNPs JannoNrSNPs","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoNrSNPs"},{"display_html":"newtype JannoCoverageOnTargets = JannoCoverageOnTargets Double","name":"JannoCoverageOnTargets JannoCoverageOnTargets","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoCoverageOnTargets"},{"display_html":"newtype JannoDamage = JannoDamage Double","name":"JannoDamage JannoDamage","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoDamage"},{"display_html":"newtype JannoContamination = JannoContamination Text","name":"JannoContamination JannoContamination","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoContamination"},{"display_html":"newtype JannoContaminationErr = JannoContaminationErr Text","name":"JannoContaminationErr JannoContaminationErr","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoContaminationErr"},{"display_html":"newtype JannoContaminationMeas = JannoContaminationMeas Text","name":"JannoContaminationMeas JannoContaminationMeas","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoContaminationMeas"},{"display_html":"newtype JannoContaminationNote = JannoContaminationNote Text","name":"JannoContaminationNote JannoContaminationNote","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoContaminationNote"},{"display_html":"data JannoGeneticSourceAccessionID","name":"JannoGeneticSourceAccessionID OtherID INSDCAnalysis INSDCRun INSDCExperiment INSDCSample INSDCBioSample INSDCStudy INSDCProject","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoGeneticSourceAccessionID"},{"display_html":"newtype JannoPrimaryContact = JannoPrimaryContact Text","name":"JannoPrimaryContact JannoPrimaryContact","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoPrimaryContact"},{"display_html":"newtype JannoPublication = JannoPublication Text","name":"JannoPublication JannoPublication","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoPublication"},{"display_html":"newtype JannoComment = JannoComment Text","name":"JannoComment JannoComment","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoComment"},{"display_html":"newtype JannoKeyword = JannoKeyword Text","name":"JannoKeyword JannoKeyword","module":"Poseidon.ColumnTypes","link":"Poseidon-ColumnTypes.html#t:JannoKeyword"},{"display_html":"avg :: [Double] -> Double","name":"avg","module":"Poseidon.MathHelpers","link":"Poseidon-MathHelpers.html#v:avg"},{"display_html":"roundTo :: Int -> Double -> Double","name":"roundTo","module":"Poseidon.MathHelpers","link":"Poseidon-MathHelpers.html#v:roundTo"},{"display_html":"roundToStr :: (PrintfArg a, Floating a) => Int -> a -> String","name":"roundToStr","module":"Poseidon.MathHelpers","link":"Poseidon-MathHelpers.html#v:roundToStr"},{"display_html":"stdev :: [Double] -> Double","name":"stdev","module":"Poseidon.MathHelpers","link":"Poseidon-MathHelpers.html#v:stdev"},{"display_html":"meanAndSdRoundTo :: Int -> [Double] -> String","name":"meanAndSdRoundTo","module":"Poseidon.MathHelpers","link":"Poseidon-MathHelpers.html#v:meanAndSdRoundTo"},{"display_html":"meanAndSdInteger :: [Double] -> String","name":"meanAndSdInteger","module":"Poseidon.MathHelpers","link":"Poseidon-MathHelpers.html#v:meanAndSdInteger"},{"display_html":"validPoseidonVersions :: [PoseidonVersion]","name":"validPoseidonVersions","module":"Poseidon.PoseidonVersion","link":"Poseidon-PoseidonVersion.html#v:validPoseidonVersions"},{"display_html":"showPoseidonVersion :: PoseidonVersion -> String","name":"showPoseidonVersion","module":"Poseidon.PoseidonVersion","link":"Poseidon-PoseidonVersion.html#v:showPoseidonVersion"},{"display_html":"latestPoseidonVersion :: PoseidonVersion","name":"latestPoseidonVersion","module":"Poseidon.PoseidonVersion","link":"Poseidon-PoseidonVersion.html#v:latestPoseidonVersion"},{"display_html":"asVersion :: PoseidonVersion -> Version","name":"asVersion","module":"Poseidon.PoseidonVersion","link":"Poseidon-PoseidonVersion.html#v:asVersion"},{"display_html":"minimalRequiredClientVersion :: Version","name":"minimalRequiredClientVersion","module":"Poseidon.PoseidonVersion","link":"Poseidon-PoseidonVersion.html#v:minimalRequiredClientVersion"},{"display_html":"data PoseidonException","name":"PoseidonException PoseidonGenotypeExceptionForward PoseidonYamlParseException PoseidonPackageException PoseidonPackageVersionException PoseidonPackageMissingVersionException PoseidonIndSearchException PoseidonGenotypeException PoseidonHttpExceptionForward PoseidonFileRowException PoseidonFileConsistencyException PoseidonCrossFileConsistencyException PoseidonCollectionException PoseidonFileExistenceException PoseidonFileChecksumException PoseidonFStatsFormatException PoseidonBibTeXException PoseidonPoseidonEntityParsingException PoseidonForgeEntitiesException PoseidonEmptyForgeException PoseidonNewPackageConstructionException PoseidonRemoteJSONParsingException PoseidonGenericException PoseidonEmptyOutPacNameException PoseidonUnequalBaseDirException PoseidonServerCommunicationException PoseidonUnzipException PoseidonChronicleException PoseidonGitException PoseidonCantPreserveException","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:PoseidonException"},{"display_html":"renderPoseidonException :: PoseidonException -> String","name":"renderPoseidonException","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:renderPoseidonException"},{"display_html":"usePoseidonLogger :: LogMode -> TestMode -> PlinkPopNameMode -> ErrorLength -> PoseidonIO a -> IO a","name":"usePoseidonLogger","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:usePoseidonLogger"},{"display_html":"testLog :: PoseidonIO a -> IO a","name":"testLog","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:testLog"},{"display_html":"type PoseidonIO = ReaderT Env IO","name":"PoseidonIO","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:PoseidonIO"},{"display_html":"envLogAction :: PoseidonIO LogA","name":"envLogAction","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:envLogAction"},{"display_html":"envInputPlinkMode :: PoseidonIO PlinkPopNameMode","name":"envInputPlinkMode","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:envInputPlinkMode"},{"display_html":"envErrorLength :: PoseidonIO ErrorLength","name":"envErrorLength","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:envErrorLength"},{"display_html":"data LogMode","name":"LogMode NoLog SimpleLog DefaultLog ServerLog VerboseLog","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:LogMode"},{"display_html":"checkFile :: FilePath -> Maybe String -> IO ()","name":"checkFile","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:checkFile"},{"display_html":"getChecksum :: FilePath -> IO String","name":"getChecksum","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:getChecksum"},{"display_html":"logWarning :: String -> PoseidonIO ()","name":"logWarning","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:logWarning"},{"display_html":"logInfo :: String -> PoseidonIO ()","name":"logInfo","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:logInfo"},{"display_html":"logDebug :: String -> PoseidonIO ()","name":"logDebug","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:logDebug"},{"display_html":"logError :: String -> PoseidonIO ()","name":"logError","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:logError"},{"display_html":"type LogA = LogAction IO Message","name":"LogA","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:LogA"},{"display_html":"noLog :: LogA","name":"noLog","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:noLog"},{"display_html":"logWithEnv :: MonadIO m => LogA -> PoseidonIO () -> m ()","name":"logWithEnv","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:logWithEnv"},{"display_html":"padRight :: Int -> String -> String","name":"padRight","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:padRight"},{"display_html":"padLeft :: Int -> String -> String","name":"padLeft","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:padLeft"},{"display_html":"determinePackageOutName :: Maybe String -> FilePath -> IO String","name":"determinePackageOutName","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:determinePackageOutName"},{"display_html":"data PlinkPopNameMode","name":"PlinkPopNameMode PlinkPopNameAsBoth PlinkPopNameAsFamily PlinkPopNameAsPhenotype","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:PlinkPopNameMode"},{"display_html":"data TestMode","name":"TestMode Testing Production","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:TestMode"},{"display_html":"data Env = Env {}","name":"Env Env _envLogAction _envTestMode _envInputPlinkMode _envErrorLength","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:Env"},{"display_html":"uniquePO :: Ord a => [a] -> [a]","name":"uniquePO","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:uniquePO"},{"display_html":"uniqueRO :: Ord a => [a] -> [a]","name":"uniqueRO","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:uniqueRO"},{"display_html":"showParsecErr :: ParseError -> String","name":"showParsecErr","module":"Poseidon.Utils","link":"Poseidon-Utils.html#v:showParsecErr"},{"display_html":"data ErrorLength","name":"ErrorLength CharInf CharCount","module":"Poseidon.Utils","link":"Poseidon-Utils.html#t:ErrorLength"},{"display_html":"data JannoRow = JannoRow {}","name":"JannoRow JannoRow jAdditionalColumns jPoseidonID jGeneticSex jGroupName jAlternativeIDs jRelationTo jRelationDegree jRelationType jRelationNote jCollectionID jCountry jCountryISO jLocation jSite jLatitude jLongitude jDateType jDateC14Labnr jDateC14UncalBP jDateC14UncalBPErr jDateBCADStart jDateBCADMedian jDateBCADStop jDateNote jMTHaplogroup jYHaplogroup jSourceTissue jNrLibraries jLibraryNames jCaptureType jUDG jLibraryBuilt jGenotypePloidy jDataPreparationPipelineURL jEndogenous jNrSNPs jCoverageOnTargets jDamage jContamination jContaminationErr jContaminationMeas jContaminationNote jGeneticSourceAccessionIDs jPrimaryContact jPublication jComments jKeywords","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoRow"},{"display_html":"newtype GeneticSex = GeneticSex {}","name":"GeneticSex GeneticSex sfSex","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:GeneticSex"},{"display_html":"newtype GroupName = GroupName Text","name":"GroupName GroupName","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:GroupName"},{"display_html":"newtype ListColumn a = ListColumn {}","name":"ListColumn ListColumn getListColumn","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:ListColumn"},{"display_html":"data Sex","name":"Sex Unknown Female Male","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:Sex"},{"display_html":"newtype JannoCountryISO = JannoCountryISO Country","name":"JannoCountryISO JannoCountryISO","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoCountryISO"},{"display_html":"newtype JannoLatitude = JannoLatitude Double","name":"JannoLatitude JannoLatitude","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoLatitude"},{"display_html":"newtype JannoLongitude = JannoLongitude Double","name":"JannoLongitude JannoLongitude","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoLongitude"},{"display_html":"data JannoDateType","name":"JannoDateType C14 Contextual Modern","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoDateType"},{"display_html":"newtype JannoDateBCADMedian = JannoDateBCADMedian Int","name":"JannoDateBCADMedian JannoDateBCADMedian","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoDateBCADMedian"},{"display_html":"data JannoCaptureType","name":"JannoCaptureType Shotgun A1240K ArborComplete ArborPrimePlus ArborAncestralPlus TwistAncientDNA OtherCapture ReferenceGenome","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoCaptureType"},{"display_html":"data JannoGenotypePloidy","name":"JannoGenotypePloidy Diploid Haploid","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoGenotypePloidy"},{"display_html":"data JannoUDG","name":"JannoUDG Minus Half Plus Mixed","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoUDG"},{"display_html":"data JannoRelationDegree","name":"JannoRelationDegree First Identical Second ThirdToFifth SixthToTenth Unrelated OtherDegree","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoRelationDegree"},{"display_html":"data JannoLibraryBuilt","name":"JannoLibraryBuilt Other DS SS MixedSSDS","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoLibraryBuilt"},{"display_html":"writeJannoFile :: FilePath -> JannoRows -> IO ()","name":"writeJannoFile","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:writeJannoFile"},{"display_html":"readJannoFile :: FilePath -> PoseidonIO JannoRows","name":"readJannoFile","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:readJannoFile"},{"display_html":"createMinimalJanno :: [EigenstratIndEntry] -> JannoRows","name":"createMinimalJanno","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:createMinimalJanno"},{"display_html":"createMinimalSample :: EigenstratIndEntry -> JannoRow","name":"createMinimalSample","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:createMinimalSample"},{"display_html":"jannoHeaderString :: [String]","name":"jannoHeaderString","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:jannoHeaderString"},{"display_html":"newtype CsvNamedRecord = CsvNamedRecord NamedRecord","name":"CsvNamedRecord CsvNamedRecord","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:CsvNamedRecord"},{"display_html":"newtype JannoRows = JannoRows [JannoRow]","name":"JannoRows JannoRows","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoRows"},{"display_html":"type JannoStringList = ListColumn String","name":"JannoStringList","module":"Poseidon.Janno","link":"Poseidon-Janno.html#t:JannoStringList"},{"display_html":"filterLookup :: FromField a => NamedRecord -> ByteString -> Parser a","name":"filterLookup","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:filterLookup"},{"display_html":"filterLookupOptional :: FromField a => NamedRecord -> ByteString -> Parser (Maybe a)","name":"filterLookupOptional","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:filterLookupOptional"},{"display_html":"getCsvNR :: CsvNamedRecord -> NamedRecord","name":"getCsvNR","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:getCsvNR"},{"display_html":"encodingOptions :: EncodeOptions","name":"encodingOptions","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:encodingOptions"},{"display_html":"decodingOptions :: DecodeOptions","name":"decodingOptions","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:decodingOptions"},{"display_html":"explicitNA :: ByteString -> ByteString","name":"explicitNA","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:explicitNA"},{"display_html":"removeUselessSuffix :: String -> String","name":"removeUselessSuffix","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:removeUselessSuffix"},{"display_html":"parseCsvParseError :: Parser CsvParseError","name":"parseCsvParseError","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:parseCsvParseError"},{"display_html":"renderCsvParseError :: CsvParseError -> String","name":"renderCsvParseError","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:renderCsvParseError"},{"display_html":"getMaybeListColumn :: Maybe (ListColumn a) -> [a]","name":"getMaybeListColumn","module":"Poseidon.Janno","link":"Poseidon-Janno.html#v:getMaybeListColumn"},{"display_html":"data AccessionID","name":"AccessionID OtherID INSDCAnalysis INSDCRun INSDCExperiment INSDCSample INSDCBioSample INSDCStudy INSDCProject","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:AccessionID"},{"display_html":"makeAccessionID :: MonadFail m => String -> m AccessionID","name":"makeAccessionID","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeAccessionID"},{"display_html":"newtype JURI = JURI String","name":"JURI JURI","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:JURI"},{"display_html":"makeJURI :: MonadFail m => String -> m JURI","name":"makeJURI","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeJURI"},{"display_html":"data SSFUDG","name":"SSFUDG SSFPlus SSFHalf SSFMinus","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:SSFUDG"},{"display_html":"makeSSFUDG :: MonadFail m => String -> m SSFUDG","name":"makeSSFUDG","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeSSFUDG"},{"display_html":"data SSFLibraryBuilt","name":"SSFLibraryBuilt SSFSS SSFDS","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:SSFLibraryBuilt"},{"display_html":"makeSSFLibraryBuilt :: MonadFail m => String -> m SSFLibraryBuilt","name":"makeSSFLibraryBuilt","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeSSFLibraryBuilt"},{"display_html":"newtype SeqSourceRows = SeqSourceRows {}","name":"SeqSourceRows getSeqSourceRowList SeqSourceRows","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:SeqSourceRows"},{"display_html":"newtype AccessionIDRun = AccessionIDRun {}","name":"AccessionIDRun getRunAccession AccessionIDRun","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:AccessionIDRun"},{"display_html":"makeAccessionIDRun :: MonadFail m => String -> m AccessionIDRun","name":"makeAccessionIDRun","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeAccessionIDRun"},{"display_html":"newtype AccessionIDSample = AccessionIDSample {}","name":"AccessionIDSample getSampleAccession AccessionIDSample","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:AccessionIDSample"},{"display_html":"makeAccessionIDSample :: MonadFail m => String -> m AccessionIDSample","name":"makeAccessionIDSample","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeAccessionIDSample"},{"display_html":"newtype AccessionIDStudy = AccessionIDStudy {}","name":"AccessionIDStudy getStudyAccession AccessionIDStudy","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:AccessionIDStudy"},{"display_html":"makeAccessionIDStudy :: MonadFail m => String -> m AccessionIDStudy","name":"makeAccessionIDStudy","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeAccessionIDStudy"},{"display_html":"newtype SimpleDate = SimpleDate Day","name":"SimpleDate SimpleDate","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:SimpleDate"},{"display_html":"makeSimpleDate :: MonadFail m => String -> m SimpleDate","name":"makeSimpleDate","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeSimpleDate"},{"display_html":"newtype MD5 = MD5 String","name":"MD5 MD5","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:MD5"},{"display_html":"makeMD5 :: MonadFail m => String -> m MD5","name":"makeMD5","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:makeMD5"},{"display_html":"isMD5Hash :: String -> Bool","name":"isMD5Hash","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:isMD5Hash"},{"display_html":"data SeqSourceRow = SeqSourceRow {}","name":"SeqSourceRow sSubmittedFTP sReadCount sFastqMD5 sFastqBytes sFastqASPERA sFastqFTP sLibraryStrategy sLibraryName sInstrumentPlatform sLibrarySource sLibraryLayout sInstrumentModel sLastUpdated sFirstPublic sSecondarySampleAccession sSampleAlias sRunAccession sStudyAccession sSampleAccession sLibraryBuilt sUDG sPoseidonID sAdditionalColumns SeqSourceRow","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#t:SeqSourceRow"},{"display_html":"seqSourceHeader :: [ByteString]","name":"seqSourceHeader","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:seqSourceHeader"},{"display_html":"seqSourceHeaderString :: [String]","name":"seqSourceHeaderString","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:seqSourceHeaderString"},{"display_html":"seqSourceRefHashMap :: HashMap ByteString ()","name":"seqSourceRefHashMap","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:seqSourceRefHashMap"},{"display_html":"writeSeqSourceFile :: FilePath -> SeqSourceRows -> IO ()","name":"writeSeqSourceFile","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:writeSeqSourceFile"},{"display_html":"readSeqSourceFile :: FilePath -> PoseidonIO SeqSourceRows","name":"readSeqSourceFile","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:readSeqSourceFile"},{"display_html":"readSeqSourceFileRow :: FilePath -> (Int, ByteString) -> PoseidonIO (Either PoseidonException SeqSourceRow)","name":"readSeqSourceFileRow","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:readSeqSourceFileRow"},{"display_html":"warnSeqSourceConsistency :: FilePath -> SeqSourceRows -> PoseidonIO ()","name":"warnSeqSourceConsistency","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:warnSeqSourceConsistency"},{"display_html":"checkRunsUnique :: SeqSourceRows -> Bool","name":"checkRunsUnique","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:checkRunsUnique"},{"display_html":"checkAtLeastOnePoseidonID :: SeqSourceRows -> Bool","name":"checkAtLeastOnePoseidonID","module":"Poseidon.SequencingSource","link":"Poseidon-SequencingSource.html#v:checkAtLeastOnePoseidonID"},{"display_html":"data GenoDataSource","name":"GenoDataSource getGenoDirect getPacBaseDirs GenoDirect PacBaseDir","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#t:GenoDataSource"},{"display_html":"data GenotypeDataSpec = GenotypeDataSpec {}","name":"GenotypeDataSpec snpSet indFileChkSum indFile snpFileChkSum snpFile genoFileChkSum genoFile format GenotypeDataSpec","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#t:GenotypeDataSpec"},{"display_html":"data GenotypeFormatSpec","name":"GenotypeFormatSpec GenotypeFormatPlink GenotypeFormatEigenstrat","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#t:GenotypeFormatSpec"},{"display_html":"data SNPSetSpec","name":"SNPSetSpec SNPSetOther SNPSetHumanOrigins SNPSet1240K","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#t:SNPSetSpec"},{"display_html":"snpSetMergeList :: [SNPSetSpec] -> Bool -> SNPSetSpec","name":"snpSetMergeList","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:snpSetMergeList"},{"display_html":"snpSetMerge :: SNPSetSpec -> SNPSetSpec -> Bool -> SNPSetSpec","name":"snpSetMerge","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:snpSetMerge"},{"display_html":"loadIndividuals :: FilePath -> GenotypeDataSpec -> PoseidonIO [EigenstratIndEntry]","name":"loadIndividuals","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:loadIndividuals"},{"display_html":"loadGenotypeData :: MonadSafe m => FilePath -> GenotypeDataSpec -> PlinkPopNameMode -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())","name":"loadGenotypeData","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:loadGenotypeData"},{"display_html":"joinEntries :: MonadIO m => LogA -> [Int] -> [String] -> [Maybe (EigenstratSnpEntry, GenoLine)] -> m (EigenstratSnpEntry, GenoLine)","name":"joinEntries","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:joinEntries"},{"display_html":"getConsensusSnpEntry :: MonadIO m => LogA -> [EigenstratSnpEntry] -> m EigenstratSnpEntry","name":"getConsensusSnpEntry","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:getConsensusSnpEntry"},{"display_html":"recodeAlleles :: EigenstratSnpEntry -> EigenstratSnpEntry -> GenoLine -> Either String GenoLine","name":"recodeAlleles","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:recodeAlleles"},{"display_html":"printSNPCopyProgress :: MonadIO m => LogA -> UTCTime -> Pipe a a m ()","name":"printSNPCopyProgress","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:printSNPCopyProgress"},{"display_html":"selectIndices :: [Int] -> (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine)","name":"selectIndices","module":"Poseidon.GenotypeData","link":"Poseidon-GenotypeData.html#v:selectIndices"},{"display_html":"data ContributorSpec = ContributorSpec {}","name":"ContributorSpec ContributorSpec contributorName contributorEmail contributorORCID","module":"Poseidon.Contributor","link":"Poseidon-Contributor.html#t:ContributorSpec"},{"display_html":"contributorSpecParser :: Parser [ContributorSpec]","name":"contributorSpecParser","module":"Poseidon.Contributor","link":"Poseidon-Contributor.html#v:contributorSpecParser"},{"display_html":"data ORCID = ORCID {}","name":"ORCID ORCID _orcidNums _orcidChecksum","module":"Poseidon.Contributor","link":"Poseidon-Contributor.html#t:ORCID"},{"display_html":"dummyBibEntry :: BibEntry","name":"dummyBibEntry","module":"Poseidon.BibFile","link":"Poseidon-BibFile.html#v:dummyBibEntry"},{"display_html":"readBibTeXFile :: FilePath -> IO BibTeX","name":"readBibTeXFile","module":"Poseidon.BibFile","link":"Poseidon-BibFile.html#v:readBibTeXFile"},{"display_html":"writeBibTeXFile :: FilePath -> BibTeX -> IO ()","name":"writeBibTeXFile","module":"Poseidon.BibFile","link":"Poseidon-BibFile.html#v:writeBibTeXFile"},{"display_html":"type BibTeX = [BibEntry]","name":"BibTeX","module":"Poseidon.BibFile","link":"Poseidon-BibFile.html#t:BibTeX"},{"display_html":"data BibEntry = BibEntry {}","name":"BibEntry BibEntry bibEntryType bibEntryId bibEntryFields","module":"Poseidon.BibFile","link":"Poseidon-BibFile.html#t:BibEntry"},{"display_html":"data VersionComponent","name":"VersionComponent Major Minor Patch","module":"Poseidon.Version","link":"Poseidon-Version.html#t:VersionComponent"},{"display_html":"updateThreeComponentVersion :: VersionComponent -> Version -> Version","name":"updateThreeComponentVersion","module":"Poseidon.Version","link":"Poseidon-Version.html#v:updateThreeComponentVersion"},{"display_html":"parseVersion :: Parser Version","name":"parseVersion","module":"Poseidon.Version","link":"Poseidon-Version.html#v:parseVersion"},{"display_html":"data IndividualInfo = IndividualInfo {}","name":"IndividualInfo IndividualInfo indInfoName indInfoGroups indInfoPac","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:IndividualInfo"},{"display_html":"type IndividualInfoCollection = ([IndividualInfo], [Bool])","name":"IndividualInfoCollection","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:IndividualInfoCollection"},{"display_html":"renderNameWithVersion :: HasNameAndVersion a => a -> String","name":"renderNameWithVersion","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:renderNameWithVersion"},{"display_html":"class Eq a => HasNameAndVersion a where","name":"HasNameAndVersion getPacName getPacVersion","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:HasNameAndVersion"},{"display_html":"data PoseidonEntity","name":"PoseidonEntity Pac Group Ind SpecificInd","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:PoseidonEntity"},{"display_html":"data SignedEntity","name":"SignedEntity Include Exclude","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:SignedEntity"},{"display_html":"hasVersion :: HasNameAndVersion a => a -> Bool","name":"hasVersion","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:hasVersion"},{"display_html":"type EntitiesList = [PoseidonEntity]","name":"EntitiesList","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:EntitiesList"},{"display_html":"type SignedEntitiesList = [SignedEntity]","name":"SignedEntitiesList","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:SignedEntitiesList"},{"display_html":"data PacNameAndVersion = PacNameAndVersion {}","name":"PacNameAndVersion PacNameAndVersion panavName panavVersion","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:PacNameAndVersion"},{"display_html":"makePacNameAndVersion :: HasNameAndVersion a => a -> PacNameAndVersion","name":"makePacNameAndVersion","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:makePacNameAndVersion"},{"display_html":"isLatestInCollection :: (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool","name":"isLatestInCollection","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:isLatestInCollection"},{"display_html":"class EntitySpec a","name":"EntitySpec","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:EntitySpec"},{"display_html":"resolveUniqueEntityIndices :: EntitySpec a => Bool -> [a] -> IndividualInfoCollection -> PoseidonIO [Int]","name":"resolveUniqueEntityIndices","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:resolveUniqueEntityIndices"},{"display_html":"indInfoConformsToEntitySpecs :: EntitySpec a => IndividualInfo -> Bool -> [a] -> Bool","name":"indInfoConformsToEntitySpecs","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:indInfoConformsToEntitySpecs"},{"display_html":"underlyingEntity :: EntitySpec a => a -> PoseidonEntity","name":"underlyingEntity","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:underlyingEntity"},{"display_html":"entitySpecParser :: EntitySpec a => Parser a","name":"entitySpecParser","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:entitySpecParser"},{"display_html":"readEntitiesFromFile :: EntitySpec a => FilePath -> IO [a]","name":"readEntitiesFromFile","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:readEntitiesFromFile"},{"display_html":"readEntitiesFromString :: EntitySpec a => String -> Either PoseidonException [a]","name":"readEntitiesFromString","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:readEntitiesFromString"},{"display_html":"determineNonExistentEntities :: EntitySpec a => [a] -> IndividualInfoCollection -> EntitiesList","name":"determineNonExistentEntities","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:determineNonExistentEntities"},{"display_html":"determineRelevantPackages :: (MonadThrow m, EntitySpec a) => [a] -> IndividualInfoCollection -> m [PacNameAndVersion]","name":"determineRelevantPackages","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:determineRelevantPackages"},{"display_html":"entitiesListP :: EntitySpec a => Parser [a]","name":"entitiesListP","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:entitiesListP"},{"display_html":"data EntityInput a","name":"EntityInput EntitiesDirect EntitiesFromFile","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#t:EntityInput"},{"display_html":"readEntityInputs :: (MonadIO m, EntitySpec a, Eq a) => [EntityInput a] -> m [a]","name":"readEntityInputs","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:readEntityInputs"},{"display_html":"checkIfAllEntitiesExist :: EntitySpec a => [a] -> IndividualInfoCollection -> PoseidonIO ()","name":"checkIfAllEntitiesExist","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:checkIfAllEntitiesExist"},{"display_html":"resolveEntityIndices :: EntitySpec a => Bool -> [a] -> IndividualInfoCollection -> [Int]","name":"resolveEntityIndices","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:resolveEntityIndices"},{"display_html":"reportDuplicateIndividuals :: [IndividualInfo] -> [(IndividualInfo, [PoseidonEntity])]","name":"reportDuplicateIndividuals","module":"Poseidon.EntityTypes","link":"Poseidon-EntityTypes.html#v:reportDuplicateIndividuals"},{"display_html":"data ServerApiReturnType = ServerApiReturnType {}","name":"ServerApiReturnType ServerApiReturnType _apiMessages _apiResponse","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:ServerApiReturnType"},{"display_html":"data ApiReturnData","name":"ApiReturnData ApiReturnPackageInfo ApiReturnGroupInfo ApiReturnExtIndividualInfo","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:ApiReturnData"},{"display_html":"processApiResponse :: String -> Bool -> PoseidonIO ApiReturnData","name":"processApiResponse","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#v:processApiResponse"},{"display_html":"data ArchiveEndpoint = ArchiveEndpoint {}","name":"ArchiveEndpoint ArchiveEndpoint _aeServerURL _aeArchiveName","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:ArchiveEndpoint"},{"display_html":"data PackageInfo = PackageInfo {}","name":"PackageInfo PackageInfo pPac pIsLatest pPosVersion pDescription pLastModified pNrIndividuals","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:PackageInfo"},{"display_html":"data GroupInfo = GroupInfo {}","name":"GroupInfo GroupInfo gName gPackage gIsLatest gNrIndividuals","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:GroupInfo"},{"display_html":"data ExtendedIndividualInfo = ExtendedIndividualInfo {}","name":"ExtendedIndividualInfo ExtendedIndividualInfo extIndInfoName extIndInfoGroups extIndInfoPac extIndInfoIsLatest extIndInfoAddCols","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:ExtendedIndividualInfo"},{"display_html":"extIndInfo2IndInfoCollection :: [ExtendedIndividualInfo] -> IndividualInfoCollection","name":"extIndInfo2IndInfoCollection","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#v:extIndInfo2IndInfoCollection"},{"display_html":"qDefault :: Maybe String -> String","name":"qDefault","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#v:qDefault"},{"display_html":"qArchive :: Maybe String -> String","name":"qArchive","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#v:qArchive"},{"display_html":"qPacVersion :: Maybe Version -> String","name":"qPacVersion","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#v:qPacVersion"},{"display_html":"(+&+) :: String -> String -> String","name":"+&+","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#v:-43--38--43-"},{"display_html":"data AddJannoColSpec","name":"AddJannoColSpec AddJannoColList AddJannoColAll","module":"Poseidon.ServerClient","link":"Poseidon-ServerClient.html#t:AddJannoColSpec"},{"display_html":"data PoseidonYamlStruct = PoseidonYamlStruct {}","name":"PoseidonYamlStruct PoseidonYamlStruct _posYamlPoseidonVersion _posYamlTitle _posYamlDescription _posYamlContributor _posYamlPackageVersion _posYamlLastModified _posYamlGenotypeData _posYamlJannoFile _posYamlJannoFileChkSum _posYamlSeqSourceFile _posYamlSeqSourceFileChkSum _posYamlBibFile _posYamlBibFileChkSum _posYamlReadmeFile _posYamlChangelogFile","module":"Poseidon.Package","link":"Poseidon-Package.html#t:PoseidonYamlStruct"},{"display_html":"data PoseidonPackage = PoseidonPackage {}","name":"PoseidonPackage PoseidonPackage posPacBaseDir posPacPoseidonVersion posPacNameAndVersion posPacDescription posPacContributor posPacLastModified posPacGenotypeData posPacJannoFile posPacJanno posPacJannoFileChkSum posPacSeqSourceFile posPacSeqSource posPacSeqSourceFileChkSum posPacBibFile posPacBib posPacBibFileChkSum posPacReadmeFile posPacChangelogFile","module":"Poseidon.Package","link":"Poseidon-Package.html#t:PoseidonPackage"},{"display_html":"data PoseidonException","name":"PoseidonException PoseidonGenotypeExceptionForward PoseidonYamlParseException PoseidonPackageException PoseidonPackageVersionException PoseidonPackageMissingVersionException PoseidonIndSearchException PoseidonGenotypeException PoseidonHttpExceptionForward PoseidonFileRowException PoseidonFileConsistencyException PoseidonCrossFileConsistencyException PoseidonCollectionException PoseidonFileExistenceException PoseidonFileChecksumException PoseidonFStatsFormatException PoseidonBibTeXException PoseidonPoseidonEntityParsingException PoseidonForgeEntitiesException PoseidonEmptyForgeException PoseidonNewPackageConstructionException PoseidonRemoteJSONParsingException PoseidonGenericException PoseidonEmptyOutPacNameException PoseidonUnequalBaseDirException PoseidonServerCommunicationException PoseidonUnzipException PoseidonChronicleException PoseidonGitException PoseidonCantPreserveException","module":"Poseidon.Package","link":"Poseidon-Package.html#t:PoseidonException"},{"display_html":"data PackageReadOptions = PackageReadOptions {}","name":"PackageReadOptions PackageReadOptions _readOptIgnoreChecksums _readOptIgnoreGeno _readOptGenoCheck _readOptFullGeno _readOptIgnorePosVersion _readOptOnlyLatest","module":"Poseidon.Package","link":"Poseidon-Package.html#t:PackageReadOptions"},{"display_html":"findAllPoseidonYmlFiles :: FilePath -> IO [FilePath]","name":"findAllPoseidonYmlFiles","module":"Poseidon.Package","link":"Poseidon-Package.html#v:findAllPoseidonYmlFiles"},{"display_html":"readPoseidonPackageCollection :: PackageReadOptions -> [FilePath] -> PoseidonIO [PoseidonPackage]","name":"readPoseidonPackageCollection","module":"Poseidon.Package","link":"Poseidon-Package.html#v:readPoseidonPackageCollection"},{"display_html":"readPoseidonPackageCollectionWithSkipIndicator :: PackageReadOptions -> [FilePath] -> PoseidonIO ([PoseidonPackage], Bool)","name":"readPoseidonPackageCollectionWithSkipIndicator","module":"Poseidon.Package","link":"Poseidon-Package.html#v:readPoseidonPackageCollectionWithSkipIndicator"},{"display_html":"getJointGenotypeData :: MonadSafe m => LogA -> Bool -> PlinkPopNameMode -> [PoseidonPackage] -> Maybe FilePath -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())","name":"getJointGenotypeData","module":"Poseidon.Package","link":"Poseidon-Package.html#v:getJointGenotypeData"},{"display_html":"getJointJanno :: [PoseidonPackage] -> JannoRows","name":"getJointJanno","module":"Poseidon.Package","link":"Poseidon-Package.html#v:getJointJanno"},{"display_html":"getJointIndividualInfo :: MonadThrow m => [PoseidonPackage] -> m IndividualInfoCollection","name":"getJointIndividualInfo","module":"Poseidon.Package","link":"Poseidon-Package.html#v:getJointIndividualInfo"},{"display_html":"getExtendedIndividualInfo :: MonadThrow m => [PoseidonPackage] -> AddJannoColSpec -> m [ExtendedIndividualInfo]","name":"getExtendedIndividualInfo","module":"Poseidon.Package","link":"Poseidon-Package.html#v:getExtendedIndividualInfo"},{"display_html":"newMinimalPackageTemplate :: FilePath -> String -> GenotypeDataSpec -> PoseidonPackage","name":"newMinimalPackageTemplate","module":"Poseidon.Package","link":"Poseidon-Package.html#v:newMinimalPackageTemplate"},{"display_html":"newPackageTemplate :: FilePath -> String -> GenotypeDataSpec -> Maybe (Either [EigenstratIndEntry] JannoRows) -> SeqSourceRows -> BibTeX -> PoseidonIO PoseidonPackage","name":"newPackageTemplate","module":"Poseidon.Package","link":"Poseidon-Package.html#v:newPackageTemplate"},{"display_html":"renderMismatch :: [String] -> [String] -> String","name":"renderMismatch","module":"Poseidon.Package","link":"Poseidon-Package.html#v:renderMismatch"},{"display_html":"zipWithPadding :: a -> b -> [a] -> [b] -> [(a, b)]","name":"zipWithPadding","module":"Poseidon.Package","link":"Poseidon-Package.html#v:zipWithPadding"},{"display_html":"writePoseidonPackage :: PoseidonPackage -> IO ()","name":"writePoseidonPackage","module":"Poseidon.Package","link":"Poseidon-Package.html#v:writePoseidonPackage"},{"display_html":"defaultPackageReadOptions :: PackageReadOptions","name":"defaultPackageReadOptions","module":"Poseidon.Package","link":"Poseidon-Package.html#v:defaultPackageReadOptions"},{"display_html":"readPoseidonPackage :: PackageReadOptions -> FilePath -> PoseidonIO PoseidonPackage","name":"readPoseidonPackage","module":"Poseidon.Package","link":"Poseidon-Package.html#v:readPoseidonPackage"},{"display_html":"makePseudoPackageFromGenotypeData :: GenotypeDataSpec -> PoseidonIO PoseidonPackage","name":"makePseudoPackageFromGenotypeData","module":"Poseidon.Package","link":"Poseidon-Package.html#v:makePseudoPackageFromGenotypeData"},{"display_html":"getJannoRowsFromPac :: PoseidonPackage -> [JannoRow]","name":"getJannoRowsFromPac","module":"Poseidon.Package","link":"Poseidon-Package.html#v:getJannoRowsFromPac"},{"display_html":"packagesToPackageInfos :: MonadThrow m => [PoseidonPackage] -> m [PackageInfo]","name":"packagesToPackageInfos","module":"Poseidon.Package","link":"Poseidon-Package.html#v:packagesToPackageInfos"},{"display_html":"getAllGroupInfo :: MonadThrow m => [PoseidonPackage] -> m [GroupInfo]","name":"getAllGroupInfo","module":"Poseidon.Package","link":"Poseidon-Package.html#v:getAllGroupInfo"},{"display_html":"validateGeno :: PoseidonPackage -> Bool -> PoseidonIO ()","name":"validateGeno","module":"Poseidon.Package","link":"Poseidon-Package.html#v:validateGeno"},{"display_html":"filterToRelevantPackages :: MonadThrow m => EntitySpec a => [a] -> [PoseidonPackage] -> m [PoseidonPackage]","name":"filterToRelevantPackages","module":"Poseidon.Package","link":"Poseidon-Package.html#v:filterToRelevantPackages"},{"display_html":"data SurveyOptions = SurveyOptions {}","name":"SurveyOptions _surveyOnlyLatest _surveyRawOutput _surveyBaseDirs SurveyOptions","module":"Poseidon.CLI.Survey","link":"Poseidon-CLI-Survey.html#t:SurveyOptions"},{"display_html":"runSurvey :: SurveyOptions -> PoseidonIO ()","name":"runSurvey","module":"Poseidon.CLI.Survey","link":"Poseidon-CLI-Survey.html#v:runSurvey"},{"display_html":"renderPackageWithCompleteness :: Bool -> JannoRows -> SeqSourceRows -> BibTeX -> String","name":"renderPackageWithCompleteness","module":"Poseidon.CLI.Survey","link":"Poseidon-CLI-Survey.html#v:renderPackageWithCompleteness"},{"display_html":"renderJannoCompleteness :: JannoRows -> String","name":"renderJannoCompleteness","module":"Poseidon.CLI.Survey","link":"Poseidon-CLI-Survey.html#v:renderJannoCompleteness"},{"display_html":"class PresenceCountable a where","name":"PresenceCountable countPresence","module":"Poseidon.CLI.Survey","link":"Poseidon-CLI-Survey.html#t:PresenceCountable"},{"display_html":"data SummariseOptions = SummariseOptions {}","name":"SummariseOptions _summariseRawOutput _summariseBaseDirs SummariseOptions","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#t:SummariseOptions"},{"display_html":"pacReadOpts :: PackageReadOptions","name":"pacReadOpts","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:pacReadOpts"},{"display_html":"runSummarise :: SummariseOptions -> PoseidonIO ()","name":"runSummarise","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:runSummarise"},{"display_html":"summariseJannoRows :: JannoRows -> Bool -> IO ()","name":"summariseJannoRows","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:summariseJannoRows"},{"display_html":"paste :: [String] -> String","name":"paste","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:paste"},{"display_html":"uniqueNumber :: Ord a => [a] -> String","name":"uniqueNumber","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:uniqueNumber"},{"display_html":"frequency :: Ord a => [a] -> [(a, Int)]","name":"frequency","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:frequency"},{"display_html":"sortTupelsBySndDesc :: (Ord a, Ord b) => (a, b) -> (a, b) -> Ordering","name":"sortTupelsBySndDesc","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:sortTupelsBySndDesc"},{"display_html":"printFrequency :: Show a => String -> [(a, Int)] -> String","name":"printFrequency","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:printFrequency"},{"display_html":"printFrequencyMaybe :: Show a => String -> [(Maybe a, Int)] -> String","name":"printFrequencyMaybe","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:printFrequencyMaybe"},{"display_html":"maybeShow :: Show a => Maybe a -> String","name":"maybeShow","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:maybeShow"},{"display_html":"printFrequencyString :: String -> [(String, Int)] -> String","name":"printFrequencyString","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:printFrequencyString"},{"display_html":"printFrequencyMaybeString :: String -> [(Maybe String, Int)] -> String","name":"printFrequencyMaybeString","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:printFrequencyMaybeString"},{"display_html":"maybeShowString :: Maybe String -> String","name":"maybeShowString","module":"Poseidon.CLI.Summarise","link":"Poseidon-CLI-Summarise.html#v:maybeShowString"},{"display_html":"data JannoSourceSpec","name":"JannoSourceSpec JannoSourceBaseDirs JannoSourceSingle","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#t:JannoSourceSpec"},{"display_html":"data CoalesceJannoColumnSpec","name":"CoalesceJannoColumnSpec ExcludeJannoColumns IncludeJannoColumns AllJannoColumns","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#t:CoalesceJannoColumnSpec"},{"display_html":"data JannoCoalesceOptions = JannoCoalesceOptions {}","name":"JannoCoalesceOptions _jannocoalesceIdStrip _jannocoalesceTargetKey _jannocoalesceSourceKey _jannocoalesceOverwriteColumns _jannocoalesceJannoColumns _jannocoalesceOutSpec _jannocoalesceTarget _jannocoalesceSource JannoCoalesceOptions","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#t:JannoCoalesceOptions"},{"display_html":"runJannocoalesce :: JannoCoalesceOptions -> PoseidonIO ()","name":"runJannocoalesce","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#v:runJannocoalesce"},{"display_html":"type CounterMismatches = IORef Int","name":"CounterMismatches","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#t:CounterMismatches"},{"display_html":"type CounterCopied = IORef Int","name":"CounterCopied","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#t:CounterCopied"},{"display_html":"makeNewJannoRows :: [JannoRow] -> [JannoRow] -> CoalesceJannoColumnSpec -> Bool -> String -> String -> Maybe String -> PoseidonIO [JannoRow]","name":"makeNewJannoRows","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#v:makeNewJannoRows"},{"display_html":"getKeyFromJanno :: MonadThrow m => JannoRow -> String -> m String","name":"getKeyFromJanno","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#v:getKeyFromJanno"},{"display_html":"matchWithOptionalStrip :: Maybe String -> String -> String -> Bool","name":"matchWithOptionalStrip","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#v:matchWithOptionalStrip"},{"display_html":"mergeRow :: CounterCopied -> JannoRow -> JannoRow -> CoalesceJannoColumnSpec -> Bool -> String -> String -> PoseidonIO JannoRow","name":"mergeRow","module":"Poseidon.CLI.Jannocoalesce","link":"Poseidon-CLI-Jannocoalesce.html#v:mergeRow"},{"display_html":"data InitOptions = InitOptions {}","name":"InitOptions _initMinimal _initPacName _initPacPath _initGenoData InitOptions","module":"Poseidon.CLI.Init","link":"Poseidon-CLI-Init.html#t:InitOptions"},{"display_html":"runInit :: InitOptions -> PoseidonIO ()","name":"runInit","module":"Poseidon.CLI.Init","link":"Poseidon-CLI-Init.html#v:runInit"},{"display_html":"data ValidateOptions = ValidateOptions {}","name":"ValidateOptions _validateOnlyLatest _validateNoExitCode _validatePlan ValidateOptions","module":"Poseidon.CLI.Validate","link":"Poseidon-CLI-Validate.html#t:ValidateOptions"},{"display_html":"data ValidatePlan","name":"ValidatePlan _valPlanIgnorePosVersion _valPlanIgnoreChecksums _valPlanIgnoreDuplicates _valPlanFullGeno _valPlanIgnoreGeno _valPlanBaseDirs ValPlanBib ValPlanSSF ValPlanJanno ValPlanGeno ValPlanPoseidonYaml ValPlanBaseDirs","module":"Poseidon.CLI.Validate","link":"Poseidon-CLI-Validate.html#t:ValidatePlan"},{"display_html":"runValidate :: ValidateOptions -> PoseidonIO ()","name":"runValidate","module":"Poseidon.CLI.Validate","link":"Poseidon-CLI-Validate.html#v:runValidate"},{"display_html":"conclude :: Bool -> Bool -> PoseidonIO ()","name":"conclude","module":"Poseidon.CLI.Validate","link":"Poseidon-CLI-Validate.html#v:conclude"},{"display_html":"runServer :: ServeOptions -> MVar () -> PoseidonIO ()","name":"runServer","module":"Poseidon.CLI.Serve","link":"Poseidon-CLI-Serve.html#v:runServer"},{"display_html":"runServerMainThread :: ServeOptions -> PoseidonIO ()","name":"runServerMainThread","module":"Poseidon.CLI.Serve","link":"Poseidon-CLI-Serve.html#v:runServerMainThread"},{"display_html":"data ServeOptions = ServeOptions {}","name":"ServeOptions ServeOptions cliArchiveBaseDirs cliZipDir cliPort cliIgnoreChecksums cliCertFiles","module":"Poseidon.CLI.Serve","link":"Poseidon-CLI-Serve.html#t:ServeOptions"},{"display_html":"runList :: ListOptions -> PoseidonIO ()","name":"runList","module":"Poseidon.CLI.List","link":"Poseidon-CLI-List.html#v:runList"},{"display_html":"data ListOptions = ListOptions {}","name":"ListOptions ListOptions _listRepoLocation _listListEntity _listRawOutput _listOnlyLatest","module":"Poseidon.CLI.List","link":"Poseidon-CLI-List.html#t:ListOptions"},{"display_html":"data ListEntity","name":"ListEntity ListPackages ListGroups ListIndividuals","module":"Poseidon.CLI.List","link":"Poseidon-CLI-List.html#t:ListEntity"},{"display_html":"data RepoLocationSpec","name":"RepoLocationSpec RepoLocal RepoRemote","module":"Poseidon.CLI.List","link":"Poseidon-CLI-List.html#t:RepoLocationSpec"},{"display_html":"data GenoconvertOptions = GenoconvertOptions {}","name":"GenoconvertOptions _genoconvertOnlyLatest _genoconvertOutPlinkPopMode _genoconvertRemoveOld _genoMaybeOutPackagePath _genoConvertOutOnlyGeno _genoConvertOutFormat _genoconvertGenoSources GenoconvertOptions","module":"Poseidon.CLI.Genoconvert","link":"Poseidon-CLI-Genoconvert.html#t:GenoconvertOptions"},{"display_html":"runGenoconvert :: GenoconvertOptions -> PoseidonIO ()","name":"runGenoconvert","module":"Poseidon.CLI.Genoconvert","link":"Poseidon-CLI-Genoconvert.html#v:runGenoconvert"},{"display_html":"convertGenoTo :: GenotypeFormatSpec -> Bool -> Maybe FilePath -> Bool -> PlinkPopNameMode -> PlinkPopNameMode -> PoseidonPackage -> PoseidonIO ()","name":"convertGenoTo","module":"Poseidon.CLI.Genoconvert","link":"Poseidon-CLI-Genoconvert.html#v:convertGenoTo"},{"display_html":"data ForgeOptions = ForgeOptions {}","name":"ForgeOptions _forgeOutputOrdered _forgeOutputPlinkPopMode _forgePackageWise _forgeOutPacName _forgeOutPacPath _forgeOutMode _forgeOutFormat _forgeIntersect _forgeSnpFile _forgeEntityInput _forgeGenoSources ForgeOptions","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#t:ForgeOptions"},{"display_html":"data ForgeOutMode","name":"ForgeOutMode NormalOut PreservePymlOut MinimalOut GenoOut","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#t:ForgeOutMode"},{"display_html":"preservePyml :: ForgeOutMode -> Bool","name":"preservePyml","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:preservePyml"},{"display_html":"pacReadOpts :: PackageReadOptions","name":"pacReadOpts","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:pacReadOpts"},{"display_html":"runForge :: ForgeOptions -> PoseidonIO ()","name":"runForge","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:runForge"},{"display_html":"sumNonMissingSNPs :: IOVector Int -> (EigenstratSnpEntry, GenoLine) -> SafeT IO (IOVector Int)","name":"sumNonMissingSNPs","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:sumNonMissingSNPs"},{"display_html":"filterSeqSourceRows :: JannoRows -> SeqSourceRows -> SeqSourceRows","name":"filterSeqSourceRows","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:filterSeqSourceRows"},{"display_html":"filterBibEntries :: JannoRows -> BibTeX -> BibTeX","name":"filterBibEntries","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:filterBibEntries"},{"display_html":"fillMissingSnpSets :: [PoseidonPackage] -> PoseidonIO [SNPSetSpec]","name":"fillMissingSnpSets","module":"Poseidon.CLI.Forge","link":"Poseidon-CLI-Forge.html#v:fillMissingSnpSets"},{"display_html":"data FetchOptions = FetchOptions {}","name":"FetchOptions _archiveEnd _entityInput _jaBaseDirs FetchOptions","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#t:FetchOptions"},{"display_html":"data PackageState","name":"PackageState UnequalLocalRemote EqualLocalRemote NotLocal","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#t:PackageState"},{"display_html":"pacReadOpts :: PackageReadOptions","name":"pacReadOpts","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:pacReadOpts"},{"display_html":"runFetch :: FetchOptions -> PoseidonIO ()","name":"runFetch","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:runFetch"},{"display_html":"readServerIndInfo :: ByteString -> IO [ExtendedIndividualInfo]","name":"readServerIndInfo","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:readServerIndInfo"},{"display_html":"readServerPackageInfo :: ByteString -> IO [PackageInfo]","name":"readServerPackageInfo","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:readServerPackageInfo"},{"display_html":"determinePackageState :: [PacNameAndVersion] -> PacNameAndVersion -> (PackageState, String, Maybe Version, [Maybe Version])","name":"determinePackageState","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:determinePackageState"},{"display_html":"handlePackageByState :: FilePath -> FilePath -> ArchiveEndpoint -> (PackageState, String, Maybe Version, [Maybe Version]) -> PoseidonIO ()","name":"handlePackageByState","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:handlePackageByState"},{"display_html":"printVs :: [Maybe Version] -> String","name":"printVs","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:printVs"},{"display_html":"printV :: Maybe Version -> String","name":"printV","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:printV"},{"display_html":"downloadAndUnzipPackage :: FilePath -> FilePath -> ArchiveEndpoint -> PacNameAndVersion -> PoseidonIO ()","name":"downloadAndUnzipPackage","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:downloadAndUnzipPackage"},{"display_html":"unzipPackage :: FilePath -> FilePath -> IO ()","name":"unzipPackage","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:unzipPackage"},{"display_html":"downloadPackage :: FilePath -> ArchiveEndpoint -> PacNameAndVersion -> PoseidonIO ()","name":"downloadPackage","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:downloadPackage"},{"display_html":"printDownloadProgress :: LogA -> Double -> ConduitT ByteString ByteString (ResourceT IO) ()","name":"printDownloadProgress","module":"Poseidon.CLI.Fetch","link":"Poseidon-CLI-Fetch.html#v:printDownloadProgress"},{"display_html":"data PoseidonPackageChronicle = PoseidonPackageChronicle {}","name":"PoseidonPackageChronicle snapYamlPackages snapYamlLastModified snapYamlChronicleVersion snapYamlDescription snapYamlTitle PoseidonPackageChronicle","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#t:PoseidonPackageChronicle"},{"display_html":"data PackageIteration = PackageIteration {}","name":"PackageIteration pacStatePath pacStateCommit pacStateVersion pacStateTitle PackageIteration","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#t:PackageIteration"},{"display_html":"updateChronicle :: PoseidonPackageChronicle -> PoseidonPackageChronicle -> PoseidonPackageChronicle","name":"updateChronicle","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:updateChronicle"},{"display_html":"readChronicle :: FilePath -> PoseidonIO PoseidonPackageChronicle","name":"readChronicle","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:readChronicle"},{"display_html":"writeChronicle :: FilePath -> PoseidonPackageChronicle -> PoseidonIO ()","name":"writeChronicle","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:writeChronicle"},{"display_html":"makeChronicle :: FilePath -> [PoseidonPackage] -> PoseidonIO PoseidonPackageChronicle","name":"makeChronicle","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:makeChronicle"},{"display_html":"chroniclePackages :: FilePath -> [PoseidonPackage] -> PoseidonIO (Set PackageIteration)","name":"chroniclePackages","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:chroniclePackages"},{"display_html":"getPackageVersion :: PoseidonPackage -> PoseidonIO Version","name":"getPackageVersion","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:getPackageVersion"},{"display_html":"getGitCommitHash :: FilePath -> PoseidonIO String","name":"getGitCommitHash","module":"Poseidon.Chronicle","link":"Poseidon-Chronicle.html#v:getGitCommitHash"},{"display_html":"data TimetravelOptions = TimetravelOptions {}","name":"TimetravelOptions _timetravelChronicleFile _timetravelSourceDir _timetravelBaseDirs TimetravelOptions","module":"Poseidon.CLI.Timetravel","link":"Poseidon-CLI-Timetravel.html#t:TimetravelOptions"},{"display_html":"pacReadOpts :: PackageReadOptions","name":"pacReadOpts","module":"Poseidon.CLI.Timetravel","link":"Poseidon-CLI-Timetravel.html#v:pacReadOpts"},{"display_html":"runTimetravel :: TimetravelOptions -> PoseidonIO ()","name":"runTimetravel","module":"Poseidon.CLI.Timetravel","link":"Poseidon-CLI-Timetravel.html#v:runTimetravel"},{"display_html":"gitCheckout :: FilePath -> String -> PoseidonIO ()","name":"gitCheckout","module":"Poseidon.CLI.Timetravel","link":"Poseidon-CLI-Timetravel.html#v:gitCheckout"},{"display_html":"copyDirectory :: FilePath -> FilePath -> PoseidonIO ()","name":"copyDirectory","module":"Poseidon.CLI.Timetravel","link":"Poseidon-CLI-Timetravel.html#v:copyDirectory"},{"display_html":"data ChronicleOptions = ChronicleOptions {}","name":"ChronicleOptions _chronicleOperation _chronicleBaseDirs ChronicleOptions","module":"Poseidon.CLI.Chronicle","link":"Poseidon-CLI-Chronicle.html#t:ChronicleOptions"},{"display_html":"data ChronOperation","name":"ChronOperation UpdateChron CreateChron","module":"Poseidon.CLI.Chronicle","link":"Poseidon-CLI-Chronicle.html#t:ChronOperation"},{"display_html":"pacReadOpts :: PackageReadOptions","name":"pacReadOpts","module":"Poseidon.CLI.Chronicle","link":"Poseidon-CLI-Chronicle.html#v:pacReadOpts"},{"display_html":"runChronicle :: ChronicleOptions -> PoseidonIO ()","name":"runChronicle","module":"Poseidon.CLI.Chronicle","link":"Poseidon-CLI-Chronicle.html#v:runChronicle"},{"display_html":"runRectify :: RectifyOptions -> PoseidonIO ()","name":"runRectify","module":"Poseidon.CLI.Rectify","link":"Poseidon-CLI-Rectify.html#v:runRectify"},{"display_html":"data RectifyOptions = RectifyOptions {}","name":"RectifyOptions RectifyOptions _rectifyBaseDirs _rectifyIgnorePoseidonVersion _rectifyPoseidonVersion _rectifyPackageVersionUpdate _rectifyChecksums _rectifyNewContributors _rectifyOnlyLatest","module":"Poseidon.CLI.Rectify","link":"Poseidon-CLI-Rectify.html#t:RectifyOptions"},{"display_html":"data PackageVersionUpdate = PackageVersionUpdate {}","name":"PackageVersionUpdate PackageVersionUpdate _pacVerUpVersionComponent _pacVerUpLog","module":"Poseidon.CLI.Rectify","link":"Poseidon-CLI-Rectify.html#t:PackageVersionUpdate"},{"display_html":"data ChecksumsToRectify","name":"ChecksumsToRectify ChecksumNone ChecksumAll ChecksumsDetail _rectifyChecksumGeno _rectifyChecksumJanno _rectifyChecksumSSF _rectifyChecksumBib","module":"Poseidon.CLI.Rectify","link":"Poseidon-CLI-Rectify.html#t:ChecksumsToRectify"},{"display_html":"parseChronOperation :: Parser ChronOperation","name":"parseChronOperation","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseChronOperation"},{"display_html":"parseTimetravelSourcePath :: Parser FilePath","name":"parseTimetravelSourcePath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseTimetravelSourcePath"},{"display_html":"parseTimetravelChronPath :: Parser FilePath","name":"parseTimetravelChronPath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseTimetravelChronPath"},{"display_html":"parseChronOutPath :: Parser FilePath","name":"parseChronOutPath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseChronOutPath"},{"display_html":"parseChronUpdatePath :: Parser FilePath","name":"parseChronUpdatePath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseChronUpdatePath"},{"display_html":"parseMaybePoseidonVersion :: Parser (Maybe Version)","name":"parseMaybePoseidonVersion","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybePoseidonVersion"},{"display_html":"parseDebugMode :: Parser LogMode","name":"parseDebugMode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseDebugMode"},{"display_html":"parseLogMode :: Parser LogMode","name":"parseLogMode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseLogMode"},{"display_html":"parseTestMode :: Parser TestMode","name":"parseTestMode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseTestMode"},{"display_html":"parseErrorLength :: Parser ErrorLength","name":"parseErrorLength","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseErrorLength"},{"display_html":"parseRemoveOld :: Parser Bool","name":"parseRemoveOld","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseRemoveOld"},{"display_html":"parseChecksumsToRectify :: Parser ChecksumsToRectify","name":"parseChecksumsToRectify","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseChecksumsToRectify"},{"display_html":"parseMaybePackageVersionUpdate :: Parser (Maybe PackageVersionUpdate)","name":"parseMaybePackageVersionUpdate","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybePackageVersionUpdate"},{"display_html":"parseVersionComponent :: Parser VersionComponent","name":"parseVersionComponent","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseVersionComponent"},{"display_html":"parseNoChecksumUpdate :: Parser Bool","name":"parseNoChecksumUpdate","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseNoChecksumUpdate"},{"display_html":"parseMaybeContributors :: Parser (Maybe [ContributorSpec])","name":"parseMaybeContributors","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeContributors"},{"display_html":"parseContributors :: Parser [ContributorSpec]","name":"parseContributors","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseContributors"},{"display_html":"readContributorString :: String -> Either String [ContributorSpec]","name":"readContributorString","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:readContributorString"},{"display_html":"parseMaybeLog :: Parser (Maybe String)","name":"parseMaybeLog","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeLog"},{"display_html":"parseLog :: Parser String","name":"parseLog","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseLog"},{"display_html":"parseForce :: Parser Bool","name":"parseForce","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseForce"},{"display_html":"parseForgeEntityInputs :: Parser [EntityInput SignedEntity]","name":"parseForgeEntityInputs","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseForgeEntityInputs"},{"display_html":"parseFetchEntityInputs :: Parser [EntityInput PoseidonEntity]","name":"parseFetchEntityInputs","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseFetchEntityInputs"},{"display_html":"parseIgnorePoseidonVersion :: Parser Bool","name":"parseIgnorePoseidonVersion","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseIgnorePoseidonVersion"},{"display_html":"parseForgeEntitiesDirect :: Parser SignedEntitiesList","name":"parseForgeEntitiesDirect","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseForgeEntitiesDirect"},{"display_html":"parseFetchEntitiesDirect :: Parser EntitiesList","name":"parseFetchEntitiesDirect","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseFetchEntitiesDirect"},{"display_html":"parseForgeEntitiesFromFile :: Parser FilePath","name":"parseForgeEntitiesFromFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseForgeEntitiesFromFile"},{"display_html":"parseFetchEntitiesFromFile :: Parser FilePath","name":"parseFetchEntitiesFromFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseFetchEntitiesFromFile"},{"display_html":"parseIntersect :: Parser Bool","name":"parseIntersect","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseIntersect"},{"display_html":"parseRemoteDummy :: Parser ()","name":"parseRemoteDummy","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseRemoteDummy"},{"display_html":"parseOutGenotypeFormat :: Bool -> Parser GenotypeFormatSpec","name":"parseOutGenotypeFormat","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOutGenotypeFormat"},{"display_html":"parseGenoDataSources :: Parser [GenoDataSource]","name":"parseGenoDataSources","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseGenoDataSources"},{"display_html":"parseGenoDataSource :: Parser GenoDataSource","name":"parseGenoDataSource","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseGenoDataSource"},{"display_html":"parseRepoLocation :: Parser RepoLocationSpec","name":"parseRepoLocation","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseRepoLocation"},{"display_html":"parseArchiveEndpoint :: Parser ArchiveEndpoint","name":"parseArchiveEndpoint","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseArchiveEndpoint"},{"display_html":"parseValidatePlan :: Parser ValidatePlan","name":"parseValidatePlan","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseValidatePlan"},{"display_html":"parseInPoseidonYamlFile :: Parser FilePath","name":"parseInPoseidonYamlFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInPoseidonYamlFile"},{"display_html":"parseInJannoFile :: Parser FilePath","name":"parseInJannoFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInJannoFile"},{"display_html":"parseInSSFile :: Parser FilePath","name":"parseInSSFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInSSFile"},{"display_html":"parseInBibFile :: Parser FilePath","name":"parseInBibFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInBibFile"},{"display_html":"parseBasePaths :: Parser [FilePath]","name":"parseBasePaths","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseBasePaths"},{"display_html":"parseBasePath :: Parser FilePath","name":"parseBasePath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseBasePath"},{"display_html":"parseInGenoWithoutSNPSet :: Parser GenotypeDataSpec","name":"parseInGenoWithoutSNPSet","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInGenoWithoutSNPSet"},{"display_html":"parseInGenotypeDataset :: Parser GenotypeDataSpec","name":"parseInGenotypeDataset","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInGenotypeDataset"},{"display_html":"type GenoInput = (GenotypeFormatSpec, FilePath, FilePath, FilePath)","name":"GenoInput","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#t:GenoInput"},{"display_html":"parseInGenoOne :: Parser GenoInput","name":"parseInGenoOne","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInGenoOne"},{"display_html":"parseInGenoSep :: Parser GenoInput","name":"parseInGenoSep","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInGenoSep"},{"display_html":"parseInGenotypeFormat :: Parser GenotypeFormatSpec","name":"parseInGenotypeFormat","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInGenotypeFormat"},{"display_html":"parseInGenoFile :: Parser FilePath","name":"parseInGenoFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInGenoFile"},{"display_html":"parseInSnpFile :: Parser FilePath","name":"parseInSnpFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInSnpFile"},{"display_html":"parseInIndFile :: Parser FilePath","name":"parseInIndFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInIndFile"},{"display_html":"parseGenotypeSNPSet :: Parser (Maybe SNPSetSpec)","name":"parseGenotypeSNPSet","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseGenotypeSNPSet"},{"display_html":"parseOutPackagePath :: Parser FilePath","name":"parseOutPackagePath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOutPackagePath"},{"display_html":"parseMaybeOutPackagePath :: Parser (Maybe FilePath)","name":"parseMaybeOutPackagePath","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeOutPackagePath"},{"display_html":"parseMaybeOutPackageName :: Parser (Maybe String)","name":"parseMaybeOutPackageName","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeOutPackageName"},{"display_html":"parseForgeOutMode :: Parser ForgeOutMode","name":"parseForgeOutMode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseForgeOutMode"},{"display_html":"parseOutOnlyGenoFlag :: Parser ForgeOutMode","name":"parseOutOnlyGenoFlag","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOutOnlyGenoFlag"},{"display_html":"parseOutOnlyGenoSwitch :: Parser Bool","name":"parseOutOnlyGenoSwitch","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOutOnlyGenoSwitch"},{"display_html":"onlyGenoOutputDocu :: Mod FlagFields a","name":"onlyGenoOutputDocu","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:onlyGenoOutputDocu"},{"display_html":"parseMinimalOutputFlag :: Parser ForgeOutMode","name":"parseMinimalOutputFlag","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMinimalOutputFlag"},{"display_html":"parseMinimalOutputSwitch :: Parser Bool","name":"parseMinimalOutputSwitch","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMinimalOutputSwitch"},{"display_html":"minimalOutputDocu :: Mod FlagFields a","name":"minimalOutputDocu","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:minimalOutputDocu"},{"display_html":"parsePreservePymlFlag :: Parser ForgeOutMode","name":"parsePreservePymlFlag","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parsePreservePymlFlag"},{"display_html":"parsePackageWise :: Parser Bool","name":"parsePackageWise","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parsePackageWise"},{"display_html":"parseMaybeSnpFile :: Parser (Maybe FilePath)","name":"parseMaybeSnpFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeSnpFile"},{"display_html":"parseListEntity :: Parser ListEntity","name":"parseListEntity","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseListEntity"},{"display_html":"parseRawOutput :: Parser Bool","name":"parseRawOutput","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseRawOutput"},{"display_html":"parseOnlyLatest :: Parser Bool","name":"parseOnlyLatest","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOnlyLatest"},{"display_html":"parseIgnoreGeno :: Parser Bool","name":"parseIgnoreGeno","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseIgnoreGeno"},{"display_html":"parseFullGeno :: Parser Bool","name":"parseFullGeno","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseFullGeno"},{"display_html":"parseNoExitCode :: Parser Bool","name":"parseNoExitCode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseNoExitCode"},{"display_html":"parseIgnoreDuplicates :: Parser Bool","name":"parseIgnoreDuplicates","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseIgnoreDuplicates"},{"display_html":"parseRemoteURL :: Parser String","name":"parseRemoteURL","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseRemoteURL"},{"display_html":"parseUpgrade :: Parser Bool","name":"parseUpgrade","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseUpgrade"},{"display_html":"parseInputPlinkPopMode :: Parser PlinkPopNameMode","name":"parseInputPlinkPopMode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseInputPlinkPopMode"},{"display_html":"parseOutputPlinkPopMode :: Parser PlinkPopNameMode","name":"parseOutputPlinkPopMode","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOutputPlinkPopMode"},{"display_html":"readPlinkPopName :: String -> Either String PlinkPopNameMode","name":"readPlinkPopName","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:readPlinkPopName"},{"display_html":"parseMaybeZipDir :: Parser (Maybe FilePath)","name":"parseMaybeZipDir","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeZipDir"},{"display_html":"parsePort :: Parser Int","name":"parsePort","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parsePort"},{"display_html":"parseIgnoreChecksums :: Parser Bool","name":"parseIgnoreChecksums","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseIgnoreChecksums"},{"display_html":"parseMaybeCertFiles :: Parser (Maybe (FilePath, [FilePath], FilePath))","name":"parseMaybeCertFiles","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeCertFiles"},{"display_html":"parseKeyFile :: Parser FilePath","name":"parseKeyFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseKeyFile"},{"display_html":"parseChainFile :: Parser FilePath","name":"parseChainFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseChainFile"},{"display_html":"parseCertFile :: Parser FilePath","name":"parseCertFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseCertFile"},{"display_html":"parseArchiveBasePaths :: Parser [(String, FilePath)]","name":"parseArchiveBasePaths","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseArchiveBasePaths"},{"display_html":"parseMaybeArchiveName :: Parser (Maybe String)","name":"parseMaybeArchiveName","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseMaybeArchiveName"},{"display_html":"parseJannocoalSourceSpec :: Parser JannoSourceSpec","name":"parseJannocoalSourceSpec","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalSourceSpec"},{"display_html":"parseJannocoalTargetFile :: Parser FilePath","name":"parseJannocoalTargetFile","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalTargetFile"},{"display_html":"parseJannocoalOutSpec :: Parser (Maybe FilePath)","name":"parseJannocoalOutSpec","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalOutSpec"},{"display_html":"parseJannocoalJannoColumns :: Parser CoalesceJannoColumnSpec","name":"parseJannocoalJannoColumns","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalJannoColumns"},{"display_html":"parseJannocoalOverride :: Parser Bool","name":"parseJannocoalOverride","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalOverride"},{"display_html":"parseJannocoalSourceKey :: Parser String","name":"parseJannocoalSourceKey","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalSourceKey"},{"display_html":"parseJannocoalTargetKey :: Parser String","name":"parseJannocoalTargetKey","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalTargetKey"},{"display_html":"parseJannocoalIdStripRegex :: Parser (Maybe String)","name":"parseJannocoalIdStripRegex","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseJannocoalIdStripRegex"},{"display_html":"parseOutputOrdered :: Parser Bool","name":"parseOutputOrdered","module":"Poseidon.CLI.OptparseApplicativeParsers","link":"Poseidon-CLI-OptparseApplicativeParsers.html#v:parseOutputOrdered"}] \ No newline at end of file diff --git a/index.html b/index.html index 9c4d73c1..43f891ed 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
poseidon-hs-1.5.5.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file +poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
poseidon-hs-1.5.6.0: A package with tools for working with Poseidon genotype data
\ No newline at end of file diff --git a/poseidon-hs.haddock b/poseidon-hs.haddock index c18ad60fd7c9feb3f4fc53aa77a97fd42864c75d..fe57463a14e3ddb014e4a91f88b39dfe2b960c1a 100644 GIT binary patch literal 63070 zcmdqK2bfe+CNcX6A(ZeBam4vwywoU3u-b zSKjO0dgigZOO=}OUz9S(Z%!zs3tbBr z#q~X0-^X;K>yZ2)74vBWrHJTZZoNK7Io6E_f3h^fRh;znXRaT9SfaSL%PF@v~`xShCz zm`ThcW)pLWJBho9yNP>>}PHb`yJuy~I9ZKXHIKNE{*# z6Gw>miKE0Z;y7`FI7xg!oFYCXJ|a#N9}{PYPl!*6&xp^7FNiORuZXXSZ-}$R=n`NI zF_sudj3*`#6NyR0Wa0*53Ne+KM%+kDCvGBcCT<~aC1wz}5w{a}5HpEc#B5>?aVK#X zaW`=fF_)M}%qJEQ3yDRMl2^DA|56lAs!_jBOWK7AXX47 ziB-gt#8br6#52UR#B;>+#A;#?aNo2Z=+(Vd4n!K5>*dMjR(j z5GRQbh*QLe#7D$w;$z|r@d@!M@fq!0RG=>;Uj3dSq6Nrh# zBw{jg12Kh|N=zeeB&HKL5jPXJ5VsODh}($Ui93jy#4KVqF^9O5xQn=(xCaQ&CFT+H zi3P+$Vi8cfm{>yGOWa4?Pdq>@B_0GK%ZTN~L&U?xBgCV`W5nac6T}K)C9#Tll6Z=E zns|nImUxbMo>)z+A=VP>h!=?U#0KI;;w9o`Vk5DM*i398wi2%puM)2juM=+&ZxU}2 z+lcMN+r$py9bzZ(F0qSvkJwG@A@&mci2cL?;vjK|I7}QN-Y1R{$B5&^3F0L20db1> zkobr=O?*t8AwD5KB|alQC%z!Q1WLXlz9zmQ&Jv^9;Tl7XCB_lsi3!9+ViGZ#xPh2L zOeLlfHxko{n~0lo0vn~N!&%;P25AwCFT+Hi3P+$ViB>J zSVG)O+(+C`JU}cZ9we3#%ZZ1GhlxjsM~TOX$B8G16~szn74anT6!A3i4Dl@S9PvD{ znpi`uCDsuy5bKEz#EZmB#LL7+ViU2M*g|Y2ULjs3UL#&7-XPv2-XgXU+ljY{9mG38 zbSLpHv5R<**iGyq_7eMu{lo#{AaRH|OdKKJCyo-wh~vZw;w13_afYpKujT~64QtqiRr{m z#LdJl#I3{(;x^)T;tpaaF^iZ@%pvY1?jr6c?jhz9^N9Jx0%9Sth*(T4A?_vaBkm_2 zAeIsj63d9?#6!fx#3RI`#AC$c#1q5{VkNPPc#?REc$#>Ic$RpMc%E2ItRdDC>xdVK z^~46^MdBsmWnv?-iP%hRA+{2)5U&!i5w8<(5N{H15!;CE#M{IU;vHfq@h-88c#qgk z>>>6N`-uI-0pcKWh&W6fA>JpB0Nm z8*w{v2N0i0%pztJbBH^MyNJ7qdx*KjJYqhvfLKT@A{G-%h>%<$xo5WkhHex&RHnD?vhuBHHOY9=vBX$#eh`q!< zVn1mX#KXiR z#G}Mx#N)&h#0p|1&~g>=B=HpSH1Q1aEb$!iJh7TsL#!p%5ibzyi4DYy#7o4>#71Hh zv6qYEEHMsfHJ+G2Oe7`|lZhLMDa2G_8gU~row$j(nYe|x6=*$!xQ)1-xPzEU%pztJ zbBH^MyNJ7qdx*KjJYqhvfLI8$Swt)*mJs(6_YwCK4-iX<2Z?3Ga^fN4Vd4?uQQ|S; zapDPL1+kJ?MLbD7MLZ3(eTI0Jc#e3USWT=U)&lL;5ibzyi4DYy#7o4>#71Hhv6+uZeGnv&3jj z?sgnQj3veq zhq#lti@2M(hnP#uBjyteh=s%=VllCVxEJVrA8|kN0I`&KkXS}6CmtdmCLSRkB_1Ol zC!Qcy5G#pQ#FNBR#M8tx#IwY6#Ph^zVhypDSVz1-tOw5DK)gu2M7&IFBsLM7i7mud z;DT3(SBck%*NHcXH;K21ZNzq<%iF{b;vHfq@h-88c#qgk>>>6N`-uI-0pcKWh&W6f zA>JpB632++#0j9{B=G@piujQDh&WArOq?M;AwDHOBR(g-AigBNBEBZRA64`Vlr_9F@=~)Oe1b2rV}?2HxsuIw-Pgm+lbqVJBXRYEMhh>hq#lt zi@2M(hnP#uBjyteh=s%=VllCVxRie3d15uOhFD9iBVHiZ6B~#ZiI<3%iH*c2;#<)lcKd0!pLM$u zi!oS>kw2rnDp{NA+B;L5%H>iuhJi_1bv{;6Vw)3N5?d3mBwkItmUun!Mncg z!fo4idY5joA`wD(Lh_0jJdxU^-=1rZbhjtNM3M);H88e}pnu zBSms}GXJNbAKwl5!BSh54(3-~(AgD5ob^oRQ-gc_@F#=&B!^^j{_%o6I>mxv;3aJ~&V>aGYm5QM#mczk*i}6Sckem4 zDxYoeM;(ik0WX5jo6pMQMc-6SI+^i%f_2S+CqHa12Q@w4Xq;M2c0 zQ=P0IeAR%#y>fvybY;SiTH+QtaLDJ81AV$%gvuP*%Wx53sHo@Stmv zGVNfwW_lHsJCXMO^mC zj!fm?b}$>CWNv6GKe(#jfIup+%p35kSS5^HD0GT-;egX(jd!n1O?GH1lWhzHjJ4!| z>tgTrui=t?fx!dnv+0^ZD}Y7lf3Fu>=8v=&Htaec-jm0(ZcJi;FypYkU6M zUwE+m9dK5x@bySGoVDf5z~#EjGK*Hj9ZNv#%;#! z#vR5?W0o=7SZBOoY%(?*Zy0YH?-)Ccca2@fQRA3#+&E#JG(Ip+86O%S8K;epjWfn4 z#%IQ-#^=UY#+Swy#@EI-#@LcEC8JBu8skc)mP{$Rp=5H&q>_mx6H3OHyj`-RWOvD) zl0zkjOHP!WEcu}1(~?h0&Xjyya=PTBk`GHxm5j$){4}hy&%i?ZX9~%P#hDO08Q-~B zC!}i7?*{%U*)SrLWm4+Wj5H(9L@+T-6cgu72ou4?6h_O9vYQN@EGCc%WrCS-W&kt7 zn~=gpFlpX|a0G<)H~A|V2tj)3y%B5z2t4s$b+4>T)io-={#5FG3rUyS2tob zk&;o-@D#c!+1kovWqsPr^R6a~vY0Zlogm=dMMb?sqn@d;9nC9ngnn9)I5gzanS7-< zO*xLSZ6OfiMpe|cKLut!nW;(U;7w{|S~rlz(u4gF0pGV2_Z=-9awC(jPF0$D#B*rn zsC2%rQZfo5Rhl(2q%6oV?6n94aO6KWfJEgbb*Ws+$u>MoE)1Mof7n&bh z5Ly`W{a}&7%9;EXEjb5az9@8WXmMys=)REWmQJwdA%6ufjf<4}@rVntKO~UoHAwUT zYb;*b>-y?cgY;QA9Iuq|xa6jpVy~he!=X%dE`_p)8{~Flbv~OjvEL-%Y1i(V%9P_5 z5}r#nrztWi+wgD+bU^u*Dg6vt1-)m1QYtyOv z8tlCZc=f6Z`sHR&5?RM=sT@_8%2b-EWUji7UUOcAA&yMfG$!lKO8jidHn3(uY)x$K z354;}=7Z4L&aC4wi2XEq(tPIF9Tf0q?>XXn4v!e$QFzT!U)1KZ!zCm$HKH+M-f3V>ePD(6|2TKy#_#oT8BOTAxkUSXt!_+Ds2`s83y!&o^MlQy`$%{&GO_ z955L{pHY-qc6D8>XQl8QkS;xD!Sk+9VMkRUkeAL82wx=BviCBX~t_48?^#{ zZ$5|L>5S_;M>5IkT-G!zhd0*e)5sBttxR}0r5}610{*{z4*%^pQQjllBfBoK-pNXL zDhPYa0-k@r`7&z1QOr>j8`1(UuV~(7Z4ypuDy!>K)z_JgD0wL}Z(=uFz=uH9z|OX> zqPn^Y6Oxr?L#jGmYj^c@d0$=N*Sd3LlJ$->TZ+03Ne_`Hfo*nyD0T}b(y4K*G@?RH z=bP;66kGHH9u(B0jtA}|V-A(`3M_!gj&&%U4TVZ!V_KzmFnXm&6lDqDdY;9J38WlBk|)(m71O zW^+y0lNku(%HR{g*y=hw`y3iR@uLxaDcvvAMHf3d172L_^MVaiW9HB4h6dJ`eCYLqI3UZ29=(SWnc=A23MjrmLLGz~cU!8x6D?J8XoBzr*9@Oo@f z4Y;<(ZMp<7jglLc^{LEIbT7?RK9A&@YNL8Mv@-Na=+V$)p~pi{gjR%Bg`NyO6?!`K zOz7FrbD`%$t3zu-YeVZoFND^IHiTXby%c&mv@x_Pv^lgTbRu*xbSShvv@f(jbRhIv z==IPWp*KTsg|>xGhCT=#3B4aW8afu*8#)|19y%5JF!WLA!O*hM^3X$}_d>fvdqQuA zc7)yu?F_ve+7&t-`Z#nZv^Dff=+)5wJ7dMJX^HNj7Op6jN3f)H;YC0EL@2|K5 z1*WcXNH@GQSJ-{FuC+P5lo(%M=ZJpP)kHHgJbA^C`s|P^h9}WZ=d{;@^TZhEDS>Fa@x^A^fWtlLqO*TvyF<{ds4J5- zHEDMKlJ%G41=I}{8a`{jQqpe4vhtE-WnI#&8=h=n@1i3`Cx$15Cx>qcPYF*APYd4|o*up_d~^7g z@U7t);oHKuhwli_49^PB4$leS8NMrgcle(0-0-~c{P2SC!tkQ-;_#C2z2W=9_lF+{ zCt8%n;*W$M4L=qRM@u7BgJcfoy87Xqbs2{#o(Y)hnS?2y8!+`Vwd4~_4Sj|wp|i$l zObU%H`R@0>cgdxf{owM?F;VmdCXBu^o(?}7elq-2ctv=5_@VHF;bq~6!z;t9!cT;s z2|pKJ8-6~#I=m+Qc=-R+pu zIATSF8Gsb$k(d`Lb98CYzO|rHyp6EOYs?z#i4O$zQ%_L7YTCadfP7ARs*Q;S{&;6_ zeg1G^KwO(<8RoCB*9vmA|fFea^7QKi~{2Aw``zb*#_5+N$0Oe;7U${vdoZ zd?I{2d@Ou4{C@aI_;C18_+a=zcz<|bcyD-5cz5`{@UHN?;g7;Q!>7X^htGsR34a>? zJp5Vsi||+BFT-Dl&xXGVk1icsI;M17>4ehpr4vhUD4kq7sdP%|)Y56Cx0TK)y|wg~ z(wj?fDxF?>W9jXsca+X7omD!!bWZ7=rFWIyU3yRH+|qfa^Gg?$E-YPCy0~;n>Aj^} zRWXF;Z^KXHh28)%Jt{Bk^l% z67*^*uT|(w>uF1wIFP8~)02S5>;4vxdm0k! zto#+Nc6*JC;0q@ILoiCL?IFcFGMUQ$1AFxDnZRqDsw{iQ>D!r&4Gq~`zFRg|ovs0g zUQt(lMJm&^(YyjXlsLa)Uh(6fU3uk|Kl{bs{rqP?|4G*>S<1ntgRa@yuE@8p;&0d9 zHJo6?8b(gxGb(??IGmN2uUIz})6OVXL-3;I@YPkoVP`%V&VT8b-(wdaX9etDM7tP( zr|UV|#S#+MJ-GPkafFY#0*=n7BS}GlWqjZju)OxKd5L?t=_&ROtHhkhosqjDcSr7t z%*8XD8JQKC9Vsg0)5qpq`72%s)}xdxk31B4IC5X){>TH7rI80C%OXWY^rMCLsjwM` z{OVR%4}3iGL}W!|Wn@+4$%yX<9hNocx`Z2b2mbkde25mvt|hh;Ul*lvpjFPXpLgtFBRarPH0 z-PW=kgRyFQ6JN*$V)ruY5p27{c9D8_#>CfG!K8uPC@~0@C2tyR&+*Y+!1FcATX1>r z`gA#b!G>zHA&V@~>qNusRaI<&ML56V7G`|J7x45I@l>|jA-_yBTa7hwRMs-9`Ip0x zP0~`Y+CktG!9Wn-rZ-lyq*8RFt+Tlsz9Q%B@%>JNeLC9E6K~$PBbi*ulswyXlA4J!wHf;d@*1;(QXuj9Yry-}DAa7S zinUldE=^;4x5j=xmsjfjukhb3E?Wxxd`}hW=Q_)&-732~6_-`&trVqdF6ZhQl2ggm zY0l~4Sy{306d!!L8%V{Pf)K3@4Eha_Si^7BY$$aoe4e6c*KPO|IN<5p;-1p2_LlAS zU+@**76*JiqUeE}ea?GRQ#qumGK~!Y+FPB|tW>NRcB|~I^Tw+6nOpD*6I;pabgklV z6}sV*=0Mn&4noj&TaZS7H;Ii0%#Ul5CM(SDnVR40O&a+0Ip7u>BAv?5X+2OoSh4Gx z*8L*c5zvs!V#ij#313VHd^u0LDQMHu-1Fd6UihjyVDU<c zY;jBY@-o-q6O*dnV{Dt{I~1(*WQUKhYt>bfGO8|JU5929EvT-@ktxV4`ewy~*4{1% zd%W>~E9}eBfZ&aDAC^3(CV3J#*C6nuej(A)BWiDM+s_tdk_pDgMD;aNx64ilY`DaM z2LZ1z$!yliY`s-Aan{Lw{T&~XT`<9;tInkx^5OLne6knts=|&C^A+DsrE>LBHR+^m zh~P`UfQuOGGHheYZ7bqkE4@3R(yrOI7qQbe>9lLMwacH6td6XStc|RTJQvv!c`LFl zvOTgnvL&)L@=D~@$V-uzBO4=cM>a)XjJy_kJ@Q86&B)HkJCPS6>mwT?dm`^f4n_7y z_C|I^4o04iJQH~~av-uVvODr#9?z zj}KO6(1kskbILudL00>o-96oKa7Mtlo!*SPE|qF-MIf7;RRLCUsWK2V$k z5^yEcEmmS|>sE`2^FjiaFJ=%JFJd6XhO4+UoG=n_){V}bnfe;5He~-_FPaC!#pxsg z4`dL`w%VGOy2M20>dvthR~%*%a3i_y28z~}PB1FYS2i|aAd$k+CjloHGM=0*MU&|+ zKS)PM-UghL5^y28=Uq*3*ZgswO2Bdlde7|#Xs=v*8w>17G@O`=O$P5Qao~KGfY0Bu zBW}mrS#Fc1hs^~JWERhgir+4dd zYBhUwcoj@+9n3RHh&*G+H`?x*^4-)8NH_Ph0_^zaaxh*E^Ezw4pwqXeW4&3DBm6`q zc5r8KV{!~#Tc704Ld4lx%V6f%^|a%|DDFfRkMVk3l1Zgx^Eqr{Lrt3R>!mmgD3Eb}dBmjk)s6M_1EfZ9 z%=6g<=A1B+)ip(Oh>4R8@~Lje3!?XrMPg^SetP;QPjTNbBkFjHP9qnDn(+^X;aW7>;sldb<0B>i;3k_-Q1;Qng0o*%DndRK zalLoz@-Dzp7X7p0b-)S}`2f6!78gz$10N zV8;eK{xEwDFM}Rg#e7s6{RNq3@N^ci)dY>R41J_d%4P8t1_~LA0S0DxF|Z{Iv!$3F zWZqb_c4CUr7d*r`pgP--h7&w3Jbn7&?9mmOHFThX)7Cm}x%mR02;k_cKw1x~tM%-u z{lF{DMhrkC3KD-uE|WywQDMyC9DJlR=^7B<=rxq1D=Dg)gFwX7B9-dl^EoH`)yEWPC#hh}=EJ(;D zj0B#%)THhgO6WHYNugGhdPd%Wi#e%3r|>Y$9^erI-D1jarL6=sU0nU8(A$B@+tHE5i3a?n;6) zL(KPet@c#Z_5b6Ldc4NxN?n>kuGwcOPgQ0u; zmTQ$57aJd&5W68ZIW{RaF*YSOH8w4l2nuM4No_6ZMU4?W$O-bH`&!&u5SI=A)+8eR zInE1P@x*b2|Bh7R9K(QXR^LwU;FZ^(Ci81wWE1BZ&ax4F*;9Z}ZcNvGC# zDi^)hY~q~6Kp?Lmkied8R%x8McG`AMAoQ!m(iT?)t!)X`U{u;Q=|swB$)l1@IDjz_ z#NpyWxD(H84{BvWh@S?cx1Aj_3{|qVZ<9gb17m#Jn6AerSVWHY^GU8SI@yCL47?O4 zJ_dru2I3-#(-}!$tWTB@q#HgHQs0DwBLjYIDxQpUdnQ|V`X-yuG+BGywf8uZGT{Ap zibl0DGYUgHb_(eS&ae!)`c-#Rmy4_I{JXpon^9yUoXe)}hZB_}8ufxAM>FX7V!VOV zFazG<6X~FT68XQuQ=G0D@bu^KQ=(sm_VRD=Nwv8(c6;o$*o@d6v6-=1vDvXXu{&dT z#qN&X6Pp{G7n>hj5c?~vusUedT%AyI(VH-;>yOhH7seLF7RQ#ymc<^7EsZ@8yFYec z?B3Xt*h8^LV~@lhjy)E8BKCM}MQmkkRqV;wQ?X83U>g^6x&mG1{V z!%q39W21$D9$+zc)_Cu{tfvnwWrm3;Kz;a<6zf-e^+|^ zlT{xXoB7wUr3tZPjALN~UR*W^>2AJn;LS9gY8*QpI}&?8b~JV@c09Hxwl}sfwm)_t zb})7*c1}YUlk?75R-QF*T5TY1|4}bei<7ZWVrOC>$4Sl*)O z7r*9Yr!a|{xjr>AiPFr1fN3Z_^}=DU%#Yc-?UL0z@=7M45E;x?T1ziDML7_F)UfW% zg*BCfFzp$$ZunkWCNVfAYhsUYsz$ZHH~wIJY5als{qg(a%i@p4AB{f}e>nb7e0luw z_!IFJ@s;sa@h9U?#oPN0z0Uj=`K-=w?twwxa1ssR`uNN7m*OwRH^eu_H^n!{x5SHx z=*b1=@M#3jzm0E=zZ!of{#yLa_#5%p<8Q^c#hoA8h$4E@r8%G2l#UpO`tx{vfBZoF zVEj=0aQsO8{rJ)NvH0%zp7`GQzWDa|+wmRocj7za@5Xn<-;4iEmKk!zxq{D?D79Oi zh@Xsq5I+_FF#b{ebo}G^nfNF1Pvf7(KaYPA|1$nn{OkBP@w4&Ki7|<>iE)YXi3y2` ziAjmci5n7A5>pe?5;rEMCvHmIoVX=%Yhp&?w#4m;I}$S!vl6ota}swZ?n>O9xF<0; zF)uMcu^_Q9u_&=Pu_SSC;=aWFi3bu(6AvbqC6*^1N<5r+B=KnCvBcwvClV_XD-){{ zPbQv9Je_zZ@oeI`#Pf;Oi8YC}iFJt=66+Hi5-%oRO1zxdnAnuqt^TuOeWBmPRg zgALwBs1i`$CQvR6^&NHbcSGL;jPDbd5SQY#WKn%-T*kW}00yBhC%O{dh%1OIi60U_ zB7RK#1PJ{UFbMTC;^zcPbV&Uj@%MnJ#x$^{JEVR^`~&e{h<_yhD-h}q7)0nQ-t{1Q z61|A4iC+`f5WNBQ8{)S_AEGbOkHEMgqy`YbBd~`eq^gKP#I?lli9Z0MLDTpr{`@2H z&&0nF|Bd)pK$K}3|D8Vv6MrI-#1Nty2-N@vp;AOGF_fqy(!?-8bZi>e@va^)2sNC@ z5Lu#u7(wI+lgJZ|#7JTk5V{^P2-QUVnfM>X|0Mnw@xK94!)g2<-i zavJ01Ui5MrLN$>RCHgtlWVsg&oob5QPZdrRik41=Q+Hus^mHm5qKkXc)TwY9F79Ut zai}fsMO&xB;k3A)Da84*xSuVYBNUyT>MpszTX>Ifu5g}kKB-lA8VlrpA!!J;B2QzH z$QO%TsMUHJOGGZ(Jq@9{j}j$XKGg$qzf}03P&9q2<#I2&KGnl=FWNrUqjLY4@NuDN z{8TICex-1g@JZoQLecxFo{{@!h0h6}7p@kr5v~=k6TTo^FWew}QTUQjw1BFOa=%Hq zSty!7)mFI|U7+e!-fL~3hUf%UuZt;8$wfZADHOe+YMb0|C$(x&<86`b5aLi=*cTn4 z3g_G6ewXk)QtJsdc8g?>aIbKmaKG>Xsda`L2j%_{X$aL}v2#QyIz$yt!9^&?ggDR^ z_o7Es;fPw?izZQpGiGrwxDp5+RL@TM9C8na6REc6z zC7MZ&J)fTih@$LQ0^BA7YmmNMN6p?HKj`Ql&S|rE}BY}s47*< zM6z7?kWkc>D$!S}9u>)BLQz?&L}#fIrKL)=ma0`^Dtb$mC@xi^xm1bjQYE@el_)P& z&x_5~!ZkusV5-*1{R_hN!VN;vVyZ-qsS-V=YNNG*zP1REbtog#&c)>_o4r62+!kv#BBaO_eA(RifckiHcLTTkP*4wU$$3 zuSi7MsoF312ZRTOhe)mQ)DXR=N)(?e(R`|oiXG8?szmvz)_!W>6kNDENg6oL78Et8 zhUh^xJ`%}kp{PPNL>H<&#R3%DL)mgDQIz;

V3ICDm*4UE<7PT zDHPqT>Xh7nDEvrxTKKW>jPMh%B=jk12-Ro2SDy>N5aL8BNWKz&E&N7!RyaCL(=o!a z!g0d!Lebl*Cd&OJ;bfucZdIbZRZSJiG~tcH>B5_YHw$kOiV{~fL+(Y5tGZq8?-0%u ziYiw%TkhuwMVqSe^od)3clg6Cs6di zDp3HdaAXrCq5@VuFZZj3YlJvo38w3WF9<~wtlA*=FA850iZ)oaQSLVhHw(82w+deo zzAAhTjE1NdHfjjf8@yLk4;xi)3AYKi3#lSDs&)u*N)PTuORN$#v1*q{L{Y5TE%$qb zdxiUi`-KODqAyk*lKaELBSO&`8#>B+Ll`pc;N)$M4{-aRidm`iMCpWlXGBm zst^a^;QmJ8bm2|Hn}xRsMQyE`A@{clZx`MnoGF|ooGqLq6#cbI6xb@!V5>xht(q&Q z^Ms#mkE~(9}+$+d_*W}ZPjCP z|G4l8;R@kO;VR*i!l#6y-&To&TO}H9m8iH?&x`45p=h~PYvq2O@CD&|;Rd1Tx>cg= zR*AM-wNd1ogqww1gj7xAKnmPbr*4bTEYg@Q#CZ_7zmrrr;sM0r z4IoZqP-UUHq%lu8UnC2J3q>MSi+Hc7XSYl(5z~9+{yrgf?Usce5H2N+2ZhT-vRwF( zNFEkGBBavYGJ{%o%R*GUTV@E=6TDX|L{9y?Woni1N#Rq%r-jc5pB3Wt1K7kV1K?^Q z4h6vdTH!h&KAnd|wDGD9a{r2`4 z)x1h{^Qt#Rf=^T--zF6Oyb7P2LV|BeL3|Dh;+stnUr&Pgq*0ZJ@TH+DH+Bp6hy-7> zK_XQ9c(3*g4+yEVw_F_}Lx)L2sE&x7+I!2@Q6WBOgPr4~Ayg+sep2{>@RaaFA(i=- zhp5fB-1t~{M)--ysnNIG5US63uRa&~7a|v`FGc>9@N3~W!n4BBI7+WvjS-F&juVa- zP7qEMP7+QQ-XNSJoGP3qyiqt^c$4sE;Vr^jg)_jGA*%juX$TcH0Jl_B0o+o}6jBLr zOEp_KhYa0G8bWoK$nO^3Bb+OoC!8-_AY3S1BwQ?9BD`04pYVR+1Hz@k2ZhVX&~nlc zs)t1Wu<#M#qr%68j|-_SxTT`H;FfBoP!t9$d^!dRJ_iHw;TDK5ut0o81>)-`5FaIh ztA+T)2>1A82wW$`r#-mG_c`DOAwHtPJwA*9@x=>>?^!^6qXKRg;*%2G;|mcGUw(l2 zpaaB*8X!Kv0P$4?_@+>_2`f=2thS3p6bh>ya{rESr|?~{RcIHf-jn;?q#;y$M7~$J zPq<%rKzLAiNQf^B;KLE&`@*AO>(DXM5US(6S0{ugh1mWM$tfW=vg7_E;c4N=LTVmv zt*CmqwZaB)kjjT!tIvgBfNerw3cnJ5O&UV=4e!-i;b`nCX`{vn#|p;@xj(Rt!X8KX zLxsd`j7dVOByMBeAaZO~#Qjv^G*aCtoG!dcNY%t`6m=7~4PiT>YHJ7;briQ%R8rhl z-7ch>;Sf_Zuw!TwX>1m55pES?-xEx!__(7XRMdamQN1pt2IP*4 zDv&!W?mOzJs06vA+Ae%sxI;)q$Q{*AAypxFR4l_C)h@YzPqFNCVcQOPOo%--xW~2_nhHMlyhXLW;cig2oMnh@JPU`o}>ofUN}cUCup=ZC0W z`FumDsATzkHA6@>%jZkZoUf>D`FwSUa3**`hzgf4FsO0)0)r}-F9=cR@&$%aVMhj5 zz^Qxr0`cJjMHS3lLe#Q2T{c>Rh3y)wx1Zt#gGs zETm%R3iZD5sPLHZxbTEf)H^HD@2pOVU#O@B`a(rD&=)G|fxb{t z5%h(MnxIP*RY8|2=z``J27^kV%M`Uhm#KMROU3;Rm)V=cp_jO;r9ZjrPkw*RkcOZ1 z`E$*vKmM$t|FGQee(~F@f1c|+!1_Y4TMto8JP0a8%xm!}rrFXl`3+C~YVZ8?SagMb z@p0faqW8<}+WI)ACr&(a1MA^_0^QoN zitlQ##y3f>zzWrMroRi56uKc)iOz@~^*G-q@46kJ_Z_u!eDBexceg6}^5MLI%=%Q| ze4kjdtU8P1oz3c08=q0{OgirdPk(=Jec9R8XHO#LciIR0<=xz+Q|1pg^kW-T-tYQq zZmSE3xIxV$vei^{^aVR8Jv@bDHStBQKcPKr>u!EB0t5MhRc+JveSY+B$jiwb-5c}) zFZfb&fSlA}dQS*#BOjCwZmpQvQo>KkRm8*Q@^U(|`V>nfX!A)HS^`H3PEOTvhkGOwIXL2}>bc@HK_m%{`kl z1nt_9t8qFbLhTDgugyTm;HXU8Ih8JfOs3vNSS&Sb!44PKUXAavuBKWn*R0*ewS%$& zS*wd{`{z7%T3=kto${`u_7~UMX?BI>7uWV0;RN4O`$0XnJYxtyVd%uDt&}v6uJ7JG z;inrt+gV#TcD4wSlgQY=kpL$yw(LBHRv1Jp5!o8L2W2ZfK^EG+zzMt1tdovJp+Ofn zHid?Wsue9a4sFDm^Bcvcolm0Gh{yGDp!m4C^lBcT5vh_>@yhUZc&>)euQp#-R+YX! zUpFW_2vtH|{MrmQCt`DCO^g26vzXJ~oF7cE6K)nMvdV!k_(53|8|HUF+BuL;*Q0MW z7lw`kGN@QM+7P}Lgr!aJsO+cgi-|Tx9D^B)jOySCGGgP;0NXDl%$ozY7(qBu zv1Q0aUmns+R# z^)xfkL)2K4vK}rzR^%^lE98XZwnC1`YK5HNo>s__73PZ-NHAY4u`gdNSwX&7ay;l@ zo?GdG3xB3ta-__Y>y{8v3}m}&;P>Co(?Hy9u{Z9vEEsoN?p6Sl*pJRFincvuyIt&T z5kmLY(6$(%J9V=ygH>;>Y>VNkQ{t_(!nGYvpR6TA+`R!gayOQJtS8}#r7a4?(iXdg zlhvSGc(3Zwy=PTE+n^hMMwF7ishV^$qdQ8r3~CW``SYZJQG~3!7GK5IUp1gtF6X*- z#Rc`K@?oY346iBaYP$a#sp{~CA4!S1UfFn*g@Pa>u1%=NLSrdE@C=NCm zlp&4bM z*Un?2+ivzhllYt!-GywXh1GTs$0FA+GuS`vL zC}zwW%?s_OKREy&g(q=l5d0i~1I2jc$+ZLf=sp0VBTB^w)MwK*P0^mvH;tR9ybtLb zUFxi~Ue$;rtV()Tl~h&5`=+l?)l^mWtSXfmgP4Q`b!nx2)0svyd`+^xHaq}_z2i45 z>ax)z*}wzy*x8Pv4CaS6W+L5x_@kd(`P=gDxgptH59_ntmhx*r4zqOhqOJVwj-$D8 z@I$hmqE>@OVVV#k&S>`R*S$<4Vfo)`U`jq4u1+y+!#TY4mkrOO3zQ9yiMMQc#KE%R zF)9ehliol$9usdk9&s=nj}fXue|nJZXbZjXJ0uwWIPW=rqG|NK-w+kNpH^DrF$dmH zuaWot^vZ+pr`N2YFXAtDh>AD*enaG)lM=s4urJ~_y)2kdXt|qt6)y3I-@L`|dg9W& ztxE%$-Mmd?v;SGTuP<6iZ=SdYs9Bu+aHYs4-vf3{P{RCS=;{Ksme+qRL^*Q&))Iu~ z^H)m?`qBk8Q=l(hV2(%bgj8S{>`NC|C`eP!Bx}h)nzYcHCM^l3NlW3U)foF~VGQ1# z4i>|}6p-CKJAtC$ITL|ehzIL<7O1oFp4c7~q$|)ZD=>E>qo0E(GFpHf@J2=pIpQ55 zHMCnQV9}0+D@2*|x^@k|g_H@FFfKP{8*|mE?sDPSM-WXU?j0~L6EfFH*3)vF8p*9zgB@YB-NxcDCqF_LlIFuYYG>TcG3|6ZX*8i$} zuGGv!FGXt}A=y1sQ&lri+i(RuoPB62*Fg?`vv+G)TV%`*T;MkI0dYKOS{B-wShxcu69)B79sR-qP{Jj>CTDj|uj{K*qWjs|#q&p;aV&dQ93yArjkPz(F}To%91GvIz3q{MO2Fo9UEtVqR>&P6zGa)yaj)xj z0JyOpM1|M5ho#iIh$-fI^QPX_>Oh!QN4yYR=9 zb)Joc-@h@BfH=qKSa8bYwHdscSk!`snx5&LV}7w6xV7~S6(G*U)(whd$=UpMZRXEu zx8OL1)Y%T^xN!D`{W_g@gwA8^fy2Ep)n;J);#E{Jn8ID6XR0>YSf3Z6?B1gguhS4bR^Hm_>)k)pD>Jfua4Itr z;_h-1co}~ULR}~I2Y>YDG2l``P}GVdPqbpT-6(HROcLmTL3cA--!OeG^ZMSVz`vG$ z@7h3RkR3g^Mui+@#f#h03{#n?&kp^A))^7SE%krK@V{qjNaIl6NX*0%^xgH!jO?hD zZP{KrIU5(P6@0Z?U@Fvpe_{>Ent|z|b@?c6`lM>}9i5YUth#WYQzB@3n!?8u+hYN>wd?gHP_(DTnyc4vyXnx)~uYJ;dwNeX@651BS z?7mUz`ou72k6f!^z8!F8i(&3Is#eau-n3Ni{N`k<`->gW@?qW$EiwFpCbC>p3;PBe zJ>tXc9Tla+xMu^ut@Y~!Osqxk_%ICKWiq#1?y%Y;E5)tsU)IuS+rV$+O-m8!#W*Z| zY8U*eSI4w}_FA0|N5|Z|c2YLXvqn)q%)1&;Hq0}zUOvnkR`a2oWy3t<)9^41jU98D z_iV+?_e?ijz^FDeYuI9#J3$gfkeq~Xi)fo+CypY=6RQ;^DO zugYpgFGini_PWM~_TC@ZVT%eVS>IOc1;N4s)kVwjv7Jw($Am4Zdm|;rtP@(HEzeRN zkM_nar3F+|M~~3zcDpjvAA_=<%$0~C(=kY(4@FEc_hGdOn6tsDsMhwu>?l+@ zeX|*?+1P%V=x$b}hNoqn)e#~VtcQG2_wGyL6L^9F<($-FiR+1b=Paxp6s@T3g=OzhazuWgyxCu!!d6%A%JtxfI>&xu-VHsbXy?dbGLHsR=F z=ci6UJCF4N82QvxS(@$W-t%x-Vp>&IUG06MrTC5YOt7jd0^*U! z@J|*rqqyOkCjWB*GW?rs2lj5^i9xI3*t_rf9pi6WO7KSe*3P>12HG~@4oT<`5b1Qc z4@zZPOnj71BeOQjpUCZa+5}PV>spz1qII3yA@Ez*!R;I=mQLxcZ?d7SRHsg!u}W>j zD%2-wUm(GY(}@bf9BZDDRV(SRA%*6(()H>rzq{xAprOn6&p4gN-aRod;8diZOhtua z)ubMw)#dU?P*FIp`3O+0+4CNJAi9d60h~G(^&^5)%c}m38jkge{(%V@uXXQZMD6Ul z^BP!_1n|HswW@jflEM>lWQ{ZoMdVgp>bHz8suLlPi7qgRZDD3i` z-is;}+rwKnQ>l#EXjWw!C~m@d0V9M|cYOAOAwl~F414m(^d8xUCd`fu#WasuuC>22 z80<}w`j)d?b}(+1qR@Lrr>9u-(_kxm*`qmzS_}#%Hpbs*5%Sji2=@vV9742-4-_q#P zw1*oS-CE6b5ffA}%&vfaskj0%R4BA5;h<{hHA3zpdfGOIe^T1YhFCY8uSwWHde^kH zZ>39Mme)XMR+H_hC3|1^0ad$v&00y1&Haruqk^$5%UI3+frrIN**{xb^YoY?Xvk(# znS5#Axi2mUZ0>YbOTR&jbO!Hut&F3~t$Ud+GZWS?)Ex;OFdt`Yes-6u zZ{kF_#HMvh{<+1ZZ50%Wr)um7u~xx{l8&e;+B;KSj}L#MnDFEOGOtbN({Js02!WSM zbV7)B3kH&|O;_U{9|g;7HWsn0Y>GD|Gf5c|BQJ4hiQAwr&QkAMOy~-cLRNws*$OP#J0z#HNdtdnn1Q_RT?AogyZ|?CeaZV){|^ zS-?HDl$+;cmuWVa@7c)d5Cnyk+SM<{3DBI2S#hfn=nB&k>cN1|sEZRwKdva?F{Cni zv4K+4QHBk@Yf&}ZBC&EFUk6*lvZMz$tsSv0eP%iQ!kkwM17M7_WeDSS#aGGdAQ$8e zwm20$k^)P319bIk&mV~IO{kUaO2=UyZ$6(9y}-Cw<}m$8j2LV$>islUmmkEKKT3de@RCEu_3P}@<3xO0&jK& z+B?5I;k0#xl29p7j;NPpiuLZ(sGVMgb1bltD;u0_NcTlAidBdF7zmZq?1i=Jo~y3I zaSE7RZ=lX>7^bub*tFgfKP+>}oe|bRF7$)%{h-AN#L!A@Y=mX2Z9^_gg*pxN_M7a;Q1Gp88$Xa?2-Ze4 z_CJuPMarLSL~Gs{`;ZHwP~0QDopyYjr^JVkmq*9RC$&b`47kXXm2r79W~_Ba6pw;T zK0BEqqa{yn>d}%%(AK&ih)Um@;_o<^RXu+69*TZT%I;H|ZT)g~XWQ5!{t%0;Z3)%D zQ`*TEXy4oy$?>j#roKtHsjcjq$cj{XL)OHtHE!vkf7y2I23bp4irx0TjTU;|R7>LN zRkqc3yf3gNVzli6PAhFo>NqxOJe34dlHXQ@95X#IYo~2Ea}Uy|49GeMe$$S2Z6{fu zP!reo(808P#hq)nwKnCW8=j)rvV>*v%+M5;fGKM`z-pAZO$ALk)}uS}AQjoQVi{Rk zS#HY*QHxhQ`jCnKE*Iue~Z9c-Jv%)Owf zRJ&+pn^_s>_~6UPwze%dD;Ll*YIu{{X03DtEivG0PO3`k-bGBdPeZ8}qf*4B>BABWeo zB**~$H*5;LxzGNu2qmvM!7n$M{4-gVAt{|RsZrLdp_Q;fDeSL6*Yw+*C?8;^8f&ta z37vR-Zwt2pN9|>NWyj4jJg>p({SLByV#RH8H3A87sr`vII-xOyuqR_}Q8Bu76eVonuZlxHVKz6gNH_#GV{~U7Stc1`Icn=TcV5ZT2J|;mWqQvICVqyba&bp#bvqN|#zBqvGSR%M zsVY;$io2!ExH)>E+xdS=yyK2qW<5RUSk?o-&PAMP6D-z29W_gv{#`E50PFhM2K0v8 zSikH_3iXfm{Pa<0RwlI{JdAr8>;usBvTH!7ztZgBw}~>v5y$y{sTG9m!T6TnsQ<`R zPU;^0?9GmTV;wTKbOhu&aL5DU_pV{88#?x|j&AdWtVcridXt3}T03jb!(+{CXU%_j zW!C->na!m?-Vc_mP`RUF7VA2?cDZVeawB3pA6v6(#@0d+vNC5?ibP2Flo@`Wv>bfV z^n*yUbC7O`4d*;C9JJu!bJjB|AB;^Sdde7`*)sWsHzEWyf{SvoNmDMUlex(@bc4Apx0goQ4gH?Cq006 ztX^avWZz^u!&%5=jnu&+vnN12p~~(gJ&RE$^E_5FEplm=%~q7V?XlT^jc+W$ zaa&NI;GN#b+JdgEq_r7bj~})z?pA6g5?aw=x70T5hC~~?xyPbL%d%dB+{24*``vNy zP&|K2#-gC#8?%GR(Tx?mjd?w{u5G(g20=%i#J1FysCKMIip5`hV|mY%;d#~9T;L6q z4)Ce?b=Zu~4JYUM%$%W5OC*6ISze)?m6%a9C|icu;cN9q*@+sZ4EG7^J;QA)X^>D> z20&9Se#iT9nTdCnOPQ=N+YH7$-@58<2RGmTHD4it8(xOSV36fSsD0;w3+JUxUsj^TKUw@Yk-~-_iB|jV6Ky;lj)2h z$0T3cpqa${rnOfdt2|~q-RpBk39SEGYZ)pGq?XH7Z6T<)9m!gnS!P9yJH=Bm>=I-# zu5aCoTchPxm)*A3ZfTFGOjJ5s<+%kK7W*CLCSqsCzQy3AGbba_=P{esb`YeBvr+8M zV&<6}L@2Q$BvNNG*Bi_B80*#4xHVSp@qv@P4{ zMquDz{b*%dvVM0Ew>>SF_F7$Q%d|HNgnU+1-jJ-8FlEfx%Kr6x>lj!2H#%+D+k{zp zZJDo*vuk~Tj=Qr>9IKzn26jUAFx39#8HRSUWsVywy!N(%chK3|7Fq$Bt@I*{<5>1I zI=}P=Nav@VChGiZQ(c$KVh6mF<0iLVSsq)FXblNAw(BHg7*L0A%L+#WI?+x(qF3pk z8M8Ckv)E__!7Q0~WDzvR zfXE$R1Pw9x5VwI;w{ee-AK7hG>!;J`U) z#IucgRH_Y4da*29;R&H>?;*+IYNSqla(GT#3$A3boJDdk7@ErC66wHrRmb z6=3Td2h^-+bL~$YTFWob2NBw-)8*)B1)QqB4$UFf8m%;cOXNE2B3au(jDrtcOZ({= zU3jOHf;k#QNWAjqxs?f?ry%W@$BH#Nbe$uG_`U?5;U*zB|4$odw;MGKMBy8xsuD=R z6>8sshk#Y--m>ZglqD^Z+HKXSf_;0=nQz86VejG@$M*bWJZIuW8~J`>g4olCjATi& z_sWrc5jURnvQIT;|0avaJ{fH&r2#M)tWPb5!=d9zvc`Lgg$-JEgpJ4%Ha=m%%9Rh< z@mx{X1cF^SiD~_e$bw7$OGLF}V$7|H1M1BV-3mS!cHj-$L%ExGQ_I2%x4@|gmMHO{ zKp}R?lf_Y*ez5Ju3l3RLRJo0$)hJT&l>;^i4Wp{)iw-K~OqNiGRLACSddB1WO(;s~ zgq#HGxW3FzYYe4L=5`HwS{4J1jMTfN1!3hUlKGR2NL#x%@mMX0-y+|ASem7YC;7uf^k0{B9M-VE{Kain^k>?uI{$Y4^>e8I iOqlJLie#!L|9?>CMsG6%MqZxcrgZP>K;zNBc>4>v&&6Z_ delta 19806 zcmc)R1$Y(L-nQ}o8pleJAPKagrH&V=a7rmqp-_QR>TL>v(gLAKPup`&H}1Z0clY3y z1b25!g1ftZ>v>2*;IyxOcJ-QHXRnbxd-m+eaOc2jd&xli%MDjze|SOUkGDi>%{~)| zh*D;<%w(I%F_UX1PsH-gWLB^;m?@)~GMOo}nX;JaF%dhfnI1P&HZx@xai)J+RE3;x z&D?ipiZavpW~ybT+GdJ2QynwaHPa7fs%NGj&GeI*>YJ&7nHriY#!QXO^s|{7o2iMJ znwqJZnSL?T-_7)^nSL|V?`Haknf_^}f0^kI35gRjGtJFwa$10vpcQBh+JLs89cT|a zfR3OO=nT4muAm#}4tju|K!aYOH|PWUf_@>`9}EBk!5}ag3;{#IFfbg903*RDFdB>j zW5GBu9!vle!6YylOaW8DG%#J^_0Pa;ESL#qf!SaVm<#5C`CtK92o{0GAP&TX1h51w z1}g4o-lR;1oCw&VaMv95@dyfQ#S~xD2j?YYFab;ilfYy!1xy9gEL?xnF*^gq zf|+0zm<{HDxnLfc4;FxhU=dgh;y^q|087A9una5*E5J&y3akd9HE=Ch2iAiPU?bQB zHiIo-E7%6MgB@Te*adcjJzy``2lj&lAQ2>iWN;81vT*$!#_SPr6dVJ`!3l5@oC2r8 z8E_Vy1Lwg7a1mSrm%$Zq6nOE9YH718FT?%K{wDH^Z-492E9OU(5DjY3;KcnU;r2h27$p~2p9^6f#F~T7zy-J zzfj1XjM*t*DwqbQgBc(e%mlN*Y%mAR1@pjsumCIsi@;(K2jW2jSOS)UWnej25rQkh zDzF-?0c*iJupVpx8^I>98EgSt!8WiR>;OB#F0dQy0eitdupb-%iMIJ9xk;E!1_!|* za2Ol`N5L_09Gn0r!6|SWoB?OSIdC3a02jd}a2Z?ySHU%K9fWSco8T6>4eo%u;2vmh zeq3-{fR>;YXbswcwxAto4>}mUj-V6h47z}>pd088dVrqzHtuQ6_5!^@AJ7-{1O34O zFc1s^gTW9m6bu8y!3Z!Ci~^&<7%&!$1LMI2Fwqe5CSi6mm;$DPX<#~-0b;>SFw5Z2 z26Mn%Fb~WJ3&29K2rLG1ARZ)uC15F729}553b4`;tOBdS8n70u1M9&Cun}wmo52>a z)sSHu*ba7ponRN(4fYr^?gjh6esI7s*I&j&%qD?ka1a~+lA+32uSg;10M8?t$j!=hciYKugdHv<7WJThI=) z2OU61&;wB*h1z)5floCasWS#S=V2N%Faa0y%nSHM*e zx(2U<8{j6m1#W{o;4ZianwwvkGPeLNK`YQ2v;l2FJJ23<03AUm&>3_AT|qa{-80u; z<{p^s2{h;hdV@ZoFX#vQg8^V57z74`Az&yN28M$XU?do2$TAv?0b{{9Fy0W#G6Ay_ z!6YylOaW8DG%y{^0I`P0W`bE@HkbqEf_Y#*SO6A+MPM%e-j0c-@Dz-F)oYz5oEcCZ8N1iQd)um|h~`#f{~J-*+}K7Ifsf+Ua( z4uV65Y=^-Sa1il3=9V&z(_C(j0R)CSTN2I3LB5v31A|a1SW$iU@Djf zrh^$E){tu^m<48oIbbfB2j+tXU?Erp7K1nt4-&wV5L^nDf#qNYSP51ca<2w!z*?{l ztOpywMz9HN23x>ZunlYnJHSq`3+x7az+T^6f4TQzc0V`(54eo%u;2vmhZW)EQ z04+f)&>FM>Z9zNG9&`X5K_}1|bOBuhbNxkhGqVxhK@ZRqXwVDv27N$Z&=2$n1HeEq z2n+^8z)&y@398EgSt!8WiR z>;OB#F0dQy38aoh?8WRpupb-%i699igM;7@I1G+}qu>}g4o-lR;1oCw^7+M!lrsMn z%cm26&iAC4&+dNn)9RVvY;Z0(A6y772A6`%ftcGUB1#vpp2u8Tk|(1ldeU=MmD0DK zds$h!*z>RJ`p-0y^@gO#0x95h|Cy_hMz0TfhI(dn%8fQv4~i zB#U1D(#tBZzWLJIDqO!+sELZua|+c}`Sj-6IrPhgKT`R1o5EkHCvX6;{qD%bTMNunWOq%71G&DlvjmyjS{b`BD!aZQmUw4 zU81-urf-)htBUK_UVb%{BRpqVuH1R@M&!%?#FLQ)o_f0AGtWNv{0lF>RH$%~qQyRX z_r2FDz5PzfQl-nh^6JOc-mg;igNl_uto})j$Fe@2t^8XRUN8H%H_E;FY0b}ymw0)N z{15h(?=NVY%)3C`8^%_Oij;`A{Iy$m`y(UeYMAmB<85Q|pJ9BIGk-Znf-gDKc_TIm(J6Y+~ zuSM4VD7ta2=!Q)re~GH!EV_xg5Btat@|KUR9o00d>2HmqBkRO8j;s>Xux`Dk&1y$C zF?VVoSvSw4>zbqHsP9z=Zd$KaWRvJ$&E4P! zE9+3{iq-+8mzS<=B`ck+ObP31pevPm-8!mt%QE#t9aYr#JyfmQ(RJ$nQ18c|>NjW@ z)9B~MO`10QJu zW9^ytEPJ*+$DV7?v*+6j?1lCsdvVB)v*Yaqd9d>Rji;yV>i%wLq&!J%%2Uqd)6e38 zV3+^>mymi8S$PyZ2z(9q_%+;oM|EFr_gEK4SAL_4)!otk-Y8}Dbo9nI3R>FHSKfHm z>gDMCqjTm#=9}b@W%|KgF_{i^cltSfojy))$2^-YgXZ0Mw}f@b(PiH4W?c*Ps&{X=*8}T_(uFJM*8AVvU>$Sx|AlKI;Wh|&Kc*dbIv*D9CuDQ*PN5iQRlpK!MW&Ma&9^| zoI}oG=ZJI9x#hHRTe{8N+fHkDkF(d==d^NLxObg9PNDzWj?4V}p0QW#{jc_n_cxPy zfAfbbEEIWZt~<}2?=Em--I?wzceXpnUFI%y7rBewICr8u$(`&@ai_Y|-0AKNceFdk z9qW#B$Ga2UA?{Fjm^<7Z;f{1ixy#*ncd5I?O>hUggWSRHe`U9?{15hvgU_thCr`T7 z9xt%R)z5rV%-ZYfnxA}O?Q?bPC$C%kU48zOH?0G%E>WY3mFVi`H5yn+uK5wDtaZ@U zg+DE69dh}hnje$PI_&E1pO&(YxO(NM<*cKw4r-RLj=8#Q&EnQ^SI5*WW}U#=FIgvD zy`ko_)+r2z=}ezRSf^e6{AWe2Gp_#pvlp$i*i)Du@L8mF&eaP)D`cH_^~ui)TNhlN z_wz#5MGO|mQmsFG;fowWLSI`QjYt+t-t{LROD!Z**DeVEx% z*u~$!ZESWCd+OVHDsz;GZyBFMx?j`p>{$YNXyW8F4?sfOM``rU>qTAVP z>$UT`guJd^AFr?1-RtRf^g4OkYvZ-|dU)NuUS4mngV)bXl>eKDSRwr{FMn~2|Jfnx zm#ROZ%hk&6ev;1`~4bo9`{~7J7@k z#a^5j?P7*+wJY~_Ii2l52P;svrTuJT`o)80MGe2P7Hp@e(rN~di;G} zvX|r~dI!Ay-a+q?hgd%wjxoa$Gxzxzb>7qY>V5w4A@7`b);r^!_D*>xy%XMX@0fSg zJK`Po&U=@=OWsBAf_KHc>g9a!@UJ()ihBAF`Ab<(;Y@sCZaZYS=iT+LdDp!g-c9e8 zciX$;{mBrHE=TICalb0#xA1j=i2FY!e*a@0tG#*1UpdQJ9eus|$BI@bU+4ZQzt!2- zrGNUs>f-CRKb5z-`g-+Ge|w{=-`?-wcl0~?o&7FmS1tWkervyt-_~#EKlUFj#9`!o za2V%QH{YD3&tA^d&F|~?@q7EdeC_x2d-&b`etv)dFNU#~u(Z8=Q^+3R>ue3GTSI+* z1g7|UQG++42lzw$!TunBpg+`~=uhy+`{Vqv{uqC>Kgu8JkMM{4!~9A9WPgf3)t}~1 z_h4!a7C3T~}S`{xjciKz-Zi2hYH@^V9YOV40?=df^wR%|1 zTpHg!*7TmHk`nuM+ghmFVg3-a4U~Dih7#~asCI*v&$-$IhYA`LB9?S@0gPFmsV0JJkm>bLs z<_8Ocg~6g=aS#{82MNKFU}>-{SRSkhRtBqr)xnxzZLls_A8ZIV2AhJ-!Iofaur1gg z>I2wsvxh3z5+ zRTLBh#idXQ`(^X%j9s#lQI!IvK^gE0con<`%q>M?vxrck66z20x=lA|Xs*o7NV^3zH-n7QlD49) zX&cIdRG5$o8&Y9JDy&GQ6W3u!Dhx@5C8>1dI9pQb!TAt#QejUj3`&JXsW2%OHl@;! ztM;en9;i92fpicZOj(x7P|gpd!|4b*l8&OIDGO5>8{z{-rozfpn3;;X8ET$}p{cMm z6{eYDvxTi#p_)5gAv~DR zp#^jyT|^n9+HstZrwP>Dsx(_IrOW7Y$|%)lm1^$0nRRT&spbwG=Gmy4dvTa&s;Z18 zSG3o1V`?*8HMj8a1WZ?zxq)fs8L!&r2Bn$bLfNmHTYnf~!D=&MHTUQ+!id%0&G|ia zFWpDYy-TwWQr3`TZs*}a5>1BoLCzndhv^ZHGifz9_^=MkRz>AFM&txNNl#HmuENSy zn7PV1jx%(X3z!edMGi4`mCKxG?kenEg~6+^c$FJmdXwIwx9J_q>{ae@zB$4}X+fF3 z3fos<{3@(ph54(57{Ce(SYZMy9l04JSYZV#%wUBbtaRg2maxJUR@lM{V_0DgE6ibq zJ*@QQ`V3-)MXWH16*jRlD8$9gVr2;DhtgqmIAt3vjAMm$tT2xi_OZf1R#?ai6Iq$S ztr*D)D_LPCE9_)tDwmp4)|{c~%teK*tT2`p*0RD}R@lo5gIQrQD@f;yQvB*Ac|Hj-bYMggLIcFKzzGQ&H)Id100->~e)+t_;Y> z1#EL=5a(Iv3iDij;h!ZxzmjiDoA=muDMH%Ay&PLS+BVXjuD2vY9Z&D_6plxiNlD*Q|7(GzE_rV zgoUp#@s$-EVdE=|e1(;-F!L35z9C`hE9<%H2D*{5_La??XYVUpInUx(wsW4%uQ2)* zR=>jRSJ?du!(Z9QHJSbj+g~y9uXzDUG{pQ@*#F8Q4zU0hCcwf5SQr5dD_~&;EbM@V zA+WFnmNVS;EImhA1Iq=@vj>(-oM#a%S2%w)#Q(7h7G}Z1ELhkD3&UW!&2^Xt3)^71 z$C2iy&UB>(WgjdIgoTB$FcFrvT*^pTSP2U4l9 zuAmoor6<)C#jq<#hFxJZY%>~GtcDe{Va0CPW;m=^4y(atea~h)tf&k{1?$N$ERf-p z8L_Y<7KX&al32!YW46SKF|lGzEX;`oJ+UY3iG@M2uqc+P9A{H3jEaR-vBYv5U9qX) zP!@ZFwAd50#hxH8_5^jYC&-IEL0{|%0%K1W(Zw{5#?u6&Z!v|iee4VJV_!B>1jxRyK(?76+gr^@pr{~44g@W7 zAc&CzL5&;;a^yhJBL{*YIS>@dfrQW`XR!A}b$}+)Bq+)BAZ3|sGfh@U%t%Ic6xytl zZRW{}3M*w{rY!7~ZHCIiQdyWP+vm9LdGig*?1;ItVy|pp;sO@SipjEKv#b~`D@MyU zt7S!n@v^X9wwW)>9qd8w(tEVINk}tF3(AODT5-NLD`a8FENwZ&lv&s^3u9(s%`D8B zg*~%$;hHR(g-NrpX_g)w?@3uT3$tcn*DQTF&azpUHj8PSO$9Ejn`Iyuqi@bA2%Iwt z3g?V6ln$fADJy4tq?ym8*f}eP&h{9NP+{;aES`nQv!Hp-By65-M$Za{GRb5vVEru2 zpN0Li%>Y_anZb1!LJLc1VG1p?InEf`W(}>FLo4>sY5|ri7ST47Xhnr(w8UX)$d2bq zR1&y5M$)pB^UEkRX<5N}hSI`PT9`@;TWMh|E$g_>ddgl}7)%R`Y1z#2EtJu;gqTeW zyJ^|M1uUlp>2xMRJDo`wPuqLVd}c+35w+~ch_IrTM9wGCWN5RbR#XmgoJF-Tsg|Q0 zITqsom{kkAYGGI{EUV=-m!6@FtA%y7Ft3&i9KT3eSet(mz!S5vR#dKXDN}1h)9vb`3@*TVW*I&z%-wJ^XI z7TCfBTi9SrcT~Wcg%!5+&Z1kGblV|D-HKJWV%DwLb=wTP)fVoWX}7TL7RKGOgF9m0E$F)+ zw|7HD1)cZfg3$YMF{QVWrMDa~^V#e~sFG;1`TlDj9HfWnVR{70QOf9BSbYn#Z#l_v zhTk^JZ$*UxxUc{hCg8#bTrQaPv)dP;qJkJayIjU!0c02S;MwIWWe_eb!sP}>(1ho( z5ryYasKRq7WZ^l~U5?-5d~BK{lQUXn6M%jWaObRVMs14$%QGo4CPA0=y1xMT-cNIN)8idlXGEn zE{x7)4wufQ?9PSZxu87HZ6iI;t*D?t&n-yMb4whJhjs!~A^uO6Z~B1^qn5D~lE@hZ5EYpQ)y0A?b#_7U3U6`i}`*hh6;$}OIdF)+K zQ9-JnN6@P05fiH$@dYH0?BhI|^*n-TJ+GYzRT53+$U)9iLBF0?5U}Uv9`ec&Gaqgv zWDi%z@K*@o>Np=DW)BzC?BRl(JzUVUhszmgqi7FTR1mg@3(EFz8)+X+Pd9*Pk5@4^6H zSilPtcwqxCjNpY8yfA|ocJRUwURc5lQ+QzuFO1=ZHM}r~mtlM|2JyloUYNuSoA{8h ziWg?_f-XKn*u@LOcwreYOyh-ZyfBUz*73qTUf9PA19@Q~FHGcxjl3|D7gqAZOkUW@ z3qyGcF_jm#^1@hNSj!7@d0{Uv@jR>q%3@xa%nO@&VKgtS=7rh3u$vc#^TKjon9d8^ zd0{*+tmkDTD|}%Pc{28g zxr1HZs87yVckx0iPln3KsH>PfI&oep2rCSXy_>=!uh4K~4*NqOiZuRJ2 z-6nO6xf(?M6rFza8V#F7)rroG;ndw{;e*tUIx8NPuT?9$NfVQJzgIDvIqIrWzkPpy zFL)jLO#HD>_JVcZZXDB~a`g{CNPWh~3)cB0CjCH;`|G@2FS>s1)RnSfrH4kc6s+@M zy{0VA{m8MSv_^{^ z_RtGR9o6?nh3VuWMPCkoWV4iv8(ZdiXv+r+^ycv&WXk_wJG^ZfB2ri8n|OA@rv)E9 znI=Jh_+**^{n~_5<;|w4r-NsxO1YQKt!DM=H_e;6+kab<@BUUeAv%6)m>w~q zSm9ic>?!5y%K6YvQU-JDj|Sz|SqHt4{#{SKdeROwbs+t_o;vp6T~8fJd7o1srfh_( zC++&@Mh}gI%;Dkn^Q}!=&z!xKODb*1TqJnE(;k~$rJlExkJYq$hE2h(2N z!%NH+oAMGL9yjL$uk+zSa~bn#pD?d3-3Qs6;`>jUGN$vcd@Gdhyr*0?O`4{i_q37p zr#)@(!D&w$O80^*H2LL&s0Pust3}s}XmmAQ<}Gd;KjQ=TIA62zKmm-YSEm-g_%>q{Fldo$~&d>^_0l{WQ}IfE(tPWwiq zXAgW@kDj_(M^0^{8&3O0zcI9K86I59SI+wf_u#8+$_^eZO*#4IJ5Oxgr8TYCAn-BU(5V$(Qj$r z2_9V#!L28*D*b%Qr-`qq9-b24Y0P_d#!_9k^dhV)LEM?w{`)iqbop1Gb zk?FpSS5N)Z3-e(xPjP=e-Dvd-Ma&6I-ADSBnxuWdduTMa|LQVU>~rguXMF6j@{Q_M zi#C6&)DRz#*i$<)S^3N}ro8KE3(fIInNw2fXFYX$uGnn5v-;*w_X;HC$e8xAionDB fKM9#jBMgsX8zp@omM1q?dH5s2pE0&v>HNO{ymN%6 diff --git a/poseidon-hs.txt b/poseidon-hs.txt index 7a01c2e0..fa15c3fe 100644 --- a/poseidon-hs.txt +++ b/poseidon-hs.txt @@ -8,7 +8,511 @@ -- databases, a modular system for storing genotype data from thousands -- of individuals. @package poseidon-hs -@version 1.5.5.0 +@version 1.5.6.0 + +module Poseidon.ColumnTypesUtils +class Makeable a +make :: (Makeable a, MonadFail m) => Text -> m a +parseTypeCSV :: forall a m. (MonadFail m, Makeable a, Typeable a) => String -> ByteString -> m a +makeInstances :: Name -> String -> DecsQ + +module Poseidon.ColumnTypes + +-- | A datatype for the Genetic_Sex .janno column +newtype GeneticSex +GeneticSex :: Sex -> GeneticSex +[sfSex] :: GeneticSex -> Sex + +-- | A datatype for the Group_Name .janno column +newtype GroupName +GroupName :: Text -> GroupName + +-- | A datatype for the Alternative_IDs .janno column +newtype JannoAlternativeID +JannoAlternativeID :: Text -> JannoAlternativeID + +-- | A datatype for the Relation_To .janno column +newtype JannoRelationTo +JannoRelationTo :: Text -> JannoRelationTo + +-- | A datatype for the Relation_Degree .janno column +data JannoRelationDegree +Identical :: JannoRelationDegree +First :: JannoRelationDegree +Second :: JannoRelationDegree +ThirdToFifth :: JannoRelationDegree +SixthToTenth :: JannoRelationDegree +Unrelated :: JannoRelationDegree +OtherDegree :: JannoRelationDegree + +-- | A datatype for the Relation_Type .janno column +newtype JannoRelationType +JannoRelationType :: Text -> JannoRelationType + +-- | A datatype for the Relation_Note .janno column +newtype JannoRelationNote +JannoRelationNote :: Text -> JannoRelationNote + +-- | A datatype for the Collection_ID .janno column +newtype JannoCollectionID +JannoCollectionID :: Text -> JannoCollectionID + +-- | A datatype for the Country .janno column +newtype JannoCountry +JannoCountry :: Text -> JannoCountry + +-- | A datatype for countries in ISO-alpha2 code format +newtype JannoCountryISO +JannoCountryISO :: Country -> JannoCountryISO + +-- | A datatype for the Location .janno column +newtype JannoLocation +JannoLocation :: Text -> JannoLocation + +-- | A datatype for the Site .janno column +newtype JannoSite +JannoSite :: Text -> JannoSite + +-- | A datatype for the Latitude .janno column +newtype JannoLatitude +JannoLatitude :: Double -> JannoLatitude + +-- | A datatype for the Longitude .janno column +newtype JannoLongitude +JannoLongitude :: Double -> JannoLongitude + +-- | A datatype for the Date_Type .janno column +data JannoDateType +C14 :: JannoDateType +Contextual :: JannoDateType +Modern :: JannoDateType + +-- | A datatype for the Date_C14_Labnr .janno column +newtype JannoDateC14Labnr +JannoDateC14Labnr :: Text -> JannoDateC14Labnr + +-- | A datatype for the Date_C14_Uncal_BP .janno column +newtype JannoDateC14UncalBP +JannoDateC14UncalBP :: Int -> JannoDateC14UncalBP + +-- | A datatype for the Date_C14_Uncal_BP_Err .janno column +newtype JannoDateC14UncalBPErr +JannoDateC14UncalBPErr :: Int -> JannoDateC14UncalBPErr + +-- | A datatype for the Date_BC_AD_Start .janno column +newtype JannoDateBCADStart +JannoDateBCADStart :: Int -> JannoDateBCADStart + +-- | A datatype for the Date_BC_AD_Median .janno column +newtype JannoDateBCADMedian +JannoDateBCADMedian :: Int -> JannoDateBCADMedian + +-- | A datatype for the Date_BC_AD_Stop .janno column +newtype JannoDateBCADStop +JannoDateBCADStop :: Int -> JannoDateBCADStop + +-- | A datatype for the Date_Note .janno column +newtype JannoDateNote +JannoDateNote :: Text -> JannoDateNote + +-- | A datatype for the MT_Haplogroup .janno column +newtype JannoMTHaplogroup +JannoMTHaplogroup :: Text -> JannoMTHaplogroup + +-- | A datatype for the Y_Haplogroup .janno column +newtype JannoYHaplogroup +JannoYHaplogroup :: Text -> JannoYHaplogroup + +-- | A datatype for the Source_Tissue .janno column +newtype JannoSourceTissue +JannoSourceTissue :: Text -> JannoSourceTissue + +-- | A datatype for the Nr_Libraries .janno column +newtype JannoNrLibraries +JannoNrLibraries :: Int -> JannoNrLibraries + +-- | A datatype for the Library_Names .janno column +newtype JannoLibraryName +JannoLibraryName :: Text -> JannoLibraryName + +-- | A datatype for the Capture_Type .janno column +data JannoCaptureType +Shotgun :: JannoCaptureType +A1240K :: JannoCaptureType +ArborComplete :: JannoCaptureType +ArborPrimePlus :: JannoCaptureType +ArborAncestralPlus :: JannoCaptureType +TwistAncientDNA :: JannoCaptureType +OtherCapture :: JannoCaptureType +ReferenceGenome :: JannoCaptureType + +-- | A datatype for the UDG .janno column +data JannoUDG +Minus :: JannoUDG +Half :: JannoUDG +Plus :: JannoUDG +Mixed :: JannoUDG + +-- | A datatype for the Library_Built .janno column +data JannoLibraryBuilt +DS :: JannoLibraryBuilt +SS :: JannoLibraryBuilt +MixedSSDS :: JannoLibraryBuilt +Other :: JannoLibraryBuilt + +-- | A datatype for the Genotype_Ploidy .janno column +data JannoGenotypePloidy +Diploid :: JannoGenotypePloidy +Haploid :: JannoGenotypePloidy + +-- | A datatype for the Genotype_Ploidy .janno column +newtype JannoDataPreparationPipelineURL +JannoDataPreparationPipelineURL :: Text -> JannoDataPreparationPipelineURL + +-- | A datatype for the Endogenous .janno column +newtype JannoEndogenous +JannoEndogenous :: Double -> JannoEndogenous + +-- | A datatype for the Nr_SNPs .janno column +newtype JannoNrSNPs +JannoNrSNPs :: Int -> JannoNrSNPs + +-- | A datatype for the Coverage_on_Target_SNPs .janno column +newtype JannoCoverageOnTargets +JannoCoverageOnTargets :: Double -> JannoCoverageOnTargets + +-- | A datatype for the Damage .janno column +newtype JannoDamage +JannoDamage :: Double -> JannoDamage + +-- | A datatype for the Contamination .janno column +newtype JannoContamination +JannoContamination :: Text -> JannoContamination + +-- | A datatype for the Contamination_Err .janno column +newtype JannoContaminationErr +JannoContaminationErr :: Text -> JannoContaminationErr + +-- | A datatype for the Contamination_Meas .janno column +newtype JannoContaminationMeas +JannoContaminationMeas :: Text -> JannoContaminationMeas + +-- | A datatype for the Contamination_Note .janno column +newtype JannoContaminationNote +JannoContaminationNote :: Text -> JannoContaminationNote + +-- | A datatype for the Genetic_Source_Accession_IDs .janno column +data JannoGeneticSourceAccessionID +INSDCProject :: Text -> JannoGeneticSourceAccessionID +INSDCStudy :: Text -> JannoGeneticSourceAccessionID +INSDCBioSample :: Text -> JannoGeneticSourceAccessionID +INSDCSample :: Text -> JannoGeneticSourceAccessionID +INSDCExperiment :: Text -> JannoGeneticSourceAccessionID +INSDCRun :: Text -> JannoGeneticSourceAccessionID +INSDCAnalysis :: Text -> JannoGeneticSourceAccessionID +OtherID :: Text -> JannoGeneticSourceAccessionID + +-- | A datatype for the Primary_Contact .janno column +newtype JannoPrimaryContact +JannoPrimaryContact :: Text -> JannoPrimaryContact + +-- | A datatype for the Publication .janno column +newtype JannoPublication +JannoPublication :: Text -> JannoPublication + +-- | A datatype for the Note .janno column +newtype JannoComment +JannoComment :: Text -> JannoComment + +-- | A datatype for the Keywords .janno column +newtype JannoKeyword +JannoKeyword :: Text -> JannoKeyword +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoKeyword +instance GHC.Show.Show Poseidon.ColumnTypes.JannoKeyword +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoKeyword +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoKeyword +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoKeyword +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoComment +instance GHC.Show.Show Poseidon.ColumnTypes.JannoComment +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoComment +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoComment +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoComment +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoPublication +instance GHC.Show.Show Poseidon.ColumnTypes.JannoPublication +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoPublication +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoPublication +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoPublication +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoPublication +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoPrimaryContact +instance GHC.Show.Show Poseidon.ColumnTypes.JannoPrimaryContact +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoPrimaryContact +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoPrimaryContact +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoGeneticSourceAccessionID +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoGeneticSourceAccessionID +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoGeneticSourceAccessionID +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoPrimaryContact +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoGeneticSourceAccessionID +instance GHC.Show.Show Poseidon.ColumnTypes.JannoGeneticSourceAccessionID +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoGeneticSourceAccessionID +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoGeneticSourceAccessionID +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoContaminationNote +instance GHC.Show.Show Poseidon.ColumnTypes.JannoContaminationNote +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoContaminationNote +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoContaminationNote +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoContaminationNote +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoContaminationMeas +instance GHC.Show.Show Poseidon.ColumnTypes.JannoContaminationMeas +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoContaminationMeas +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoContaminationMeas +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoContaminationMeas +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoContaminationErr +instance GHC.Show.Show Poseidon.ColumnTypes.JannoContaminationErr +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoContaminationErr +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoContaminationErr +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoContaminationErr +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoContamination +instance GHC.Show.Show Poseidon.ColumnTypes.JannoContamination +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoContamination +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoContamination +instance GHC.Enum.Bounded Poseidon.ColumnTypes.JannoCaptureType +instance GHC.Enum.Enum Poseidon.ColumnTypes.JannoCaptureType +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoCaptureType +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoCaptureType +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoCaptureType +instance GHC.Enum.Bounded Poseidon.ColumnTypes.JannoUDG +instance GHC.Enum.Enum Poseidon.ColumnTypes.JannoUDG +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoUDG +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoUDG +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoUDG +instance GHC.Enum.Bounded Poseidon.ColumnTypes.JannoLibraryBuilt +instance GHC.Enum.Enum Poseidon.ColumnTypes.JannoLibraryBuilt +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoLibraryBuilt +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoLibraryBuilt +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoLibraryBuilt +instance GHC.Enum.Bounded Poseidon.ColumnTypes.JannoGenotypePloidy +instance GHC.Enum.Enum Poseidon.ColumnTypes.JannoGenotypePloidy +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoGenotypePloidy +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoGenotypePloidy +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoGenotypePloidy +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoDataPreparationPipelineURL +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoDataPreparationPipelineURL +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoDataPreparationPipelineURL +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoEndogenous +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoEndogenous +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoEndogenous +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoNrSNPs +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoNrSNPs +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoNrSNPs +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoCoverageOnTargets +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoCoverageOnTargets +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoCoverageOnTargets +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoDamage +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoDamage +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoDamage +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoContamination +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoDamage +instance GHC.Show.Show Poseidon.ColumnTypes.JannoDamage +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoDamage +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoDamage +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoCoverageOnTargets +instance GHC.Show.Show Poseidon.ColumnTypes.JannoCoverageOnTargets +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoCoverageOnTargets +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoCoverageOnTargets +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoNrSNPs +instance GHC.Show.Show Poseidon.ColumnTypes.JannoNrSNPs +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoNrSNPs +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoNrSNPs +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoEndogenous +instance GHC.Show.Show Poseidon.ColumnTypes.JannoEndogenous +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoEndogenous +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoEndogenous +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoDataPreparationPipelineURL +instance GHC.Show.Show Poseidon.ColumnTypes.JannoDataPreparationPipelineURL +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoDataPreparationPipelineURL +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoDataPreparationPipelineURL +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoGenotypePloidy +instance GHC.Show.Show Poseidon.ColumnTypes.JannoGenotypePloidy +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoGenotypePloidy +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoGenotypePloidy +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoLibraryBuilt +instance GHC.Show.Show Poseidon.ColumnTypes.JannoLibraryBuilt +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoLibraryBuilt +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoLibraryBuilt +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoUDG +instance GHC.Show.Show Poseidon.ColumnTypes.JannoUDG +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoUDG +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoUDG +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoCaptureType +instance GHC.Show.Show Poseidon.ColumnTypes.JannoCaptureType +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoCaptureType +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoCaptureType +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoLibraryName +instance GHC.Show.Show Poseidon.ColumnTypes.JannoLibraryName +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoLibraryName +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoLibraryName +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoNrLibraries +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoNrLibraries +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoNrLibraries +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoLibraryName +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoNrLibraries +instance GHC.Show.Show Poseidon.ColumnTypes.JannoNrLibraries +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoNrLibraries +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoNrLibraries +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoSourceTissue +instance GHC.Show.Show Poseidon.ColumnTypes.JannoSourceTissue +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoSourceTissue +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoSourceTissue +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoSourceTissue +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoYHaplogroup +instance GHC.Show.Show Poseidon.ColumnTypes.JannoYHaplogroup +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoYHaplogroup +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoYHaplogroup +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoYHaplogroup +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoYHaplogroup +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoMTHaplogroup +instance GHC.Show.Show Poseidon.ColumnTypes.JannoMTHaplogroup +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoMTHaplogroup +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoMTHaplogroup +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoMTHaplogroup +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoMTHaplogroup +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoDateNote +instance GHC.Show.Show Poseidon.ColumnTypes.JannoDateNote +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoDateNote +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoDateNote +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoDateC14UncalBP +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoDateC14UncalBP +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoDateC14UncalBP +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoDateC14UncalBPErr +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoDateC14UncalBPErr +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoDateC14UncalBPErr +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoDateBCADStart +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoDateBCADStart +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoDateBCADStart +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoDateBCADMedian +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoDateBCADMedian +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoDateBCADMedian +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoDateBCADStop +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoDateBCADStop +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoDateBCADStop +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoDateNote +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoDateNote +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoDateBCADStop +instance GHC.Show.Show Poseidon.ColumnTypes.JannoDateBCADStop +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoDateBCADStop +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoDateBCADStop +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoDateBCADMedian +instance GHC.Show.Show Poseidon.ColumnTypes.JannoDateBCADMedian +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoDateBCADMedian +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoDateBCADMedian +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoDateBCADStart +instance GHC.Show.Show Poseidon.ColumnTypes.JannoDateBCADStart +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoDateBCADStart +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoDateBCADStart +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoDateC14UncalBPErr +instance GHC.Show.Show Poseidon.ColumnTypes.JannoDateC14UncalBPErr +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoDateC14UncalBPErr +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoDateC14UncalBPErr +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoDateC14UncalBP +instance GHC.Show.Show Poseidon.ColumnTypes.JannoDateC14UncalBP +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoDateC14UncalBP +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoDateC14UncalBP +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoDateC14Labnr +instance GHC.Show.Show Poseidon.ColumnTypes.JannoDateC14Labnr +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoDateC14Labnr +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoDateC14Labnr +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoLatitude +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoLatitude +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoLatitude +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoLongitude +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoLongitude +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoLongitude +instance GHC.Enum.Bounded Poseidon.ColumnTypes.JannoDateType +instance GHC.Enum.Enum Poseidon.ColumnTypes.JannoDateType +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoDateType +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoDateType +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoDateType +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoDateC14Labnr +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoDateType +instance GHC.Show.Show Poseidon.ColumnTypes.JannoDateType +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoDateType +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoDateType +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoLongitude +instance GHC.Show.Show Poseidon.ColumnTypes.JannoLongitude +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoLongitude +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoLongitude +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoLatitude +instance GHC.Show.Show Poseidon.ColumnTypes.JannoLatitude +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoLatitude +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoLatitude +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoSite +instance GHC.Show.Show Poseidon.ColumnTypes.JannoSite +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoSite +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoSite +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoSite +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoSite +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoLocation +instance GHC.Show.Show Poseidon.ColumnTypes.JannoLocation +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoLocation +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoLocation +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoCountryISO +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoCountryISO +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoLocation +instance GHC.Show.Show Poseidon.ColumnTypes.JannoCountryISO +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoCountryISO +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoCountryISO +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoCountryISO +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoCountry +instance GHC.Show.Show Poseidon.ColumnTypes.JannoCountry +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoCountry +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoCountry +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoCountry +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoCountry +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoCollectionID +instance GHC.Show.Show Poseidon.ColumnTypes.JannoCollectionID +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoCollectionID +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoCollectionID +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoCollectionID +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoRelationNote +instance GHC.Show.Show Poseidon.ColumnTypes.JannoRelationNote +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoRelationNote +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoRelationNote +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoRelationNote +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoRelationType +instance GHC.Show.Show Poseidon.ColumnTypes.JannoRelationType +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoRelationType +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoRelationType +instance GHC.Enum.Bounded Poseidon.ColumnTypes.JannoRelationDegree +instance GHC.Enum.Enum Poseidon.ColumnTypes.JannoRelationDegree +instance GHC.Generics.Generic Poseidon.ColumnTypes.JannoRelationDegree +instance GHC.Classes.Ord Poseidon.ColumnTypes.JannoRelationDegree +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoRelationDegree +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoRelationType +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoRelationDegree +instance GHC.Show.Show Poseidon.ColumnTypes.JannoRelationDegree +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoRelationDegree +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoRelationDegree +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoRelationTo +instance GHC.Show.Show Poseidon.ColumnTypes.JannoRelationTo +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoRelationTo +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoRelationTo +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoRelationTo +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.JannoAlternativeID +instance GHC.Show.Show Poseidon.ColumnTypes.JannoAlternativeID +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.JannoAlternativeID +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.JannoAlternativeID +instance GHC.Classes.Eq Poseidon.ColumnTypes.JannoAlternativeID +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.GroupName +instance GHC.Show.Show Poseidon.ColumnTypes.GroupName +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.GroupName +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.GroupName +instance GHC.Classes.Eq Poseidon.ColumnTypes.GeneticSex +instance GHC.Classes.Ord Poseidon.ColumnTypes.GroupName +instance GHC.Classes.Eq Poseidon.ColumnTypes.GroupName +instance Poseidon.ColumnTypesUtils.Makeable Poseidon.ColumnTypes.GeneticSex +instance GHC.Show.Show Poseidon.ColumnTypes.GeneticSex +instance GHC.Classes.Ord Poseidon.ColumnTypes.GeneticSex +instance Data.Csv.Conversion.ToField Poseidon.ColumnTypes.GeneticSex +instance Data.Csv.Conversion.FromField Poseidon.ColumnTypes.GeneticSex module Poseidon.MathHelpers @@ -200,93 +704,96 @@ module Poseidon.Janno -- https://github.com/poseidon-framework/poseidon2-schema/blob/master/janno_columns.tsv -- for more details data JannoRow -JannoRow :: String -> JannoSex -> JannoStringList -> Maybe JannoStringList -> Maybe JannoStringList -> Maybe JannoRelationDegreeList -> Maybe JannoStringList -> Maybe String -> Maybe String -> Maybe String -> Maybe JannoCountry -> Maybe String -> Maybe String -> Maybe Latitude -> Maybe Longitude -> Maybe JannoDateType -> Maybe JannoStringList -> Maybe JannoIntList -> Maybe JannoIntList -> Maybe BCADAge -> Maybe BCADAge -> Maybe BCADAge -> Maybe String -> Maybe String -> Maybe String -> Maybe JannoStringList -> Maybe Int -> Maybe JannoStringList -> Maybe (JannoList JannoCaptureType) -> Maybe JannoUDG -> Maybe JannoLibraryBuilt -> Maybe JannoGenotypePloidy -> Maybe JURI -> Maybe Percent -> Maybe Int -> Maybe Double -> Maybe Percent -> Maybe JannoStringList -> Maybe JannoStringList -> Maybe JannoStringList -> Maybe String -> Maybe (JannoList AccessionID) -> Maybe String -> Maybe JannoStringList -> Maybe String -> Maybe JannoStringList -> CsvNamedRecord -> JannoRow +JannoRow :: String -> GeneticSex -> ListColumn GroupName -> Maybe (ListColumn JannoAlternativeID) -> Maybe (ListColumn JannoRelationTo) -> Maybe (ListColumn JannoRelationDegree) -> Maybe (ListColumn JannoRelationType) -> Maybe JannoRelationNote -> Maybe JannoCollectionID -> Maybe JannoCountry -> Maybe JannoCountryISO -> Maybe JannoLocation -> Maybe JannoSite -> Maybe JannoLatitude -> Maybe JannoLongitude -> Maybe JannoDateType -> Maybe (ListColumn JannoDateC14Labnr) -> Maybe (ListColumn JannoDateC14UncalBP) -> Maybe (ListColumn JannoDateC14UncalBPErr) -> Maybe JannoDateBCADStart -> Maybe JannoDateBCADMedian -> Maybe JannoDateBCADStop -> Maybe JannoDateNote -> Maybe JannoMTHaplogroup -> Maybe JannoYHaplogroup -> Maybe (ListColumn JannoSourceTissue) -> Maybe JannoNrLibraries -> Maybe (ListColumn JannoLibraryName) -> Maybe (ListColumn JannoCaptureType) -> Maybe JannoUDG -> Maybe JannoLibraryBuilt -> Maybe JannoGenotypePloidy -> Maybe JannoDataPreparationPipelineURL -> Maybe JannoEndogenous -> Maybe JannoNrSNPs -> Maybe JannoCoverageOnTargets -> Maybe JannoDamage -> Maybe (ListColumn JannoContamination) -> Maybe (ListColumn JannoContaminationErr) -> Maybe (ListColumn JannoContaminationMeas) -> Maybe JannoContaminationNote -> Maybe (ListColumn JannoGeneticSourceAccessionID) -> Maybe JannoPrimaryContact -> Maybe (ListColumn JannoPublication) -> Maybe JannoComment -> Maybe (ListColumn JannoKeyword) -> CsvNamedRecord -> JannoRow [jPoseidonID] :: JannoRow -> String -[jGeneticSex] :: JannoRow -> JannoSex -[jGroupName] :: JannoRow -> JannoStringList -[jAlternativeIDs] :: JannoRow -> Maybe JannoStringList -[jRelationTo] :: JannoRow -> Maybe JannoStringList -[jRelationDegree] :: JannoRow -> Maybe JannoRelationDegreeList -[jRelationType] :: JannoRow -> Maybe JannoStringList -[jRelationNote] :: JannoRow -> Maybe String -[jCollectionID] :: JannoRow -> Maybe String -[jCountry] :: JannoRow -> Maybe String -[jCountryISO] :: JannoRow -> Maybe JannoCountry -[jLocation] :: JannoRow -> Maybe String -[jSite] :: JannoRow -> Maybe String -[jLatitude] :: JannoRow -> Maybe Latitude -[jLongitude] :: JannoRow -> Maybe Longitude +[jGeneticSex] :: JannoRow -> GeneticSex +[jGroupName] :: JannoRow -> ListColumn GroupName +[jAlternativeIDs] :: JannoRow -> Maybe (ListColumn JannoAlternativeID) +[jRelationTo] :: JannoRow -> Maybe (ListColumn JannoRelationTo) +[jRelationDegree] :: JannoRow -> Maybe (ListColumn JannoRelationDegree) +[jRelationType] :: JannoRow -> Maybe (ListColumn JannoRelationType) +[jRelationNote] :: JannoRow -> Maybe JannoRelationNote +[jCollectionID] :: JannoRow -> Maybe JannoCollectionID +[jCountry] :: JannoRow -> Maybe JannoCountry +[jCountryISO] :: JannoRow -> Maybe JannoCountryISO +[jLocation] :: JannoRow -> Maybe JannoLocation +[jSite] :: JannoRow -> Maybe JannoSite +[jLatitude] :: JannoRow -> Maybe JannoLatitude +[jLongitude] :: JannoRow -> Maybe JannoLongitude [jDateType] :: JannoRow -> Maybe JannoDateType -[jDateC14Labnr] :: JannoRow -> Maybe JannoStringList -[jDateC14UncalBP] :: JannoRow -> Maybe JannoIntList -[jDateC14UncalBPErr] :: JannoRow -> Maybe JannoIntList -[jDateBCADStart] :: JannoRow -> Maybe BCADAge -[jDateBCADMedian] :: JannoRow -> Maybe BCADAge -[jDateBCADStop] :: JannoRow -> Maybe BCADAge -[jDateNote] :: JannoRow -> Maybe String -[jMTHaplogroup] :: JannoRow -> Maybe String -[jYHaplogroup] :: JannoRow -> Maybe String -[jSourceTissue] :: JannoRow -> Maybe JannoStringList -[jNrLibraries] :: JannoRow -> Maybe Int -[jLibraryNames] :: JannoRow -> Maybe JannoStringList -[jCaptureType] :: JannoRow -> Maybe (JannoList JannoCaptureType) +[jDateC14Labnr] :: JannoRow -> Maybe (ListColumn JannoDateC14Labnr) +[jDateC14UncalBP] :: JannoRow -> Maybe (ListColumn JannoDateC14UncalBP) +[jDateC14UncalBPErr] :: JannoRow -> Maybe (ListColumn JannoDateC14UncalBPErr) +[jDateBCADStart] :: JannoRow -> Maybe JannoDateBCADStart +[jDateBCADMedian] :: JannoRow -> Maybe JannoDateBCADMedian +[jDateBCADStop] :: JannoRow -> Maybe JannoDateBCADStop +[jDateNote] :: JannoRow -> Maybe JannoDateNote +[jMTHaplogroup] :: JannoRow -> Maybe JannoMTHaplogroup +[jYHaplogroup] :: JannoRow -> Maybe JannoYHaplogroup +[jSourceTissue] :: JannoRow -> Maybe (ListColumn JannoSourceTissue) +[jNrLibraries] :: JannoRow -> Maybe JannoNrLibraries +[jLibraryNames] :: JannoRow -> Maybe (ListColumn JannoLibraryName) +[jCaptureType] :: JannoRow -> Maybe (ListColumn JannoCaptureType) [jUDG] :: JannoRow -> Maybe JannoUDG [jLibraryBuilt] :: JannoRow -> Maybe JannoLibraryBuilt [jGenotypePloidy] :: JannoRow -> Maybe JannoGenotypePloidy -[jDataPreparationPipelineURL] :: JannoRow -> Maybe JURI -[jEndogenous] :: JannoRow -> Maybe Percent -[jNrSNPs] :: JannoRow -> Maybe Int -[jCoverageOnTargets] :: JannoRow -> Maybe Double -[jDamage] :: JannoRow -> Maybe Percent -[jContamination] :: JannoRow -> Maybe JannoStringList -[jContaminationErr] :: JannoRow -> Maybe JannoStringList -[jContaminationMeas] :: JannoRow -> Maybe JannoStringList -[jContaminationNote] :: JannoRow -> Maybe String -[jGeneticSourceAccessionIDs] :: JannoRow -> Maybe (JannoList AccessionID) -[jPrimaryContact] :: JannoRow -> Maybe String -[jPublication] :: JannoRow -> Maybe JannoStringList -[jComments] :: JannoRow -> Maybe String -[jKeywords] :: JannoRow -> Maybe JannoStringList +[jDataPreparationPipelineURL] :: JannoRow -> Maybe JannoDataPreparationPipelineURL +[jEndogenous] :: JannoRow -> Maybe JannoEndogenous +[jNrSNPs] :: JannoRow -> Maybe JannoNrSNPs +[jCoverageOnTargets] :: JannoRow -> Maybe JannoCoverageOnTargets +[jDamage] :: JannoRow -> Maybe JannoDamage +[jContamination] :: JannoRow -> Maybe (ListColumn JannoContamination) +[jContaminationErr] :: JannoRow -> Maybe (ListColumn JannoContaminationErr) +[jContaminationMeas] :: JannoRow -> Maybe (ListColumn JannoContaminationMeas) +[jContaminationNote] :: JannoRow -> Maybe JannoContaminationNote +[jGeneticSourceAccessionIDs] :: JannoRow -> Maybe (ListColumn JannoGeneticSourceAccessionID) +[jPrimaryContact] :: JannoRow -> Maybe JannoPrimaryContact +[jPublication] :: JannoRow -> Maybe (ListColumn JannoPublication) +[jComments] :: JannoRow -> Maybe JannoComment +[jKeywords] :: JannoRow -> Maybe (ListColumn JannoKeyword) [jAdditionalColumns] :: JannoRow -> CsvNamedRecord --- | A datatype for genetic sex -newtype JannoSex -JannoSex :: Sex -> JannoSex -[sfSex] :: JannoSex -> Sex +-- | A datatype for the Genetic_Sex .janno column +newtype GeneticSex +GeneticSex :: Sex -> GeneticSex +[sfSex] :: GeneticSex -> Sex + +-- | A datatype for the Group_Name .janno column +newtype GroupName +GroupName :: Text -> GroupName -- | A general datatype for janno list columns -newtype JannoList a -JannoList :: [a] -> JannoList a -[getJannoList] :: JannoList a -> [a] +newtype ListColumn a +ListColumn :: [a] -> ListColumn a +[getListColumn] :: ListColumn a -> [a] data () => Sex Male :: Sex Female :: Sex Unknown :: Sex --- | A datatype for BC-AD ages -newtype BCADAge -BCADAge :: Int -> BCADAge - -- | A datatype for countries in ISO-alpha2 code format -newtype JannoCountry -JannoCountry :: Country -> JannoCountry -makeJannoCountryUnsafe :: String -> JannoCountry +newtype JannoCountryISO +JannoCountryISO :: Country -> JannoCountryISO --- | A datatype for Latitudes -newtype Latitude -Latitude :: Double -> Latitude +-- | A datatype for the Latitude .janno column +newtype JannoLatitude +JannoLatitude :: Double -> JannoLatitude --- | A datatype for Longitudes -newtype Longitude -Longitude :: Double -> Longitude +-- | A datatype for the Longitude .janno column +newtype JannoLongitude +JannoLongitude :: Double -> JannoLongitude --- | A datatype to represent Date_Type in a janno file +-- | A datatype for the Date_Type .janno column data JannoDateType C14 :: JannoDateType Contextual :: JannoDateType Modern :: JannoDateType --- | A datatype to represent Capture_Type in a janno file +-- | A datatype for the Date_BC_AD_Median .janno column +newtype JannoDateBCADMedian +JannoDateBCADMedian :: Int -> JannoDateBCADMedian + +-- | A datatype for the Capture_Type .janno column data JannoCaptureType Shotgun :: JannoCaptureType A1240K :: JannoCaptureType @@ -297,54 +804,34 @@ TwistAncientDNA :: JannoCaptureType OtherCapture :: JannoCaptureType ReferenceGenome :: JannoCaptureType --- | A datatype to represent Genotype_Ploidy in a janno file +-- | A datatype for the Genotype_Ploidy .janno column data JannoGenotypePloidy Diploid :: JannoGenotypePloidy Haploid :: JannoGenotypePloidy --- | A datatype for Percent values -newtype Percent -Percent :: Double -> Percent - --- | A datatype to represent UDG in a janno file +-- | A datatype for the UDG .janno column data JannoUDG Minus :: JannoUDG Half :: JannoUDG Plus :: JannoUDG Mixed :: JannoUDG --- | A datatype to represent URIs in a janno file -newtype JURI -JURI :: String -> JURI -data RelationDegree -Identical :: RelationDegree -First :: RelationDegree -Second :: RelationDegree -ThirdToFifth :: RelationDegree -SixthToTenth :: RelationDegree -Unrelated :: RelationDegree -OtherDegree :: RelationDegree - --- | A datatype to represent Library_Built in a janno file +-- | A datatype for the Relation_Degree .janno column +data JannoRelationDegree +Identical :: JannoRelationDegree +First :: JannoRelationDegree +Second :: JannoRelationDegree +ThirdToFifth :: JannoRelationDegree +SixthToTenth :: JannoRelationDegree +Unrelated :: JannoRelationDegree +OtherDegree :: JannoRelationDegree + +-- | A datatype for the Library_Built .janno column data JannoLibraryBuilt DS :: JannoLibraryBuilt SS :: JannoLibraryBuilt MixedSSDS :: JannoLibraryBuilt Other :: JannoLibraryBuilt - --- | A datatype to represent AccessionIDs in a janno file -data AccessionID -INSDCProject :: String -> AccessionID -INSDCStudy :: String -> AccessionID -INSDCBioSample :: String -> AccessionID -INSDCSample :: String -> AccessionID -INSDCExperiment :: String -> AccessionID -INSDCRun :: String -> AccessionID -INSDCAnalysis :: String -> AccessionID -OtherID :: String -> AccessionID -makeAccessionID :: MonadFail m => String -> m AccessionID -makeLatitude :: MonadFail m => Double -> m Latitude -makeLongitude :: MonadFail m => Double -> m Longitude writeJannoFile :: FilePath -> JannoRows -> IO () -- | A function to load one janno file @@ -365,7 +852,7 @@ CsvNamedRecord :: NamedRecord -> CsvNamedRecord -- | A data type to represent a janno file newtype JannoRows JannoRows :: [JannoRow] -> JannoRows -type JannoStringList = JannoList String +type JannoStringList = ListColumn String filterLookup :: FromField a => NamedRecord -> ByteString -> Parser a filterLookupOptional :: FromField a => NamedRecord -> ByteString -> Parser (Maybe a) getCsvNR :: CsvNamedRecord -> NamedRecord @@ -378,64 +865,13 @@ explicitNA :: ByteString -> ByteString removeUselessSuffix :: String -> String parseCsvParseError :: Parser CsvParseError renderCsvParseError :: CsvParseError -> String -getMaybeJannoList :: Maybe (JannoList a) -> [a] +getMaybeListColumn :: Maybe (ListColumn a) -> [a] instance Generics.SOP.Universe.Generic Poseidon.Janno.JannoRow instance Generics.SOP.Universe.HasDatatypeInfo Poseidon.Janno.JannoRow -instance GHC.Classes.Eq Poseidon.Janno.JannoSex -instance GHC.Generics.Generic Poseidon.Janno.BCADAge -instance GHC.Classes.Ord Poseidon.Janno.BCADAge -instance GHC.Classes.Eq Poseidon.Janno.BCADAge -instance GHC.Enum.Bounded Poseidon.Janno.JannoDateType -instance GHC.Enum.Enum Poseidon.Janno.JannoDateType -instance GHC.Generics.Generic Poseidon.Janno.JannoDateType -instance GHC.Classes.Ord Poseidon.Janno.JannoDateType -instance GHC.Classes.Eq Poseidon.Janno.JannoDateType -instance GHC.Enum.Bounded Poseidon.Janno.JannoCaptureType -instance GHC.Enum.Enum Poseidon.Janno.JannoCaptureType -instance GHC.Generics.Generic Poseidon.Janno.JannoCaptureType -instance GHC.Classes.Ord Poseidon.Janno.JannoCaptureType -instance GHC.Classes.Eq Poseidon.Janno.JannoCaptureType -instance GHC.Enum.Bounded Poseidon.Janno.JannoGenotypePloidy -instance GHC.Enum.Enum Poseidon.Janno.JannoGenotypePloidy -instance GHC.Generics.Generic Poseidon.Janno.JannoGenotypePloidy -instance GHC.Classes.Ord Poseidon.Janno.JannoGenotypePloidy -instance GHC.Classes.Eq Poseidon.Janno.JannoGenotypePloidy -instance GHC.Enum.Bounded Poseidon.Janno.JannoUDG -instance GHC.Enum.Enum Poseidon.Janno.JannoUDG -instance GHC.Generics.Generic Poseidon.Janno.JannoUDG -instance GHC.Classes.Ord Poseidon.Janno.JannoUDG -instance GHC.Classes.Eq Poseidon.Janno.JannoUDG -instance GHC.Enum.Bounded Poseidon.Janno.JannoLibraryBuilt -instance GHC.Enum.Enum Poseidon.Janno.JannoLibraryBuilt -instance GHC.Generics.Generic Poseidon.Janno.JannoLibraryBuilt -instance GHC.Classes.Ord Poseidon.Janno.JannoLibraryBuilt -instance GHC.Classes.Eq Poseidon.Janno.JannoLibraryBuilt -instance GHC.Classes.Ord Poseidon.Janno.JannoCountry -instance GHC.Classes.Eq Poseidon.Janno.JannoCountry -instance GHC.Generics.Generic Poseidon.Janno.Latitude -instance GHC.Classes.Ord Poseidon.Janno.Latitude -instance GHC.Classes.Eq Poseidon.Janno.Latitude -instance GHC.Generics.Generic Poseidon.Janno.Longitude -instance GHC.Classes.Ord Poseidon.Janno.Longitude -instance GHC.Classes.Eq Poseidon.Janno.Longitude -instance GHC.Generics.Generic Poseidon.Janno.Percent -instance GHC.Classes.Ord Poseidon.Janno.Percent -instance GHC.Classes.Eq Poseidon.Janno.Percent -instance GHC.Generics.Generic Poseidon.Janno.JURI -instance GHC.Classes.Ord Poseidon.Janno.JURI -instance GHC.Classes.Eq Poseidon.Janno.JURI -instance GHC.Enum.Bounded Poseidon.Janno.RelationDegree -instance GHC.Enum.Enum Poseidon.Janno.RelationDegree -instance GHC.Generics.Generic Poseidon.Janno.RelationDegree -instance GHC.Classes.Ord Poseidon.Janno.RelationDegree -instance GHC.Classes.Eq Poseidon.Janno.RelationDegree -instance GHC.Generics.Generic Poseidon.Janno.AccessionID -instance GHC.Classes.Ord Poseidon.Janno.AccessionID -instance GHC.Classes.Eq Poseidon.Janno.AccessionID -instance GHC.Show.Show a => GHC.Show.Show (Poseidon.Janno.JannoList a) -instance GHC.Generics.Generic (Poseidon.Janno.JannoList a) -instance GHC.Classes.Ord a => GHC.Classes.Ord (Poseidon.Janno.JannoList a) -instance GHC.Classes.Eq a => GHC.Classes.Eq (Poseidon.Janno.JannoList a) +instance GHC.Show.Show a => GHC.Show.Show (Poseidon.Janno.ListColumn a) +instance GHC.Generics.Generic (Poseidon.Janno.ListColumn a) +instance GHC.Classes.Ord a => GHC.Classes.Ord (Poseidon.Janno.ListColumn a) +instance GHC.Classes.Eq a => GHC.Classes.Eq (Poseidon.Janno.ListColumn a) instance GHC.Generics.Generic Poseidon.Janno.CsvNamedRecord instance GHC.Classes.Eq Poseidon.Janno.CsvNamedRecord instance GHC.Show.Show Poseidon.Janno.CsvNamedRecord @@ -448,93 +884,31 @@ instance GHC.Show.Show Poseidon.Janno.JannoRows instance GHC.Show.Show Poseidon.Janno.CsvParseError instance GHC.Base.Semigroup Poseidon.Janno.JannoRows instance GHC.Base.Monoid Poseidon.Janno.JannoRows -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.JannoRows -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.JannoRows instance Data.Csv.Conversion.DefaultOrdered Poseidon.Janno.JannoRow -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.JannoRow -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.JannoRow instance Data.Csv.Conversion.FromNamedRecord Poseidon.Janno.JannoRow instance Data.Csv.Conversion.ToNamedRecord Poseidon.Janno.JannoRow -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.CsvNamedRecord -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.CsvNamedRecord -instance (Data.Csv.Conversion.ToField a, GHC.Show.Show a) => Data.Csv.Conversion.ToField (Poseidon.Janno.JannoList a) -instance Data.Csv.Conversion.FromField a => Data.Csv.Conversion.FromField (Poseidon.Janno.JannoList a) -instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Poseidon.Janno.JannoList a) -instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Poseidon.Janno.JannoList a) -instance GHC.Show.Show Poseidon.Janno.AccessionID -instance Data.Csv.Conversion.ToField Poseidon.Janno.AccessionID -instance Data.Csv.Conversion.FromField Poseidon.Janno.AccessionID -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.AccessionID -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.AccessionID -instance GHC.Show.Show Poseidon.Janno.RelationDegree -instance Data.Csv.Conversion.ToField Poseidon.Janno.RelationDegree -instance Data.Csv.Conversion.FromField Poseidon.Janno.RelationDegree -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.RelationDegree -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.RelationDegree -instance GHC.Show.Show Poseidon.Janno.JURI -instance Data.Csv.Conversion.ToField Poseidon.Janno.JURI -instance Data.Csv.Conversion.FromField Poseidon.Janno.JURI -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.JURI -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.JURI -instance GHC.Show.Show Poseidon.Janno.Percent -instance Data.Csv.Conversion.ToField Poseidon.Janno.Percent -instance Data.Csv.Conversion.FromField Poseidon.Janno.Percent -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.Percent -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.Percent -instance GHC.Show.Show Poseidon.Janno.Longitude -instance Data.Csv.Conversion.ToField Poseidon.Janno.Longitude -instance Data.Csv.Conversion.FromField Poseidon.Janno.Longitude -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.Longitude -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.Longitude -instance GHC.Show.Show Poseidon.Janno.Latitude -instance Data.Csv.Conversion.ToField Poseidon.Janno.Latitude -instance Data.Csv.Conversion.FromField Poseidon.Janno.Latitude -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.Latitude -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.Latitude -instance GHC.Show.Show Poseidon.Janno.JannoCountry -instance Data.Csv.Conversion.ToField Poseidon.Janno.JannoCountry -instance Data.Csv.Conversion.FromField Poseidon.Janno.JannoCountry -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.JannoCountry -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.JannoCountry -instance GHC.Show.Show Poseidon.Janno.JannoLibraryBuilt -instance Data.Csv.Conversion.ToField Poseidon.Janno.JannoLibraryBuilt -instance Data.Csv.Conversion.FromField Poseidon.Janno.JannoLibraryBuilt -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.JannoLibraryBuilt -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.JannoLibraryBuilt -instance GHC.Show.Show Poseidon.Janno.JannoUDG -instance Data.Csv.Conversion.ToField Poseidon.Janno.JannoUDG -instance Data.Csv.Conversion.FromField Poseidon.Janno.JannoUDG -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.JannoUDG -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.JannoUDG -instance GHC.Show.Show Poseidon.Janno.JannoGenotypePloidy -instance Data.Csv.Conversion.ToField Poseidon.Janno.JannoGenotypePloidy -instance Data.Csv.Conversion.FromField Poseidon.Janno.JannoGenotypePloidy -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.JannoGenotypePloidy -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.JannoGenotypePloidy -instance GHC.Show.Show Poseidon.Janno.JannoCaptureType -instance Data.Csv.Conversion.ToField Poseidon.Janno.JannoCaptureType -instance Data.Csv.Conversion.FromField Poseidon.Janno.JannoCaptureType -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.JannoCaptureType -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.JannoCaptureType -instance GHC.Show.Show Poseidon.Janno.JannoDateType -instance Data.Csv.Conversion.ToField Poseidon.Janno.JannoDateType -instance Data.Csv.Conversion.FromField Poseidon.Janno.JannoDateType -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.JannoDateType -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.JannoDateType -instance GHC.Show.Show Poseidon.Janno.BCADAge -instance Data.Csv.Conversion.ToField Poseidon.Janno.BCADAge -instance Data.Csv.Conversion.FromField Poseidon.Janno.BCADAge -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.BCADAge -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.BCADAge -instance GHC.Show.Show Poseidon.Janno.JannoSex -instance GHC.Classes.Ord Poseidon.Janno.JannoSex -instance Data.Csv.Conversion.ToField Poseidon.Janno.JannoSex -instance Data.Csv.Conversion.FromField Poseidon.Janno.JannoSex -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.Janno.JannoSex -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.Janno.JannoSex +instance (Data.Csv.Conversion.ToField a, GHC.Show.Show a) => Data.Csv.Conversion.ToField (Poseidon.Janno.ListColumn a) +instance Data.Csv.Conversion.FromField a => Data.Csv.Conversion.FromField (Poseidon.Janno.ListColumn a) module Poseidon.SequencingSource +-- | A datatype to represent AccessionIDs in a ssf file +data AccessionID +INSDCProject :: String -> AccessionID +INSDCStudy :: String -> AccessionID +INSDCBioSample :: String -> AccessionID +INSDCSample :: String -> AccessionID +INSDCExperiment :: String -> AccessionID +INSDCRun :: String -> AccessionID +INSDCAnalysis :: String -> AccessionID +OtherID :: String -> AccessionID +makeAccessionID :: MonadFail m => String -> m AccessionID + +-- | A datatype to represent URIs in a ssf file +newtype JURI +JURI :: String -> JURI +makeJURI :: MonadFail m => String -> m JURI + -- | A datatype to represent UDG in a ssf file data SSFUDG SSFMinus :: SSFUDG @@ -580,7 +954,7 @@ isMD5Hash :: String -> Bool -- https://github.com/poseidon-framework/poseidon2-schema/blob/master/seqSourceFile_columns.tsv -- for more details data SeqSourceRow -SeqSourceRow :: Maybe JannoStringList -> Maybe SSFUDG -> Maybe SSFLibraryBuilt -> Maybe AccessionIDSample -> Maybe AccessionIDStudy -> Maybe AccessionIDRun -> Maybe String -> Maybe String -> Maybe SimpleDate -> Maybe SimpleDate -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> Maybe (JannoList JURI) -> Maybe (JannoList JURI) -> Maybe (JannoList Integer) -> Maybe (JannoList MD5) -> Maybe Integer -> Maybe (JannoList JURI) -> CsvNamedRecord -> SeqSourceRow +SeqSourceRow :: Maybe JannoStringList -> Maybe SSFUDG -> Maybe SSFLibraryBuilt -> Maybe AccessionIDSample -> Maybe AccessionIDStudy -> Maybe AccessionIDRun -> Maybe String -> Maybe String -> Maybe SimpleDate -> Maybe SimpleDate -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> Maybe String -> Maybe (ListColumn JURI) -> Maybe (ListColumn JURI) -> Maybe (ListColumn Integer) -> Maybe (ListColumn MD5) -> Maybe Integer -> Maybe (ListColumn JURI) -> CsvNamedRecord -> SeqSourceRow [sPoseidonID] :: SeqSourceRow -> Maybe JannoStringList [sUDG] :: SeqSourceRow -> Maybe SSFUDG [sLibraryBuilt] :: SeqSourceRow -> Maybe SSFLibraryBuilt @@ -597,12 +971,12 @@ SeqSourceRow :: Maybe JannoStringList -> Maybe SSFUDG -> Maybe SSFLibraryBuilt - [sInstrumentPlatform] :: SeqSourceRow -> Maybe String [sLibraryName] :: SeqSourceRow -> Maybe String [sLibraryStrategy] :: SeqSourceRow -> Maybe String -[sFastqFTP] :: SeqSourceRow -> Maybe (JannoList JURI) -[sFastqASPERA] :: SeqSourceRow -> Maybe (JannoList JURI) -[sFastqBytes] :: SeqSourceRow -> Maybe (JannoList Integer) -[sFastqMD5] :: SeqSourceRow -> Maybe (JannoList MD5) +[sFastqFTP] :: SeqSourceRow -> Maybe (ListColumn JURI) +[sFastqASPERA] :: SeqSourceRow -> Maybe (ListColumn JURI) +[sFastqBytes] :: SeqSourceRow -> Maybe (ListColumn Integer) +[sFastqMD5] :: SeqSourceRow -> Maybe (ListColumn MD5) [sReadCount] :: SeqSourceRow -> Maybe Integer -[sSubmittedFTP] :: SeqSourceRow -> Maybe (JannoList JURI) +[sSubmittedFTP] :: SeqSourceRow -> Maybe (ListColumn JURI) [sAdditionalColumns] :: SeqSourceRow -> CsvNamedRecord seqSourceHeader :: [ByteString] seqSourceHeaderString :: [String] @@ -619,6 +993,12 @@ readSeqSourceFileRow :: FilePath -> (Int, ByteString) -> PoseidonIO (Either Pose warnSeqSourceConsistency :: FilePath -> SeqSourceRows -> PoseidonIO () checkRunsUnique :: SeqSourceRows -> Bool checkAtLeastOnePoseidonID :: SeqSourceRows -> Bool +instance GHC.Generics.Generic Poseidon.SequencingSource.AccessionID +instance GHC.Classes.Ord Poseidon.SequencingSource.AccessionID +instance GHC.Classes.Eq Poseidon.SequencingSource.AccessionID +instance GHC.Generics.Generic Poseidon.SequencingSource.JURI +instance GHC.Classes.Ord Poseidon.SequencingSource.JURI +instance GHC.Classes.Eq Poseidon.SequencingSource.JURI instance GHC.Enum.Bounded Poseidon.SequencingSource.SSFUDG instance GHC.Enum.Enum Poseidon.SequencingSource.SSFUDG instance GHC.Generics.Generic Poseidon.SequencingSource.SSFUDG @@ -649,48 +1029,36 @@ instance GHC.Classes.Eq Poseidon.SequencingSource.SeqSourceRows instance GHC.Show.Show Poseidon.SequencingSource.SeqSourceRows instance GHC.Base.Semigroup Poseidon.SequencingSource.SeqSourceRows instance GHC.Base.Monoid Poseidon.SequencingSource.SeqSourceRows -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.SequencingSource.SeqSourceRows -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.SequencingSource.SeqSourceRows instance Data.Csv.Conversion.DefaultOrdered Poseidon.SequencingSource.SeqSourceRow -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.SequencingSource.SeqSourceRow -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.SequencingSource.SeqSourceRow instance Data.Csv.Conversion.FromNamedRecord Poseidon.SequencingSource.SeqSourceRow instance Data.Csv.Conversion.ToNamedRecord Poseidon.SequencingSource.SeqSourceRow instance GHC.Show.Show Poseidon.SequencingSource.MD5 instance Data.Csv.Conversion.ToField Poseidon.SequencingSource.MD5 instance Data.Csv.Conversion.FromField Poseidon.SequencingSource.MD5 -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.SequencingSource.MD5 -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.SequencingSource.MD5 instance GHC.Show.Show Poseidon.SequencingSource.SimpleDate instance Data.Csv.Conversion.ToField Poseidon.SequencingSource.SimpleDate instance Data.Csv.Conversion.FromField Poseidon.SequencingSource.SimpleDate -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.SequencingSource.SimpleDate -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.SequencingSource.SimpleDate instance GHC.Show.Show Poseidon.SequencingSource.AccessionIDStudy instance Data.Csv.Conversion.ToField Poseidon.SequencingSource.AccessionIDStudy instance Data.Csv.Conversion.FromField Poseidon.SequencingSource.AccessionIDStudy -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.SequencingSource.AccessionIDStudy -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.SequencingSource.AccessionIDStudy instance GHC.Show.Show Poseidon.SequencingSource.AccessionIDSample instance Data.Csv.Conversion.ToField Poseidon.SequencingSource.AccessionIDSample instance Data.Csv.Conversion.FromField Poseidon.SequencingSource.AccessionIDSample -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.SequencingSource.AccessionIDSample -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.SequencingSource.AccessionIDSample instance GHC.Show.Show Poseidon.SequencingSource.AccessionIDRun instance Data.Csv.Conversion.ToField Poseidon.SequencingSource.AccessionIDRun instance Data.Csv.Conversion.FromField Poseidon.SequencingSource.AccessionIDRun -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.SequencingSource.AccessionIDRun -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.SequencingSource.AccessionIDRun instance GHC.Show.Show Poseidon.SequencingSource.SSFLibraryBuilt instance Data.Csv.Conversion.ToField Poseidon.SequencingSource.SSFLibraryBuilt instance Data.Csv.Conversion.FromField Poseidon.SequencingSource.SSFLibraryBuilt -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.SequencingSource.SSFLibraryBuilt -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.SequencingSource.SSFLibraryBuilt instance GHC.Show.Show Poseidon.SequencingSource.SSFUDG instance Data.Csv.Conversion.ToField Poseidon.SequencingSource.SSFUDG instance Data.Csv.Conversion.FromField Poseidon.SequencingSource.SSFUDG -instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.SequencingSource.SSFUDG -instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.SequencingSource.SSFUDG +instance GHC.Show.Show Poseidon.SequencingSource.JURI +instance Data.Csv.Conversion.ToField Poseidon.SequencingSource.JURI +instance Data.Csv.Conversion.FromField Poseidon.SequencingSource.JURI +instance GHC.Show.Show Poseidon.SequencingSource.AccessionID +instance Data.Csv.Conversion.ToField Poseidon.SequencingSource.AccessionID +instance Data.Csv.Conversion.FromField Poseidon.SequencingSource.AccessionID module Poseidon.GenotypeData data GenoDataSource @@ -950,7 +1318,6 @@ data ApiReturnData ApiReturnPackageInfo :: [PackageInfo] -> ApiReturnData ApiReturnGroupInfo :: [GroupInfo] -> ApiReturnData ApiReturnExtIndividualInfo :: [ExtendedIndividualInfo] -> ApiReturnData -ApiReturnJanno :: [(String, JannoRows)] -> ApiReturnData processApiResponse :: String -> Bool -> PoseidonIO ApiReturnData data ArchiveEndpoint ArchiveEndpoint :: String -> Maybe String -> ArchiveEndpoint @@ -989,7 +1356,6 @@ instance GHC.Classes.Ord Poseidon.ServerClient.PackageInfo instance GHC.Classes.Eq Poseidon.ServerClient.PackageInfo instance GHC.Classes.Eq Poseidon.ServerClient.GroupInfo instance GHC.Classes.Eq Poseidon.ServerClient.ExtendedIndividualInfo -instance GHC.Generics.Generic Poseidon.ServerClient.ApiReturnData instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.ServerClient.ServerApiReturnType instance Data.Aeson.Types.FromJSON.FromJSON Poseidon.ServerClient.ServerApiReturnType instance Data.Aeson.Types.ToJSON.ToJSON Poseidon.ServerClient.ApiReturnData @@ -1272,8 +1638,8 @@ class PresenceCountable a countPresence :: PresenceCountable a => a -> Int instance Poseidon.CLI.Survey.PresenceCountable (GHC.Maybe.Maybe a) instance Poseidon.CLI.Survey.PresenceCountable GHC.Base.String -instance Poseidon.CLI.Survey.PresenceCountable Poseidon.Janno.JannoSex -instance Poseidon.CLI.Survey.PresenceCountable Poseidon.Janno.JannoStringList +instance Poseidon.CLI.Survey.PresenceCountable Poseidon.ColumnTypes.GeneticSex +instance Poseidon.CLI.Survey.PresenceCountable (Poseidon.Janno.ListColumn a) instance Poseidon.CLI.Survey.PresenceCountable Poseidon.Janno.CsvNamedRecord module Poseidon.CLI.Summarise diff --git a/src/Paths_poseidon_hs.html b/src/Paths_poseidon_hs.html index 11c0dd66..f33faa14 100644 --- a/src/Paths_poseidon_hs.html +++ b/src/Paths_poseidon_hs.html @@ -19,7 +19,7 @@ #if defined(VERSION_base) #if MIN_VERSION_base(4,0,0) -catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a +catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a #else catchIO :: IO a -> (Exception.Exception -> IO a) -> IO a #endif @@ -38,23 +38,23 @@ Version [Int 1,Int 5,Int -5,Int +6,Int 0] [] getDataFileName :: FilePath -> IO FilePath getDataFileName :: String -> IO String -getDataFileName String -name = do - String -dir <- IO String +getDataFileName String +name = do + String +dir <- IO String getDataDir String -> IO String forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return (String -dir String -> String -> String +dir String -> String -> String `joinFileName` String -name) +name) getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath @@ -66,16 +66,16 @@ "/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/686b1e25e0c95c0d6fc2bc23e7ccdf95574722a28041fba080bcf7cf5a48986e/9.4.7/bin" libdir :: String libdir = String -"/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/686b1e25e0c95c0d6fc2bc23e7ccdf95574722a28041fba080bcf7cf5a48986e/9.4.7/lib/x86_64-linux-ghc-9.4.7/poseidon-hs-1.5.5.0-64IxIR1JUiELWCZhD8ICmR" +"/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/686b1e25e0c95c0d6fc2bc23e7ccdf95574722a28041fba080bcf7cf5a48986e/9.4.7/lib/x86_64-linux-ghc-9.4.7/poseidon-hs-1.5.6.0-4VHbp4LzdwY6pOjrQ8KF7r" dynlibdir :: String dynlibdir = String "/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/686b1e25e0c95c0d6fc2bc23e7ccdf95574722a28041fba080bcf7cf5a48986e/9.4.7/lib/x86_64-linux-ghc-9.4.7" datadir :: String datadir = String -"/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/686b1e25e0c95c0d6fc2bc23e7ccdf95574722a28041fba080bcf7cf5a48986e/9.4.7/share/x86_64-linux-ghc-9.4.7/poseidon-hs-1.5.5.0" +"/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/686b1e25e0c95c0d6fc2bc23e7ccdf95574722a28041fba080bcf7cf5a48986e/9.4.7/share/x86_64-linux-ghc-9.4.7/poseidon-hs-1.5.6.0" libexecdir :: String libexecdir = String -"/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/686b1e25e0c95c0d6fc2bc23e7ccdf95574722a28041fba080bcf7cf5a48986e/9.4.7/libexec/x86_64-linux-ghc-9.4.7/poseidon-hs-1.5.5.0" +"/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/686b1e25e0c95c0d6fc2bc23e7ccdf95574722a28041fba080bcf7cf5a48986e/9.4.7/libexec/x86_64-linux-ghc-9.4.7/poseidon-hs-1.5.6.0" sysconfdir :: String sysconfdir = String "/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/686b1e25e0c95c0d6fc2bc23e7ccdf95574722a28041fba080bcf7cf5a48986e/9.4.7/etc" @@ -153,38 +153,38 @@ joinFileName :: String -> String -> FilePath joinFileName :: String -> String -> String joinFileName String -"" String -fname = String -fname +"" String +fname = String +fname joinFileName String -"." String -fname = String -fname -joinFileName String -dir String +"." String +fname = String +fname +joinFileName String +dir String "" = String -dir -joinFileName String -dir String -fname +dir +joinFileName String +dir String +fname | Char -> Bool isPathSeparator (String -> Char forall a. HasCallStack => [a] -> a List.last String -dir) = String -dir String -> String -> String +dir) = String +dir String -> String -> String forall a. [a] -> [a] -> [a] ++ String -fname +fname | Bool otherwise = String -dir String -> String -> String +dir String -> String -> String forall a. [a] -> [a] -> [a] ++ Char pathSeparator Char -> String -> String forall a. a -> [a] -> [a] : String -fname +fname pathSeparator :: Char pathSeparator :: Char @@ -193,9 +193,9 @@ isPathSeparator :: Char -> Bool isPathSeparator :: Char -> Bool -isPathSeparator Char -c = Char -c Char -> Char -> Bool +isPathSeparator Char +c = Char +c Char -> Char -> Bool forall a. Eq a => a -> a -> Bool == Char '/' diff --git a/src/Poseidon.BibFile.html b/src/Poseidon.BibFile.html index 14e14580..525fb023 100644 --- a/src/Poseidon.BibFile.html +++ b/src/Poseidon.BibFile.html @@ -25,7 +25,7 @@ , BibEntry -> [(String, String)] bibEntryFields :: [(String, String)] } - deriving (Int -> BibEntry -> ShowS + deriving (Int -> BibEntry -> ShowS [BibEntry] -> ShowS BibEntry -> String (Int -> BibEntry -> ShowS) @@ -40,38 +40,38 @@ showList :: [BibEntry] -> ShowS Show) -instance Eq BibEntry where - (BibEntry String -t1 String -i1 [(String, String)] -_) == :: BibEntry -> BibEntry -> Bool -== (BibEntry String -t2 String -i2 [(String, String)] +instance Eq BibEntry where + (BibEntry String +t1 String +i1 [(String, String)] +_) == :: BibEntry -> BibEntry -> Bool +== (BibEntry String +t2 String +i2 [(String, String)] _) = (String -t1 String -> String -> Bool +t1 String -> String -> Bool forall a. Eq a => a -> a -> Bool == String -t2) Bool -> Bool -> Bool +t2) Bool -> Bool -> Bool && (String -i1 String -> String -> Bool +i1 String -> String -> Bool forall a. Eq a => a -> a -> Bool == String -i2) +i2) -instance Ord BibEntry where +instance Ord BibEntry where (BibEntry String -_ String -i1 [(String, String)] -_) compare :: BibEntry -> BibEntry -> Ordering -`compare` (BibEntry String -_ String -i2 [(String, String)] +_ String +i1 [(String, String)] +_) compare :: BibEntry -> BibEntry -> Ordering +`compare` (BibEntry String +_ String +i2 [(String, String)] _) = String -i1 String -> String -> Ordering +i1 String -> String -> Ordering forall a. Ord a => a -> a -> Ordering `compare` String -i2 +i2 type BibTeX = [BibEntry] @@ -118,35 +118,35 @@ readBibTeXFile :: FilePath -> IO BibTeX readBibTeXFile :: String -> IO [BibEntry] -readBibTeXFile String -bibPath = do - Either ParseError [BibEntry] -res <- Parser [BibEntry] -> String -> IO (Either ParseError [BibEntry]) +readBibTeXFile String +bibPath = do + Either ParseError [BibEntry] +res <- Parser [BibEntry] -> String -> IO (Either ParseError [BibEntry]) forall a. Parser a -> String -> IO (Either ParseError a) parseFromFile Parser [BibEntry] bibFileParser String -bibPath +bibPath case Either ParseError [BibEntry] -res of - Left ParseError -err -> PoseidonException -> IO [BibEntry] +res of + Left ParseError +err -> PoseidonException -> IO [BibEntry] forall e a. Exception e => e -> IO a throwIO (PoseidonException -> IO [BibEntry]) -> PoseidonException -> IO [BibEntry] forall a b. (a -> b) -> a -> b $ String -> String -> PoseidonException PoseidonBibTeXException String -bibPath (String -> PoseidonException) -> String -> PoseidonException +bibPath (String -> PoseidonException) -> String -> PoseidonException forall a b. (a -> b) -> a -> b $ ParseError -> String showParsecErr ParseError -err - Right [BibEntry] -res_ -> [BibEntry] -> IO [BibEntry] +err + Right [BibEntry] +res_ -> [BibEntry] -> IO [BibEntry] forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return [BibEntry] -res_ +res_ {- Much of the code below was shamelessly copied from the existing Haskell package "bibtex" @@ -156,55 +156,55 @@ writeBibTeXFile :: FilePath -> BibTeX -> IO () writeBibTeXFile :: String -> [BibEntry] -> IO () -writeBibTeXFile String -path [BibEntry] -entries = String -> IOMode -> (Handle -> IO ()) -> IO () +writeBibTeXFile String +path [BibEntry] +entries = String -> IOMode -> (Handle -> IO ()) -> IO () forall r. String -> IOMode -> (Handle -> IO r) -> IO r withFile String -path IOMode +path IOMode WriteMode ((Handle -> IO ()) -> IO ()) -> (Handle -> IO ()) -> IO () forall a b. (a -> b) -> a -> b -$ \Handle -outH -> do +$ \Handle +outH -> do [BibEntry] -> (BibEntry -> IO ()) -> IO () forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [BibEntry] -entries ((BibEntry -> IO ()) -> IO ()) -> (BibEntry -> IO ()) -> IO () +entries ((BibEntry -> IO ()) -> IO ()) -> (BibEntry -> IO ()) -> IO () forall a b. (a -> b) -> a -> b -$ \BibEntry -bibEntry -> do - let entryString :: String -entryString = BibEntry -> String -writeEntry BibEntry -bibEntry +$ \BibEntry +bibEntry -> do + let entryString :: String +entryString = BibEntry -> String +writeEntry BibEntry +bibEntry Handle -> String -> IO () hPutStrLn Handle -outH String -entryString +outH String +entryString where - writeEntry :: BibEntry -> String - writeEntry :: BibEntry -> String -writeEntry (BibEntry String -entryType String -bibId [(String, String)] -items) = - let formatItem :: (String, String) -> String -formatItem (String -name, String -value_) = + writeEntry :: BibEntry -> String + writeEntry :: BibEntry -> String +writeEntry (BibEntry String +entryType String +bibId [(String, String)] +items) = + let formatItem :: (String, String) -> String +formatItem (String +name, String +value_) = String " " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -name String -> ShowS +name String -> ShowS forall a. [a] -> [a] -> [a] ++ String " = {" String -> ShowS forall a. [a] -> [a] -> [a] ++ String -value_ String -> ShowS +value_ String -> ShowS forall a. [a] -> [a] -> [a] ++ String "},\n" @@ -212,13 +212,13 @@ "@" String -> ShowS forall a. [a] -> [a] -> [a] ++ String -entryType String -> ShowS +entryType String -> ShowS forall a. [a] -> [a] -> [a] ++ String "{" String -> ShowS forall a. [a] -> [a] -> [a] ++ String -bibId String -> ShowS +bibId String -> ShowS forall a. [a] -> [a] -> [a] ++ String ",\n" String -> ShowS @@ -227,8 +227,8 @@ ((String, String) -> String) -> [(String, String)] -> String forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (String, String) -> String -formatItem [(String, String)] -items String -> ShowS +formatItem [(String, String)] +items String -> ShowS forall a. [a] -> [a] -> [a] ++ String "}\n" @@ -267,8 +267,8 @@ bibEntryParser :: Parser BibEntry bibEntryParser :: ParsecT String () Identity BibEntry bibEntryParser = - do String -entryType <- Char -> ParsecT String () Identity Char + do String +entryType <- Char -> ParsecT String () Identity Char forall s (m :: * -> *) u. Stream s m Char => Char -> ParsecT s u m Char @@ -299,7 +299,7 @@ (a1 -> a2 -> r) -> m a1 -> m a2 -> m r liftM2 (String -> String -> [(String, String)] -> BibEntry BibEntry String -entryType) +entryType) (Parser String -> Parser String forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m a try Parser String @@ -323,7 +323,7 @@ forall st. CharParser st String comma) -identifier :: CharParser st String +identifier :: CharParser st String identifier :: forall st. CharParser st String identifier = GenTokenParser String st Identity -> ParsecT String st Identity String @@ -333,7 +333,7 @@ forall st. TokenParser st lexer -lexer :: T.TokenParser st +lexer :: T.TokenParser st lexer :: forall st. TokenParser st lexer = GenLanguageDef String st Identity @@ -362,7 +362,7 @@ alphaNum } -braces :: CharParser st a -> CharParser st a +braces :: CharParser st a -> CharParser st a braces :: forall st a. CharParser st a -> CharParser st a braces = GenTokenParser String st Identity -> forall a. @@ -416,7 +416,7 @@ oneOf String "&;:-_.?+/")) -lexeme :: CharParser st a -> CharParser st a +lexeme :: CharParser st a -> CharParser st a lexeme :: forall st a. CharParser st a -> CharParser st a lexeme = GenTokenParser String st Identity -> forall a. @@ -451,7 +451,7 @@ >> Parser String value) -equals :: CharParser st String +equals :: CharParser st String equals :: forall st. CharParser st String equals = GenTokenParser String st Identity -> String -> ParsecT String st Identity String @@ -523,8 +523,8 @@ texSequence :: Char -> Parser String texSequence :: Char -> Parser String -texSequence Char -closeChar = +texSequence Char +closeChar = [String] -> String forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat ([String] -> String) @@ -534,12 +534,12 @@ forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m [a] many (Char -> Parser String texBlock Char -closeChar) +closeChar) texBlock :: Char -> Parser String texBlock :: Char -> Parser String -texBlock Char -closeChar = +texBlock Char +closeChar = (Char -> String -> Char -> String) -> ParsecT String () Identity Char -> Parser String @@ -548,17 +548,17 @@ forall (m :: * -> *) a1 a2 a3 r. Monad m => (a1 -> a2 -> a3 -> r) -> m a1 -> m a2 -> m a3 -> m r -liftM3 (\Char -open String -body Char -close -> Char -open Char -> ShowS +liftM3 (\Char +open String +body Char +close -> Char +open Char -> ShowS forall a. a -> [a] -> [a] : String -body String -> ShowS +body String -> ShowS forall a. [a] -> [a] -> [a] ++ [Char -close]) +close]) (Char -> ParsecT String () Identity Char forall s (m :: * -> *) u. Stream s m Char => @@ -616,10 +616,10 @@ Stream s m Char => String -> ParsecT s u m Char noneOf [Char -closeChar]) +closeChar]) -comma :: CharParser st String +comma :: CharParser st String comma :: forall st. CharParser st String comma = GenTokenParser String st Identity -> ParsecT String st Identity String diff --git a/src/Poseidon.CLI.Chronicle.html b/src/Poseidon.CLI.Chronicle.html index 647c1772..d492a692 100644 --- a/src/Poseidon.CLI.Chronicle.html +++ b/src/Poseidon.CLI.Chronicle.html @@ -37,48 +37,48 @@ runChronicle :: ChronicleOptions -> PoseidonIO () runChronicle :: ChronicleOptions -> PoseidonIO () -runChronicle (ChronicleOptions [FilePath] -baseDirs ChronOperation -operation) = do - [PoseidonPackage] -allPackages <- PackageReadOptions -> [FilePath] -> PoseidonIO [PoseidonPackage] +runChronicle (ChronicleOptions [FilePath] +baseDirs ChronOperation +operation) = do + [PoseidonPackage] +allPackages <- PackageReadOptions -> [FilePath] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions pacReadOpts [FilePath] -baseDirs +baseDirs case ChronOperation -operation of - CreateChron FilePath -outPath -> do - PoseidonPackageChronicle -newChronicle <- FilePath +operation of + CreateChron FilePath +outPath -> do + PoseidonPackageChronicle +newChronicle <- FilePath -> [PoseidonPackage] -> PoseidonIO PoseidonPackageChronicle makeChronicle FilePath -outPath [PoseidonPackage] -allPackages +outPath [PoseidonPackage] +allPackages FilePath -> PoseidonPackageChronicle -> PoseidonIO () writeChronicle FilePath -outPath PoseidonPackageChronicle -newChronicle - UpdateChron FilePath -inPath -> do - PoseidonPackageChronicle -newChronicle <- FilePath +outPath PoseidonPackageChronicle +newChronicle + UpdateChron FilePath +inPath -> do + PoseidonPackageChronicle +newChronicle <- FilePath -> [PoseidonPackage] -> PoseidonIO PoseidonPackageChronicle makeChronicle FilePath -inPath [PoseidonPackage] -allPackages - PoseidonPackageChronicle -oldChronicle <- FilePath -> PoseidonIO PoseidonPackageChronicle +inPath [PoseidonPackage] +allPackages + PoseidonPackageChronicle +oldChronicle <- FilePath -> PoseidonIO PoseidonPackageChronicle readChronicle FilePath -inPath - let updatedChronicle :: PoseidonPackageChronicle -updatedChronicle = PoseidonPackageChronicle +inPath + let updatedChronicle :: PoseidonPackageChronicle +updatedChronicle = PoseidonPackageChronicle -> PoseidonPackageChronicle -> PoseidonPackageChronicle updateChronicle PoseidonPackageChronicle -oldChronicle PoseidonPackageChronicle -newChronicle +oldChronicle PoseidonPackageChronicle +newChronicle FilePath -> PoseidonPackageChronicle -> PoseidonIO () writeChronicle FilePath -inPath PoseidonPackageChronicle -updatedChronicle +inPath PoseidonPackageChronicle +updatedChronicle \ No newline at end of file diff --git a/src/Poseidon.CLI.Fetch.html b/src/Poseidon.CLI.Fetch.html index b1d413ec..6ae886a5 100644 --- a/src/Poseidon.CLI.Fetch.html +++ b/src/Poseidon.CLI.Fetch.html @@ -79,21 +79,21 @@ -- | The main function running the Fetch command runFetch :: FetchOptions -> PoseidonIO () runFetch :: FetchOptions -> PoseidonIO () -runFetch (FetchOptions [[Char]] -baseDirs [EntityInput PoseidonEntity] -entityInputs archiveE :: ArchiveEndpoint -archiveE@(ArchiveEndpoint [Char] -remoteURL Maybe [Char] -archive)) = do +runFetch (FetchOptions [[Char]] +baseDirs [EntityInput PoseidonEntity] +entityInputs archiveE :: ArchiveEndpoint +archiveE@(ArchiveEndpoint [Char] +remoteURL Maybe [Char] +archive)) = do -- create download directory + temporary storage for downloaded .zip archives - let downloadDir :: [Char] -downloadDir = [[Char]] -> [Char] + let downloadDir :: [Char] +downloadDir = [[Char]] -> [Char] forall a. HasCallStack => [a] -> a head [[Char]] -baseDirs - tempDir :: [Char] -tempDir = [Char] -downloadDir [Char] -> [Char] -> [Char] +baseDirs + tempDir :: [Char] +tempDir = [Char] +downloadDir [Char] -> [Char] -> [Char] </> [Char] ".trident_download_folder" [Char] -> PoseidonIO () @@ -103,7 +103,7 @@ "Download directory (will be created if missing): " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -downloadDir +downloadDir IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -112,15 +112,15 @@ $ Bool -> [Char] -> IO () createDirectoryIfMissing Bool True [Char] -downloadDir +downloadDir -- compile entities - [PoseidonEntity] -entities <- [EntityInput PoseidonEntity] -> ReaderT Env IO [PoseidonEntity] + [PoseidonEntity] +entities <- [EntityInput PoseidonEntity] -> ReaderT Env IO [PoseidonEntity] forall (m :: * -> *) a. (MonadIO m, EntitySpec a, Eq a) => [EntityInput a] -> m [a] readEntityInputs [EntityInput PoseidonEntity] -entityInputs +entityInputs [Char] -> PoseidonIO () logDebug [Char] "Requested entities:" @@ -136,29 +136,29 @@ . PoseidonEntity -> [Char] forall a. Show a => a -> [Char] show) [PoseidonEntity] -entities +entities -- load remote information to decide what to download [Char] -> PoseidonIO () logInfo [Char] "Downloading individual list from remote" - IndividualInfoCollection -remoteIndList <- do - ApiReturnData -r <- [Char] -> Bool -> PoseidonIO ApiReturnData + IndividualInfoCollection +remoteIndList <- do + ApiReturnData +r <- [Char] -> Bool -> PoseidonIO ApiReturnData processApiResponse ([Char] -remoteURL [Char] -> [Char] -> [Char] +remoteURL [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "/individuals" [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ Maybe [Char] -> [Char] qDefault Maybe [Char] -archive) Bool +archive) Bool False case ApiReturnData -r of - ApiReturnExtIndividualInfo [ExtendedIndividualInfo] -extIndInfos -> IndividualInfoCollection -> ReaderT Env IO IndividualInfoCollection +r of + ApiReturnExtIndividualInfo [ExtendedIndividualInfo] +extIndInfos -> IndividualInfoCollection -> ReaderT Env IO IndividualInfoCollection forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return (IndividualInfoCollection @@ -168,7 +168,7 @@ forall a b. (a -> b) -> a -> b $ [ExtendedIndividualInfo] -> IndividualInfoCollection extIndInfo2IndInfoCollection [ExtendedIndividualInfo] -extIndInfos +extIndInfos ApiReturnData _ -> [Char] -> ReaderT Env IO IndividualInfoCollection forall a. HasCallStack => [Char] -> a @@ -182,66 +182,66 @@ EntitySpec a => [a] -> IndividualInfoCollection -> PoseidonIO () checkIfAllEntitiesExist [PoseidonEntity] -entities IndividualInfoCollection -remoteIndList +entities IndividualInfoCollection +remoteIndList -- load local packages - [PoseidonPackage] -allLocalPackages <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] + [PoseidonPackage] +allLocalPackages <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions pacReadOpts [[Char]] -baseDirs - let localPacs :: [PacNameAndVersion] -localPacs = (PoseidonPackage -> PacNameAndVersion) +baseDirs + let localPacs :: [PacNameAndVersion] +localPacs = (PoseidonPackage -> PacNameAndVersion) -> [PoseidonPackage] -> [PacNameAndVersion] forall a b. (a -> b) -> [a] -> [b] map PoseidonPackage -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion [PoseidonPackage] -allLocalPackages +allLocalPackages -- check which remote packages the User wants to have [Char] -> PoseidonIO () logInfo [Char] "Determine requested packages... " -- prepare list of relevant packages with individual list - [PacNameAndVersion] -desiredPacs <- if [PoseidonEntity] -> Bool + [PacNameAndVersion] +desiredPacs <- if [PoseidonEntity] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [PoseidonEntity] -entities then do +entities then do -- load all latest packages [Char] -> PoseidonIO () logInfo [Char] "Downloading package list from remote" - [PackageInfo] -remotePacListAll <- do - ApiReturnData -r <- [Char] -> Bool -> PoseidonIO ApiReturnData + [PackageInfo] +remotePacListAll <- do + ApiReturnData +r <- [Char] -> Bool -> PoseidonIO ApiReturnData processApiResponse ([Char] -remoteURL [Char] -> [Char] -> [Char] +remoteURL [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "/packages" [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ Maybe [Char] -> [Char] qDefault Maybe [Char] -archive) Bool +archive) Bool True case ApiReturnData -r of - ApiReturnPackageInfo [PackageInfo] -p -> [PackageInfo] -> ReaderT Env IO [PackageInfo] +r of + ApiReturnPackageInfo [PackageInfo] +p -> [PackageInfo] -> ReaderT Env IO [PackageInfo] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return [PackageInfo] -p +p ApiReturnData _ -> [Char] -> ReaderT Env IO [PackageInfo] forall a. HasCallStack => [Char] -> a error [Char] "should not happen" - [PackageInfo] -remotePacList <- (PackageInfo -> ReaderT Env IO Bool) + [PackageInfo] +remotePacList <- (PackageInfo -> ReaderT Env IO Bool) -> [PackageInfo] -> ReaderT Env IO [PackageInfo] forall (m :: * -> *) a. Applicative m => @@ -251,8 +251,8 @@ (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [PackageInfo] -remotePacListAll) [PackageInfo] -remotePacListAll +remotePacListAll) [PackageInfo] +remotePacListAll [PacNameAndVersion] -> ReaderT Env IO [PacNameAndVersion] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -265,15 +265,15 @@ map PackageInfo -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion [PackageInfo] -remotePacList +remotePacList else [PoseidonEntity] -> IndividualInfoCollection -> ReaderT Env IO [PacNameAndVersion] forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> IndividualInfoCollection -> m [PacNameAndVersion] determineRelevantPackages [PoseidonEntity] -entities IndividualInfoCollection -remoteIndList +entities IndividualInfoCollection +remoteIndList [Char] -> PoseidonIO () logDebug [Char] "Desired packages based on remote individuals list:" @@ -291,7 +291,7 @@ . PacNameAndVersion -> [Char] forall a. Show a => a -> [Char] show) [PacNameAndVersion] -desiredPacs +desiredPacs -- start comparison/download process [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -302,7 +302,7 @@ forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [PacNameAndVersion] -desiredPacs) [Char] -> [Char] -> [Char] +desiredPacs) [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " requested" @@ -315,7 +315,7 @@ forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [PacNameAndVersion] -desiredPacs) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +desiredPacs) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do IO () -> PoseidonIO () @@ -326,36 +326,36 @@ $ Bool -> [Char] -> IO () createDirectoryIfMissing Bool False [Char] -tempDir +tempDir [PacNameAndVersion] -> (PacNameAndVersion -> PoseidonIO ()) -> PoseidonIO () forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [PacNameAndVersion] -desiredPacs ((PacNameAndVersion -> PoseidonIO ()) -> PoseidonIO ()) +desiredPacs ((PacNameAndVersion -> PoseidonIO ()) -> PoseidonIO ()) -> (PacNameAndVersion -> PoseidonIO ()) -> PoseidonIO () forall a b. (a -> b) -> a -> b -$ \PacNameAndVersion -pac -> do +$ \PacNameAndVersion +pac -> do -- perform package download depending on local-remote state - let packageState :: (PackageState, [Char], Maybe Version, [Maybe Version]) -packageState = [PacNameAndVersion] + let packageState :: (PackageState, [Char], Maybe Version, [Maybe Version]) +packageState = [PacNameAndVersion] -> PacNameAndVersion -> (PackageState, [Char], Maybe Version, [Maybe Version]) determinePackageState [PacNameAndVersion] -localPacs PacNameAndVersion -pac +localPacs PacNameAndVersion +pac [Char] -> [Char] -> ArchiveEndpoint -> (PackageState, [Char], Maybe Version, [Maybe Version]) -> PoseidonIO () handlePackageByState [Char] -downloadDir [Char] -tempDir ArchiveEndpoint -archiveE (PackageState, [Char], Maybe Version, [Maybe Version]) -packageState +downloadDir [Char] +tempDir ArchiveEndpoint +archiveE (PackageState, [Char], Maybe Version, [Maybe Version]) +packageState IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -363,112 +363,112 @@ forall a b. (a -> b) -> a -> b $ [Char] -> IO () removeDirectory [Char] -tempDir +tempDir [Char] -> PoseidonIO () logInfo [Char] "Done" readServerIndInfo :: LB.ByteString -> IO [ExtendedIndividualInfo] readServerIndInfo :: ByteString -> IO [ExtendedIndividualInfo] -readServerIndInfo ByteString -bs = do +readServerIndInfo ByteString +bs = do case ByteString -> Either [Char] [ExtendedIndividualInfo] forall a. FromJSON a => ByteString -> Either [Char] a eitherDecode' ByteString -bs of - Left [Char] -err -> PoseidonException -> IO [ExtendedIndividualInfo] +bs of + Left [Char] +err -> PoseidonException -> IO [ExtendedIndividualInfo] forall e a. Exception e => e -> IO a throwIO (PoseidonException -> IO [ExtendedIndividualInfo]) -> PoseidonException -> IO [ExtendedIndividualInfo] forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonException PoseidonRemoteJSONParsingException [Char] -err - Right [ExtendedIndividualInfo] -pac -> [ExtendedIndividualInfo] -> IO [ExtendedIndividualInfo] +err + Right [ExtendedIndividualInfo] +pac -> [ExtendedIndividualInfo] -> IO [ExtendedIndividualInfo] forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return [ExtendedIndividualInfo] -pac +pac readServerPackageInfo :: LB.ByteString -> IO [PackageInfo] readServerPackageInfo :: ByteString -> IO [PackageInfo] -readServerPackageInfo ByteString -bs = do +readServerPackageInfo ByteString +bs = do case ByteString -> Either [Char] [PackageInfo] forall a. FromJSON a => ByteString -> Either [Char] a eitherDecode' ByteString -bs of - Left [Char] -err -> PoseidonException -> IO [PackageInfo] +bs of + Left [Char] +err -> PoseidonException -> IO [PackageInfo] forall e a. Exception e => e -> IO a throwIO (PoseidonException -> IO [PackageInfo]) -> PoseidonException -> IO [PackageInfo] forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonException PoseidonRemoteJSONParsingException [Char] -err - Right [PackageInfo] -pac -> [PackageInfo] -> IO [PackageInfo] +err + Right [PackageInfo] +pac -> [PackageInfo] -> IO [PackageInfo] forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return [PackageInfo] -pac +pac determinePackageState :: [PacNameAndVersion] -> PacNameAndVersion -> (PackageState, String, Maybe Version, [Maybe Version]) determinePackageState :: [PacNameAndVersion] -> PacNameAndVersion -> (PackageState, [Char], Maybe Version, [Maybe Version]) -determinePackageState [PacNameAndVersion] -localPacs desiredRemotePac :: PacNameAndVersion -desiredRemotePac@(PacNameAndVersion [Char] -desiredRemotePacTitle Maybe Version -desiredRemotePacVersion) +determinePackageState [PacNameAndVersion] +localPacs desiredRemotePac :: PacNameAndVersion +desiredRemotePac@(PacNameAndVersion [Char] +desiredRemotePacTitle Maybe Version +desiredRemotePacVersion) | [Char] -desiredRemotePacTitle [Char] -> [[Char]] -> Bool +desiredRemotePacTitle [Char] -> [[Char]] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `notElem` (PacNameAndVersion -> [Char]) -> [PacNameAndVersion] -> [[Char]] forall a b. (a -> b) -> [a] -> [b] map PacNameAndVersion -> [Char] forall a. HasNameAndVersion a => a -> [Char] getPacName [PacNameAndVersion] -localPacs = +localPacs = (PackageState NotLocal, [Char] -desiredRemotePacTitle, Maybe Version -desiredRemotePacVersion, [Maybe Version +desiredRemotePacTitle, Maybe Version +desiredRemotePacVersion, [Maybe Version forall a. Maybe a Nothing]) | PacNameAndVersion -desiredRemotePac PacNameAndVersion -> [PacNameAndVersion] -> Bool +desiredRemotePac PacNameAndVersion -> [PacNameAndVersion] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [PacNameAndVersion] -localPacs = +localPacs = (PackageState EqualLocalRemote, [Char] -desiredRemotePacTitle, Maybe Version -desiredRemotePacVersion, [Maybe Version -desiredRemotePacVersion]) +desiredRemotePacTitle, Maybe Version +desiredRemotePacVersion, [Maybe Version +desiredRemotePacVersion]) | PacNameAndVersion -desiredRemotePac PacNameAndVersion -> [PacNameAndVersion] -> Bool +desiredRemotePac PacNameAndVersion -> [PacNameAndVersion] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `notElem` [PacNameAndVersion] -localPacs = +localPacs = (PackageState UnequalLocalRemote, [Char] -desiredRemotePacTitle, Maybe Version -desiredRemotePacVersion, [Maybe Version] -localVersionsOfDesired) +desiredRemotePacTitle, Maybe Version +desiredRemotePacVersion, [Maybe Version] +localVersionsOfDesired) | Bool otherwise = [Char] -> (PackageState, [Char], Maybe Version, [Maybe Version]) forall a. HasCallStack => [Char] -> a error [Char] "determinePackageState: should never happen" where - localVersionsOfDesired :: [Maybe Version] -localVersionsOfDesired = (PacNameAndVersion -> Maybe Version) + localVersionsOfDesired :: [Maybe Version] +localVersionsOfDesired = (PacNameAndVersion -> Maybe Version) -> [PacNameAndVersion] -> [Maybe Version] forall a b. (a -> b) -> [a] -> [b] map PacNameAndVersion -> Maybe Version @@ -479,15 +479,15 @@ $ (PacNameAndVersion -> Bool) -> [PacNameAndVersion] -> [PacNameAndVersion] forall a. (a -> Bool) -> [a] -> [a] -filter (\PacNameAndVersion -x -> PacNameAndVersion -> [Char] +filter (\PacNameAndVersion +x -> PacNameAndVersion -> [Char] forall a. HasNameAndVersion a => a -> [Char] getPacName PacNameAndVersion -x [Char] -> [Char] -> Bool +x [Char] -> [Char] -> Bool forall a. Eq a => a -> a -> Bool == [Char] -desiredRemotePacTitle) [PacNameAndVersion] -localPacs +desiredRemotePacTitle) [PacNameAndVersion] +localPacs handlePackageByState :: FilePath -> FilePath -> ArchiveEndpoint -> (PackageState, String, Maybe Version, [Maybe Version]) -> PoseidonIO () handlePackageByState :: [Char] @@ -495,13 +495,13 @@ -> ArchiveEndpoint -> (PackageState, [Char], Maybe Version, [Maybe Version]) -> PoseidonIO () -handlePackageByState [Char] -downloadDir [Char] -tempDir ArchiveEndpoint -archiveE (PackageState -NotLocal, [Char] -pac, Maybe Version -remoteV, [Maybe Version] +handlePackageByState [Char] +downloadDir [Char] +tempDir ArchiveEndpoint +archiveE (PackageState +NotLocal, [Char] +pac, Maybe Version +remoteV, [Maybe Version] _) = do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -514,30 +514,30 @@ forall a. [a] -> [a] -> [a] ++ Maybe Version -> [Char] printV Maybe Version -remoteV [Char] -> [Char] -> [Char] +remoteV [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "] " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -pac +pac [Char] -> [Char] -> ArchiveEndpoint -> PacNameAndVersion -> PoseidonIO () downloadAndUnzipPackage [Char] -downloadDir [Char] -tempDir ArchiveEndpoint -archiveE ([Char] -> Maybe Version -> PacNameAndVersion +downloadDir [Char] +tempDir ArchiveEndpoint +archiveE ([Char] -> Maybe Version -> PacNameAndVersion PacNameAndVersion [Char] -pac Maybe Version -remoteV) +pac Maybe Version +remoteV) handlePackageByState [Char] _ [Char] _ ArchiveEndpoint _ (PackageState -EqualLocalRemote, [Char] -pac, Maybe Version -remoteV, [Maybe Version] -localVs) = do +EqualLocalRemote, [Char] +pac, Maybe Version +remoteV, [Maybe Version] +localVs) = do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -546,28 +546,28 @@ forall a. [a] -> [a] -> [a] ++ [Maybe Version] -> [Char] printVs [Maybe Version] -localVs [Char] -> [Char] -> [Char] +localVs [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " = remote " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ Maybe Version -> [Char] printV Maybe Version -remoteV [Char] -> [Char] -> [Char] +remoteV [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "] " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -pac -handlePackageByState [Char] -downloadDir [Char] -tempDir ArchiveEndpoint -archiveE (PackageState -UnequalLocalRemote, [Char] -pac, Maybe Version -remoteV, [Maybe Version] -localVs) = do +pac +handlePackageByState [Char] +downloadDir [Char] +tempDir ArchiveEndpoint +archiveE (PackageState +UnequalLocalRemote, [Char] +pac, Maybe Version +remoteV, [Maybe Version] +localVs) = do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -576,36 +576,36 @@ forall a. [a] -> [a] -> [a] ++ [Maybe Version] -> [Char] printVs [Maybe Version] -localVs [Char] -> [Char] -> [Char] +localVs [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " < remote " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ Maybe Version -> [Char] printV Maybe Version -remoteV [Char] -> [Char] -> [Char] +remoteV [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "] " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -pac +pac [Char] -> [Char] -> ArchiveEndpoint -> PacNameAndVersion -> PoseidonIO () downloadAndUnzipPackage [Char] -downloadDir [Char] -tempDir ArchiveEndpoint -archiveE ([Char] -> Maybe Version -> PacNameAndVersion +downloadDir [Char] +tempDir ArchiveEndpoint +archiveE ([Char] -> Maybe Version -> PacNameAndVersion PacNameAndVersion [Char] -pac Maybe Version -remoteV) +pac Maybe Version +remoteV) printVs :: [Maybe Version] -> String printVs :: [Maybe Version] -> [Char] printVs [] = [Char] "?.?.?" -printVs [Maybe Version] -xs = [Char] -> [[Char]] -> [Char] +printVs [Maybe Version] +xs = [Char] -> [[Char]] -> [Char] forall a. [a] -> [[a]] -> [a] intercalate [Char] "," ([[Char]] -> [Char]) -> [[Char]] -> [Char] @@ -614,31 +614,31 @@ forall a b. (a -> b) -> [a] -> [b] map Maybe Version -> [Char] printV [Maybe Version] -xs +xs printV :: Maybe Version -> String printV :: Maybe Version -> [Char] printV Maybe Version Nothing = [Char] "?.?.?" -printV (Just Version -x) = Version -> [Char] +printV (Just Version +x) = Version -> [Char] showVersion Version -x +x downloadAndUnzipPackage :: FilePath -> FilePath -> ArchiveEndpoint -> PacNameAndVersion -> PoseidonIO () downloadAndUnzipPackage :: [Char] -> [Char] -> ArchiveEndpoint -> PacNameAndVersion -> PoseidonIO () -downloadAndUnzipPackage [Char] -baseDir [Char] -tempDir ArchiveEndpoint -archiveE PacNameAndVersion -pacNameAndVersion = do - let pnv :: [Char] -pnv = PacNameAndVersion -> [Char] +downloadAndUnzipPackage [Char] +baseDir [Char] +tempDir ArchiveEndpoint +archiveE PacNameAndVersion +pacNameAndVersion = do + let pnv :: [Char] +pnv = PacNameAndVersion -> [Char] forall a. HasNameAndVersion a => a -> [Char] renderNameWithVersion PacNameAndVersion -pacNameAndVersion +pacNameAndVersion [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -646,12 +646,12 @@ "Downloading: " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -pnv +pnv [Char] -> ArchiveEndpoint -> PacNameAndVersion -> PoseidonIO () downloadPackage [Char] -tempDir ArchiveEndpoint -archiveE PacNameAndVersion -pacNameAndVersion +tempDir ArchiveEndpoint +archiveE PacNameAndVersion +pacNameAndVersion IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -660,39 +660,39 @@ $ do [Char] -> [Char] -> IO () unzipPackage ([Char] -tempDir [Char] -> [Char] -> [Char] +tempDir [Char] -> [Char] -> [Char] </> [Char] -pnv) ([Char] -baseDir [Char] -> [Char] -> [Char] +pnv) ([Char] +baseDir [Char] -> [Char] -> [Char] </> [Char] -pnv) +pnv) [Char] -> IO () removeFile ([Char] -tempDir [Char] -> [Char] -> [Char] +tempDir [Char] -> [Char] -> [Char] </> [Char] -pnv) +pnv) unzipPackage :: FilePath -> FilePath -> IO () unzipPackage :: [Char] -> [Char] -> IO () -unzipPackage [Char] -zip_ [Char] -outDir = do - ByteString -archiveBS <- [Char] -> IO ByteString +unzipPackage [Char] +zip_ [Char] +outDir = do + ByteString +archiveBS <- [Char] -> IO ByteString LB.readFile [Char] -zip_ - let archive :: Archive -archive = ByteString -> Archive +zip_ + let archive :: Archive +archive = ByteString -> Archive toArchive ByteString -archiveBS +archiveBS IO () -> (SomeException -> IO ()) -> IO () forall e a. Exception e => IO a -> (e -> IO a) -> IO a catch ([ZipOption] -> Archive -> IO () extractFilesFromArchive [ZipOption OptRecursive, [Char] -> ZipOption OptDestination [Char] -outDir] Archive -archive) (PoseidonException -> IO () +outDir] Archive +archive) (PoseidonException -> IO () forall e a. Exception e => e -> IO a throwIO (PoseidonException -> IO ()) -> (SomeException -> PoseidonException) -> SomeException -> IO () @@ -702,18 +702,18 @@ downloadPackage :: FilePath -> ArchiveEndpoint -> PacNameAndVersion -> PoseidonIO () downloadPackage :: [Char] -> ArchiveEndpoint -> PacNameAndVersion -> PoseidonIO () -downloadPackage [Char] -outDir (ArchiveEndpoint [Char] -remoteURL Maybe [Char] -archive) pacNameAndVersion :: PacNameAndVersion -pacNameAndVersion@(PacNameAndVersion [Char] -pacName Maybe Version -pacVersion) = do - LogA -logA <- PoseidonIO LogA +downloadPackage [Char] +outDir (ArchiveEndpoint [Char] +remoteURL Maybe [Char] +archive) pacNameAndVersion :: PacNameAndVersion +pacNameAndVersion@(PacNameAndVersion [Char] +pacName Maybe Version +pacVersion) = do + LogA +logA <- PoseidonIO LogA envLogAction - Manager -downloadManager <- IO Manager -> ReaderT Env IO Manager + Manager +downloadManager <- IO Manager -> ReaderT Env IO Manager forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Manager -> ReaderT Env IO Manager) @@ -722,24 +722,24 @@ $ ManagerSettings -> IO Manager newManager ManagerSettings tlsManagerSettings - Request -packageRequest <- [Char] -> ReaderT Env IO Request + Request +packageRequest <- [Char] -> ReaderT Env IO Request forall (m :: * -> *). MonadThrow m => [Char] -> m Request parseRequest ([Char] -remoteURL [Char] -> [Char] -> [Char] +remoteURL [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "/zip_file/" [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -pacName [Char] -> [Char] -> [Char] +pacName [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ Maybe [Char] -> [Char] qDefault Maybe [Char] -archive [Char] -> [Char] -> [Char] +archive [Char] -> [Char] -> [Char] +&+ Maybe Version -> [Char] qPacVersion Maybe Version -pacVersion) +pacVersion) --logInfo $ show packageRequest IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a @@ -751,8 +751,8 @@ runResourceT (ResourceT IO () -> IO ()) -> ResourceT IO () -> IO () forall a b. (a -> b) -> a -> b $ do - Response (ConduitM () ByteString (ResourceT IO) ()) -response <- Request + Response (ConduitM () ByteString (ResourceT IO) ()) +response <- Request -> Manager -> ResourceT IO (Response (ConduitM () ByteString (ResourceT IO) ())) @@ -760,10 +760,10 @@ MonadResource m => Request -> Manager -> m (Response (ConduitM i ByteString m ())) http Request -packageRequest Manager -downloadManager - let fileSize :: ByteString -fileSize = ByteString -> Maybe ByteString -> ByteString +packageRequest Manager +downloadManager + let fileSize :: ByteString +fileSize = ByteString -> Maybe ByteString -> ByteString forall a. a -> Maybe a -> a fromMaybe ByteString "0" (Maybe ByteString -> ByteString) -> Maybe ByteString -> ByteString @@ -775,22 +775,22 @@ -> [(HeaderName, ByteString)] forall body. Response body -> [(HeaderName, ByteString)] responseHeaders Response (ConduitM () ByteString (ResourceT IO) ()) -response) - let fileSizeKB :: Int -fileSizeKB = ([Char] -> Int +response) + let fileSizeKB :: Int +fileSizeKB = ([Char] -> Int forall a. Read a => [Char] -> a read ([Char] -> Int) -> [Char] -> Int forall a b. (a -> b) -> a -> b $ ByteString -> [Char] B8.unpack ByteString -fileSize) :: Int - let fileSizeMB :: Double -fileSizeMB = Int -> Double -> Double +fileSize) :: Int + let fileSizeMB :: Double +fileSizeMB = Int -> Double -> Double roundTo Int 1 (Int -> Double forall a b. (Integral a, Num b) => a -> b fromIntegral Int -fileSizeKB Double -> Double -> Double +fileSizeKB Double -> Double -> Double forall a. Fractional a => a -> a -> a / Double 1000.0 Double -> Double -> Double @@ -800,7 +800,7 @@ LogA -> PoseidonIO () -> ResourceT IO () forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () logWithEnv LogA -logA (PoseidonIO () -> ResourceT IO ()) +logA (PoseidonIO () -> ResourceT IO ()) -> PoseidonIO () -> ResourceT IO () forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonIO () @@ -814,7 +814,7 @@ show (Int -> Double -> Double roundTo Int 1 Double -fileSizeMB) [Char] -> [Char] -> [Char] +fileSizeMB) [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "MB" @@ -826,7 +826,7 @@ -> ConduitM () ByteString (ResourceT IO) () forall body. Response body -> body responseBody Response (ConduitM () ByteString (ResourceT IO) ()) -response) SealedConduitT () ByteString (ResourceT IO) () +response) SealedConduitT () ByteString (ResourceT IO) () -> ConduitT ByteString Void (ResourceT IO) () -> ResourceT IO () forall (m :: * -> *) a b. Monad m => @@ -834,8 +834,8 @@ $$+- LogA -> Double -> ConduitT ByteString ByteString (ResourceT IO) () printDownloadProgress LogA -logA Double -fileSizeMB ConduitT ByteString ByteString (ResourceT IO) () +logA Double +fileSizeMB ConduitT ByteString ByteString (ResourceT IO) () -> ConduitT ByteString Void (ResourceT IO) () -> ConduitT ByteString Void (ResourceT IO) () forall (m :: * -> *) a b c r. @@ -847,11 +847,11 @@ MonadResource m => [Char] -> ConduitT ByteString o m () sinkFile ([Char] -outDir [Char] -> [Char] -> [Char] +outDir [Char] -> [Char] -> [Char] </> PacNameAndVersion -> [Char] forall a. HasNameAndVersion a => a -> [Char] renderNameWithVersion PacNameAndVersion -pacNameAndVersion) +pacNameAndVersion) () -> PoseidonIO () forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -859,22 +859,22 @@ printDownloadProgress :: LogA -> Double -> ConduitT B.ByteString B.ByteString (ResourceT IO) () printDownloadProgress :: LogA -> Double -> ConduitT ByteString ByteString (ResourceT IO) () -printDownloadProgress LogA -logA Double -fileSizeMB = Int -> Double -> ConduitT ByteString ByteString (ResourceT IO) () +printDownloadProgress LogA +logA Double +fileSizeMB = Int -> Double -> ConduitT ByteString ByteString (ResourceT IO) () forall {m :: * -> *}. MonadIO m => Int -> Double -> ConduitT ByteString ByteString m () -loop Int +loop Int 0 Double 0 where - loop :: Int -> Double -> ConduitT ByteString ByteString m () -loop Int -loadedB Double -loadedMB = do - Maybe ByteString -x <- ConduitT ByteString ByteString m (Maybe ByteString) + loop :: Int -> Double -> ConduitT ByteString ByteString m () +loop Int +loadedB Double +loadedMB = do + Maybe ByteString +x <- ConduitT ByteString ByteString m (Maybe ByteString) forall (m :: * -> *) i o. Monad m => ConduitT i o m (Maybe i) await ConduitT ByteString ByteString m () @@ -886,30 +886,30 @@ forall a. a -> ConduitT ByteString ByteString m a forall (m :: * -> *) a. Monad m => a -> m a return ()) (Double -> Int -> ByteString -> ConduitT ByteString ByteString m () -showDownloaded Double -fileSizeMB Int -loadedB) Maybe ByteString -x +showDownloaded Double +fileSizeMB Int +loadedB) Maybe ByteString +x where - showDownloaded :: Double -> Int -> ByteString -> ConduitT ByteString ByteString m () -showDownloaded Double -fileSizeMB_ Int -loadedB_ ByteString -x = do - let newLoadedB :: Int -newLoadedB = Int -loadedB_ Int -> Int -> Int + showDownloaded :: Double -> Int -> ByteString -> ConduitT ByteString ByteString m () +showDownloaded Double +fileSizeMB_ Int +loadedB_ ByteString +x = do + let newLoadedB :: Int +newLoadedB = Int +loadedB_ Int -> Int -> Int forall a. Num a => a -> a -> a + ByteString -> Int B.length ByteString -x - let curLoadedMB :: Double -curLoadedMB = Int -> Double -> Double +x + let curLoadedMB :: Double +curLoadedMB = Int -> Double -> Double roundTo Int 1 (Int -> Double forall a b. (Integral a, Num b) => a -> b fromIntegral Int -newLoadedB Double -> Double -> Double +newLoadedB Double -> Double -> Double forall a. Fractional a => a -> a -> a / Double 1000 Double -> Double -> Double @@ -917,71 +917,71 @@ / Double 1000) -- update progress counter every 5% - let newLoadedMB :: Double -newLoadedMB = if (Double -curLoadedMBDouble -> Double -> Double + let newLoadedMB :: Double +newLoadedMB = if (Double +curLoadedMBDouble -> Double -> Double forall a. Fractional a => a -> a -> a /Double -fileSizeMB_ Double -> Double -> Double +fileSizeMB_ Double -> Double -> Double forall a. Num a => a -> a -> a - Double -loadedMBDouble -> Double -> Double +loadedMBDouble -> Double -> Double forall a. Fractional a => a -> a -> a /Double -fileSizeMB_ Double -> Double -> Bool +fileSizeMB_ Double -> Double -> Bool forall a. Ord a => a -> a -> Bool >= Double 0.05 Bool -> Bool -> Bool && -- but only at at least 200KB Double -curLoadedMB Double -> Double -> Double +curLoadedMB Double -> Double -> Double forall a. Num a => a -> a -> a - Double -loadedMB Double -> Double -> Bool +loadedMB Double -> Double -> Bool forall a. Ord a => a -> a -> Bool > Double 0.2) Bool -> Bool -> Bool || -- and of course at the end of the sequence Double -curLoadedMB Double -> Double -> Bool +curLoadedMB Double -> Double -> Bool forall a. Eq a => a -> a -> Bool == Double -fileSizeMB_ +fileSizeMB_ then Double -curLoadedMB +curLoadedMB else Double -loadedMB +loadedMB Bool -> ConduitT ByteString ByteString m () -> ConduitT ByteString ByteString m () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (Double -loadedMB Double -> Double -> Bool +loadedMB Double -> Double -> Bool forall a. Eq a => a -> a -> Bool /= Double -newLoadedMB) (ConduitT ByteString ByteString m () +newLoadedMB) (ConduitT ByteString ByteString m () -> ConduitT ByteString ByteString m ()) -> ConduitT ByteString ByteString m () -> ConduitT ByteString ByteString m () forall a b. (a -> b) -> a -> b $ do - let leadedPercent :: Double -leadedPercent = Int -> Double -> Double + let leadedPercent :: Double +leadedPercent = Int -> Double -> Double roundTo Int 3 (Double -newLoadedMB Double -> Double -> Double +newLoadedMB Double -> Double -> Double forall a. Fractional a => a -> a -> a / Double -fileSizeMB_) Double -> Double -> Double +fileSizeMB_) Double -> Double -> Double forall a. Num a => a -> a -> a * Double 100 LogA -> PoseidonIO () -> ConduitT ByteString ByteString m () forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () logWithEnv LogA -logA (PoseidonIO () -> ConduitT ByteString ByteString m ()) +logA (PoseidonIO () -> ConduitT ByteString ByteString m ()) -> PoseidonIO () -> ConduitT ByteString ByteString m () forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonIO () @@ -993,7 +993,7 @@ 9 (Double -> [Char] forall a. Show a => a -> [Char] show Double -curLoadedMB) [Char] -> [Char] -> [Char] +curLoadedMB) [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " " [Char] -> [Char] -> [Char] @@ -1004,16 +1004,16 @@ forall a. (PrintfArg a, Floating a) => Int -> a -> [Char] roundToStr Int 1 Double -leadedPercent) [Char] -> [Char] -> [Char] +leadedPercent) [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "% ") ByteString -> ConduitT ByteString ByteString m () forall (m :: * -> *) o i. Monad m => o -> ConduitT i o m () yield ByteString -x +x Int -> Double -> ConduitT ByteString ByteString m () -loop Int -newLoadedB Double -newLoadedMB +loop Int +newLoadedB Double +newLoadedMB \ No newline at end of file diff --git a/src/Poseidon.CLI.Forge.html b/src/Poseidon.CLI.Forge.html index 4fab264e..3f8be603 100644 --- a/src/Poseidon.CLI.Forge.html +++ b/src/Poseidon.CLI.Forge.html @@ -19,148 +19,150 @@ SNPSetSpec (..), printSNPCopyProgress, selectIndices, snpSetMergeList) -import Poseidon.Janno (JannoList (..), JannoRow (..), - JannoRows (..), getMaybeJannoList, - writeJannoFile) -import Poseidon.Package (PackageReadOptions (..), - PoseidonPackage (..), - defaultPackageReadOptions, - filterToRelevantPackages, - getJointGenotypeData, - getJointIndividualInfo, - getJointJanno, - makePseudoPackageFromGenotypeData, - newMinimalPackageTemplate, - newPackageTemplate, - readPoseidonPackageCollection, - writePoseidonPackage) -import Poseidon.SequencingSource (SeqSourceRow (..), - SeqSourceRows (..), - writeSeqSourceFile) -import Poseidon.Utils (PoseidonException (..), - PoseidonIO, checkFile, - determinePackageOutName, - envErrorLength, envInputPlinkMode, - envLogAction, logInfo, logWarning, - uniqueRO) - -import Control.Exception (catch, throwIO) -import Control.Monad (filterM, forM, forM_, unless, - when) -import Data.List (intercalate, nub) -import Data.Maybe (mapMaybe) -import Data.Time (getCurrentTime) -import qualified Data.Vector as V -import qualified Data.Vector.Unboxed as VU -import qualified Data.Vector.Unboxed.Mutable as VUM -import Pipes (MonadIO (liftIO), cat, (>->)) -import qualified Pipes.Prelude as P -import Pipes.Safe (SafeT, runSafeT) -import SequenceFormats.Eigenstrat (EigenstratSnpEntry (..), - GenoEntry (..), GenoLine, - writeEigenstrat) -import SequenceFormats.Plink (PlinkPopNameMode, - eigenstratInd2PlinkFam, - writePlink) -import System.Directory (copyFile, - createDirectoryIfMissing) -import System.FilePath (dropTrailingPathSeparator, (<.>), - (</>)) - --- | A datatype representing command line options for the survey command -data ForgeOptions = ForgeOptions - { ForgeOptions -> [GenoDataSource] +import Poseidon.Janno (JannoRow (..), JannoRows (..), + ListColumn (..), + getMaybeListColumn, + writeJannoFile) +import Poseidon.Package (PackageReadOptions (..), + PoseidonPackage (..), + defaultPackageReadOptions, + filterToRelevantPackages, + getJointGenotypeData, + getJointIndividualInfo, + getJointJanno, + makePseudoPackageFromGenotypeData, + newMinimalPackageTemplate, + newPackageTemplate, + readPoseidonPackageCollection, + writePoseidonPackage) +import Poseidon.SequencingSource (SeqSourceRow (..), + SeqSourceRows (..), + writeSeqSourceFile) +import Poseidon.Utils (PoseidonException (..), + PoseidonIO, checkFile, + determinePackageOutName, + envErrorLength, envInputPlinkMode, + envLogAction, logInfo, logWarning, + uniqueRO) + +import Control.Exception (catch, throwIO) +import Control.Monad (filterM, forM, forM_, unless, + when) +import Data.List (intercalate, nub) +import Data.Maybe (mapMaybe) +import Data.Time (getCurrentTime) +import qualified Data.Vector as V +import qualified Data.Vector.Unboxed as VU +import qualified Data.Vector.Unboxed.Mutable as VUM +import Pipes (MonadIO (liftIO), cat, (>->)) +import qualified Pipes.Prelude as P +import Pipes.Safe (SafeT, runSafeT) +import Poseidon.ColumnTypes (JannoNrSNPs (..)) +import SequenceFormats.Eigenstrat (EigenstratSnpEntry (..), + GenoEntry (..), GenoLine, + writeEigenstrat) +import SequenceFormats.Plink (PlinkPopNameMode, + eigenstratInd2PlinkFam, + writePlink) +import System.Directory (copyFile, + createDirectoryIfMissing) +import System.FilePath (dropTrailingPathSeparator, (<.>), + (</>)) + +-- | A datatype representing command line options for the survey command +data ForgeOptions = ForgeOptions + { ForgeOptions -> [GenoDataSource] _forgeGenoSources :: [GenoDataSource] - -- Empty list = forge all packages - , ForgeOptions -> [EntityInput SignedEntity] + -- Empty list = forge all packages + , ForgeOptions -> [EntityInput SignedEntity] _forgeEntityInput :: [EntityInput SignedEntity] -- Empty list = forge all packages - , ForgeOptions -> Maybe [Char] + , ForgeOptions -> Maybe [Char] _forgeSnpFile :: Maybe FilePath - , ForgeOptions -> Bool + , ForgeOptions -> Bool _forgeIntersect :: Bool - , ForgeOptions -> GenotypeFormatSpec + , ForgeOptions -> GenotypeFormatSpec _forgeOutFormat :: GenotypeFormatSpec - , ForgeOptions -> ForgeOutMode + , ForgeOptions -> ForgeOutMode _forgeOutMode :: ForgeOutMode - , ForgeOptions -> [Char] + , ForgeOptions -> [Char] _forgeOutPacPath :: FilePath - , ForgeOptions -> Maybe [Char] + , ForgeOptions -> Maybe [Char] _forgeOutPacName :: Maybe String - , ForgeOptions -> Bool + , ForgeOptions -> Bool _forgePackageWise :: Bool - , ForgeOptions -> PlinkPopNameMode + , ForgeOptions -> PlinkPopNameMode _forgeOutputPlinkPopMode :: PlinkPopNameMode - , ForgeOptions -> Bool + , ForgeOptions -> Bool _forgeOutputOrdered :: Bool - } - --- | Different output modes ordered from more minimal to more complete -data ForgeOutMode = - GenoOut - | MinimalOut - | PreservePymlOut - | NormalOut - -preservePyml :: ForgeOutMode -> Bool -preservePyml :: ForgeOutMode -> Bool + } + +-- | Different output modes ordered from more minimal to more complete +data ForgeOutMode = + GenoOut + | MinimalOut + | PreservePymlOut + | NormalOut + +preservePyml :: ForgeOutMode -> Bool +preservePyml :: ForgeOutMode -> Bool preservePyml ForgeOutMode PreservePymlOut = Bool True -preservePyml ForgeOutMode +preservePyml ForgeOutMode _ = Bool False - -pacReadOpts :: PackageReadOptions -pacReadOpts :: PackageReadOptions + +pacReadOpts :: PackageReadOptions +pacReadOpts :: PackageReadOptions pacReadOpts = PackageReadOptions defaultPackageReadOptions { - _readOptIgnoreChecksums :: Bool + _readOptIgnoreChecksums :: Bool _readOptIgnoreChecksums = Bool True - , _readOptIgnoreGeno :: Bool + , _readOptIgnoreGeno :: Bool _readOptIgnoreGeno = Bool False - , _readOptGenoCheck :: Bool + , _readOptGenoCheck :: Bool _readOptGenoCheck = Bool True - } - --- | The main function running the forge command -runForge :: ForgeOptions -> PoseidonIO () -runForge :: ForgeOptions -> PoseidonIO () + } + +-- | The main function running the forge command +runForge :: ForgeOptions -> PoseidonIO () +runForge :: ForgeOptions -> PoseidonIO () runForge ( - ForgeOptions [GenoDataSource] -genoSources - [EntityInput SignedEntity] -entityInputs Maybe [Char] -maybeSnpFile Bool -intersect_ - GenotypeFormatSpec -outFormat ForgeOutMode -outMode [Char] -outPathRaw Maybe [Char] -maybeOutName - Bool -packageWise PlinkPopNameMode -outPlinkPopMode - Bool -outputOrdered - ) = do - - -- load packages -- - [PoseidonPackage] -properPackages <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] + ForgeOptions [GenoDataSource] +genoSources + [EntityInput SignedEntity] +entityInputs Maybe [Char] +maybeSnpFile Bool +intersect_ + GenotypeFormatSpec +outFormat ForgeOutMode +outMode [Char] +outPathRaw Maybe [Char] +maybeOutName + Bool +packageWise PlinkPopNameMode +outPlinkPopMode + Bool +outputOrdered + ) = do + + -- load packages -- + [PoseidonPackage] +properPackages <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions pacReadOpts ([[Char]] -> PoseidonIO [PoseidonPackage]) -> [[Char]] -> PoseidonIO [PoseidonPackage] forall a b. (a -> b) -> a -> b $ [GenoDataSource -> [Char] getPacBaseDirs GenoDataSource -x | x :: GenoDataSource -x@PacBaseDir {} <- [GenoDataSource] -genoSources] - [PoseidonPackage] -pseudoPackages <- (GenotypeDataSpec -> ReaderT Env IO PoseidonPackage) +x | x :: GenoDataSource +x@PacBaseDir {} <- [GenoDataSource] +genoSources] + [PoseidonPackage] +pseudoPackages <- (GenotypeDataSpec -> ReaderT Env IO PoseidonPackage) -> [GenotypeDataSpec] -> PoseidonIO [PoseidonPackage] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => @@ -169,10 +171,10 @@ mapM GenotypeDataSpec -> ReaderT Env IO PoseidonPackage makePseudoPackageFromGenotypeData [GenoDataSource -> GenotypeDataSpec getGenoDirect GenoDataSource -x | x :: GenoDataSource -x@GenoDirect {} <- [GenoDataSource] -genoSources] - [Char] -> PoseidonIO () +x | x :: GenoDataSource +x@GenoDirect {} <- [GenoDataSource] +genoSources] + [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b $ [Char] @@ -184,25 +186,25 @@ forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [PoseidonPackage] -pseudoPackages) - let allPackages :: [PoseidonPackage] -allPackages = [PoseidonPackage] -properPackages [PoseidonPackage] -> [PoseidonPackage] -> [PoseidonPackage] +pseudoPackages) + let allPackages :: [PoseidonPackage] +allPackages = [PoseidonPackage] +properPackages [PoseidonPackage] -> [PoseidonPackage] -> [PoseidonPackage] forall a. [a] -> [a] -> [a] ++ [PoseidonPackage] -pseudoPackages - - -- compile entities - [SignedEntity] -entitiesUser <- [EntityInput SignedEntity] -> ReaderT Env IO [SignedEntity] +pseudoPackages + + -- compile entities + [SignedEntity] +entitiesUser <- [EntityInput SignedEntity] -> ReaderT Env IO [SignedEntity] forall (m :: * -> *) a. (MonadIO m, EntitySpec a, Eq a) => [EntityInput a] -> m [a] readEntityInputs [EntityInput SignedEntity] -entityInputs - - [PoseidonPackage] -allLatestPackages <- (PoseidonPackage -> ReaderT Env IO Bool) +entityInputs + + [PoseidonPackage] +allLatestPackages <- (PoseidonPackage -> ReaderT Env IO Bool) -> [PoseidonPackage] -> PoseidonIO [PoseidonPackage] forall (m :: * -> *) a. Applicative m => @@ -212,16 +214,16 @@ (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [PoseidonPackage] -allPackages) [PoseidonPackage] -allPackages - [SignedEntity] -entities <- case [SignedEntity] -entitiesUser of - [] -> do - [Char] -> PoseidonIO () +allPackages) [PoseidonPackage] +allPackages + [SignedEntity] +entities <- case [SignedEntity] +entitiesUser of + [] -> do + [Char] -> PoseidonIO () logInfo [Char] "No requested entities. Implicitly forging all packages." - [SignedEntity] -> ReaderT Env IO [SignedEntity] + [SignedEntity] -> ReaderT Env IO [SignedEntity] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return ([SignedEntity] -> ReaderT Env IO [SignedEntity]) @@ -245,25 +247,25 @@ . PoseidonPackage -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion) [PoseidonPackage] -allLatestPackages - (Include PoseidonEntity +allLatestPackages + (Include PoseidonEntity _:[SignedEntity] _) -> do - [SignedEntity] -> ReaderT Env IO [SignedEntity] + [SignedEntity] -> ReaderT Env IO [SignedEntity] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return [SignedEntity] -entitiesUser - (Exclude PoseidonEntity +entitiesUser + (Exclude PoseidonEntity _:[SignedEntity] _) -> do - -- fill entitiesToInclude with all packages, if entitiesInput starts with an Exclude - [Char] -> PoseidonIO () + -- fill entitiesToInclude with all packages, if entitiesInput starts with an Exclude + [Char] -> PoseidonIO () logInfo [Char] "forge entities begin with exclude, so implicitly adding all packages \ \(latest versions) as includes before applying excludes." - -- add all latest packages to the front of the list - [SignedEntity] -> ReaderT Env IO [SignedEntity] + -- add all latest packages to the front of the list + [SignedEntity] -> ReaderT Env IO [SignedEntity] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return ([SignedEntity] -> ReaderT Env IO [SignedEntity]) @@ -287,11 +289,11 @@ . PoseidonPackage -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion) [PoseidonPackage] -allLatestPackages [SignedEntity] -> [SignedEntity] -> [SignedEntity] +allLatestPackages [SignedEntity] -> [SignedEntity] -> [SignedEntity] forall a. [a] -> [a] -> [a] ++ [SignedEntity] -entitiesUser - [Char] -> PoseidonIO () +entitiesUser + [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b $ [Char] @@ -314,14 +316,14 @@ forall a. Int -> [a] -> [a] take Int 10) [SignedEntity] -entities [Char] -> [Char] -> [Char] +entities [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ - if [SignedEntity] -> Int + if [SignedEntity] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [SignedEntity] -entities Int -> Int -> Bool +entities Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 10 then [Char] @@ -333,7 +335,7 @@ forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [SignedEntity] -entities Int -> Int -> Int +entities Int -> Int -> Int forall a. Num a => a -> a -> a - Int 10) [Char] -> [Char] -> [Char] @@ -341,14 +343,14 @@ ++ [Char] " more" else [Char] "" - - -- check if all entities can be found. This function reports an error and throws and exception - [PoseidonPackage] -> ReaderT Env IO IndividualInfoCollection + + -- check if all entities can be found. This function reports an error and throws and exception + [PoseidonPackage] -> ReaderT Env IO IndividualInfoCollection forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> m IndividualInfoCollection getJointIndividualInfo [PoseidonPackage] -allPackages ReaderT Env IO IndividualInfoCollection +allPackages ReaderT Env IO IndividualInfoCollection -> (IndividualInfoCollection -> PoseidonIO ()) -> PoseidonIO () forall a b. ReaderT Env IO a -> (a -> ReaderT Env IO b) -> ReaderT Env IO b @@ -358,17 +360,17 @@ EntitySpec a => [a] -> IndividualInfoCollection -> PoseidonIO () checkIfAllEntitiesExist [SignedEntity] -entities - -- determine relevant packages - [PoseidonPackage] -relevantPackages <- [SignedEntity] -> [PoseidonPackage] -> PoseidonIO [PoseidonPackage] +entities + -- determine relevant packages + [PoseidonPackage] +relevantPackages <- [SignedEntity] -> [PoseidonPackage] -> PoseidonIO [PoseidonPackage] forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> [PoseidonPackage] -> m [PoseidonPackage] filterToRelevantPackages [SignedEntity] -entities [PoseidonPackage] -allPackages - [Char] -> PoseidonIO () +entities [PoseidonPackage] +allPackages + [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b $ (Int -> [Char] @@ -382,17 +384,17 @@ length ([PoseidonPackage] -> [Char]) -> [PoseidonPackage] -> [Char] forall a b. (a -> b) -> a -> b $ [PoseidonPackage] -relevantPackages) [Char] -> [Char] -> [Char] +relevantPackages) [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " packages contain data for this forging operation" - Bool -> PoseidonIO () -> PoseidonIO () + Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when ([PoseidonPackage] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [PoseidonPackage] -relevantPackages) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +relevantPackages) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a @@ -403,19 +405,19 @@ forall e a. Exception e => e -> IO a throwIO PoseidonException PoseidonEmptyForgeException - Bool -> PoseidonIO () -> PoseidonIO () + Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when ([PoseidonPackage] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [PoseidonPackage] -relevantPackages Int -> Int -> Bool +relevantPackages Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 1 Bool -> Bool -> Bool && ForgeOutMode -> Bool preservePyml ForgeOutMode -outMode) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +outMode) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a @@ -426,22 +428,22 @@ forall e a. Exception e => e -> IO a throwIO PoseidonException PoseidonCantPreserveException - - -- get all individuals from the relevant packages - IndividualInfoCollection -indInfoCollection <- [PoseidonPackage] -> ReaderT Env IO IndividualInfoCollection + + -- get all individuals from the relevant packages + IndividualInfoCollection +indInfoCollection <- [PoseidonPackage] -> ReaderT Env IO IndividualInfoCollection forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> m IndividualInfoCollection getJointIndividualInfo [PoseidonPackage] -relevantPackages - - -- set entities to only packages, if --packagewise is set - let relevantEntities :: [SignedEntity] -relevantEntities = - if Bool -packageWise - then (PoseidonPackage -> SignedEntity) +relevantPackages + + -- set entities to only packages, if --packagewise is set + let relevantEntities :: [SignedEntity] +relevantEntities = + if Bool +packageWise + then (PoseidonPackage -> SignedEntity) -> [PoseidonPackage] -> [SignedEntity] forall a b. (a -> b) -> [a] -> [b] map (PoseidonEntity -> SignedEntity @@ -459,44 +461,44 @@ . PoseidonPackage -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion) [PoseidonPackage] -relevantPackages - else [SignedEntity] -entities - - -- determine indizes of relevant individuals - [Int] -relevantIndices <- Bool +relevantPackages + else [SignedEntity] +entities + + -- determine indizes of relevant individuals + [Int] +relevantIndices <- Bool -> [SignedEntity] -> IndividualInfoCollection -> PoseidonIO [Int] forall a. EntitySpec a => Bool -> [a] -> IndividualInfoCollection -> PoseidonIO [Int] resolveUniqueEntityIndices Bool -outputOrdered [SignedEntity] -relevantEntities IndividualInfoCollection -indInfoCollection - - -- collect data -- - -- janno - let (JannoRows [JannoRow] -jannoRows) = [PoseidonPackage] -> JannoRows +outputOrdered [SignedEntity] +relevantEntities IndividualInfoCollection +indInfoCollection + + -- collect data -- + -- janno + let (JannoRows [JannoRow] +jannoRows) = [PoseidonPackage] -> JannoRows getJointJanno [PoseidonPackage] -relevantPackages - newJanno :: JannoRows -newJanno@(JannoRows [JannoRow] -relevantJannoRows) = [JannoRow] -> JannoRows +relevantPackages + newJanno :: JannoRows +newJanno@(JannoRows [JannoRow] +relevantJannoRows) = [JannoRow] -> JannoRows JannoRows ([JannoRow] -> JannoRows) -> [JannoRow] -> JannoRows forall a b. (a -> b) -> a -> b $ (Int -> JannoRow) -> [Int] -> [JannoRow] forall a b. (a -> b) -> [a] -> [b] map ([JannoRow] -jannoRows [JannoRow] -> Int -> JannoRow +jannoRows [JannoRow] -> Int -> JannoRow forall a. HasCallStack => [a] -> Int -> a !!) [Int] -relevantIndices - - -- seqSource - let seqSourceRows :: SeqSourceRows -seqSourceRows = [SeqSourceRows] -> SeqSourceRows +relevantIndices + + -- seqSource + let seqSourceRows :: SeqSourceRows +seqSourceRows = [SeqSourceRows] -> SeqSourceRows forall a. Monoid a => [a] -> a mconcat ([SeqSourceRows] -> SeqSourceRows) -> [SeqSourceRows] -> SeqSourceRows @@ -506,16 +508,16 @@ forall a b. (a -> b) -> [a] -> [b] map PoseidonPackage -> SeqSourceRows posPacSeqSource [PoseidonPackage] -relevantPackages - relevantSeqSourceRows :: SeqSourceRows -relevantSeqSourceRows = JannoRows -> SeqSourceRows -> SeqSourceRows +relevantPackages + relevantSeqSourceRows :: SeqSourceRows +relevantSeqSourceRows = JannoRows -> SeqSourceRows -> SeqSourceRows filterSeqSourceRows JannoRows -newJanno SeqSourceRows -seqSourceRows - - -- bib - let bibEntries :: [BibEntry] -bibEntries = [BibEntry] -> [BibEntry] +newJanno SeqSourceRows +seqSourceRows + + -- bib + let bibEntries :: [BibEntry] +bibEntries = [BibEntry] -> [BibEntry] forall a. Ord a => [a] -> [a] uniqueRO ([BibEntry] -> [BibEntry]) -> [BibEntry] -> [BibEntry] forall a b. (a -> b) -> a -> b @@ -523,20 +525,20 @@ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap PoseidonPackage -> [BibEntry] posPacBib [PoseidonPackage] -relevantPackages - relevantBibEntries :: [BibEntry] -relevantBibEntries = JannoRows -> [BibEntry] -> [BibEntry] +relevantPackages + relevantBibEntries :: [BibEntry] +relevantBibEntries = JannoRows -> [BibEntry] -> [BibEntry] filterBibEntries JannoRows -newJanno [BibEntry] -bibEntries - - -- create new package -- - let outPath :: [Char] -outPath = [Char] -> [Char] +newJanno [BibEntry] +bibEntries + + -- create new package -- + let outPath :: [Char] +outPath = [Char] -> [Char] dropTrailingPathSeparator [Char] -outPathRaw - [Char] -outName <- IO [Char] -> ReaderT Env IO [Char] +outPathRaw + [Char] +outName <- IO [Char] -> ReaderT Env IO [Char] forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO [Char] -> ReaderT Env IO [Char]) @@ -544,18 +546,18 @@ forall a b. (a -> b) -> a -> b $ Maybe [Char] -> [Char] -> IO [Char] determinePackageOutName Maybe [Char] -maybeOutName [Char] -outPath - -- create new directory - [Char] -> PoseidonIO () +maybeOutName [Char] +outPath + -- create new directory + [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b $ [Char] "Writing to directory (will be created if missing): " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -outPath - IO () -> PoseidonIO () +outPath + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () @@ -563,54 +565,54 @@ $ Bool -> [Char] -> IO () createDirectoryIfMissing Bool True [Char] -outPath - -- compile genotype data structure - let ([Char] -outInd, [Char] -outSnp, [Char] -outGeno) = case GenotypeFormatSpec -outFormat of - GenotypeFormatSpec +outPath + -- compile genotype data structure + let ([Char] +outInd, [Char] +outSnp, [Char] +outGeno) = case GenotypeFormatSpec +outFormat of + GenotypeFormatSpec GenotypeFormatEigenstrat -> ([Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] ".ind", [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] ".snp", [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] ".geno") - GenotypeFormatSpec + GenotypeFormatSpec GenotypeFormatPlink -> ([Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] ".fam", [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] ".bim", [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] ".bed") - -- output warning if any snpSet is set to Other - [SNPSetSpec] -snpSetList <- [PoseidonPackage] -> PoseidonIO [SNPSetSpec] + -- output warning if any snpSet is set to Other + [SNPSetSpec] +snpSetList <- [PoseidonPackage] -> PoseidonIO [SNPSetSpec] fillMissingSnpSets [PoseidonPackage] -relevantPackages - let newSNPSet :: SNPSetSpec -newSNPSet = case - Maybe [Char] -maybeSnpFile of - Maybe [Char] +relevantPackages + let newSNPSet :: SNPSetSpec +newSNPSet = case + Maybe [Char] +maybeSnpFile of + Maybe [Char] Nothing -> [SNPSetSpec] -> Bool -> SNPSetSpec snpSetMergeList [SNPSetSpec] -snpSetList Bool -intersect_ - Just [Char] +snpSetList Bool +intersect_ + Just [Char] _ -> SNPSetSpec SNPSetOther - let genotypeData :: GenotypeDataSpec -genotypeData = GenotypeFormatSpec + let genotypeData :: GenotypeDataSpec +genotypeData = GenotypeFormatSpec -> [Char] -> Maybe [Char] -> [Char] @@ -620,82 +622,82 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -outFormat [Char] -outGeno Maybe [Char] +outFormat [Char] +outGeno Maybe [Char] forall a. Maybe a Nothing [Char] -outSnp Maybe [Char] +outSnp Maybe [Char] forall a. Maybe a Nothing [Char] -outInd Maybe [Char] +outInd Maybe [Char] forall a. Maybe a Nothing (SNPSetSpec -> Maybe SNPSetSpec forall a. a -> Maybe a Just SNPSetSpec -newSNPSet) - - -- assemble and write result depending on outMode -- - [Char] -> PoseidonIO () +newSNPSet) + + -- assemble and write result depending on outMode -- + [Char] -> PoseidonIO () logInfo [Char] "Creating new package entity" - let pacSource :: PoseidonPackage -pacSource = [PoseidonPackage] -> PoseidonPackage + let pacSource :: PoseidonPackage +pacSource = [PoseidonPackage] -> PoseidonPackage forall a. HasCallStack => [a] -> a head [PoseidonPackage] -relevantPackages - case ForgeOutMode -outMode of - ForgeOutMode +relevantPackages + case ForgeOutMode +outMode of + ForgeOutMode GenoOut -> do - IOVector Int + IOVector Int _ <- [Char] -> ([Char], [Char], [Char]) -> [PoseidonPackage] -> [Int] -> PoseidonIO (IOVector Int) -compileGenotypeData [Char] -outPath ([Char] -outInd, [Char] -outSnp, [Char] -outGeno) [PoseidonPackage] -relevantPackages [Int] -relevantIndices - () -> PoseidonIO () +compileGenotypeData [Char] +outPath ([Char] +outInd, [Char] +outSnp, [Char] +outGeno) [PoseidonPackage] +relevantPackages [Int] +relevantIndices + () -> PoseidonIO () forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return () - ForgeOutMode + ForgeOutMode MinimalOut -> do - let pac :: PoseidonPackage -pac = [Char] -> [Char] -> GenotypeDataSpec -> PoseidonPackage + let pac :: PoseidonPackage +pac = [Char] -> [Char] -> GenotypeDataSpec -> PoseidonPackage newMinimalPackageTemplate [Char] -outPath [Char] -outName GenotypeDataSpec -genotypeData - PoseidonPackage -> PoseidonIO () -writePoseidonYmlFile PoseidonPackage -pac - IOVector Int +outPath [Char] +outName GenotypeDataSpec +genotypeData + PoseidonPackage -> PoseidonIO () +writePoseidonYmlFile PoseidonPackage +pac + IOVector Int _ <- [Char] -> ([Char], [Char], [Char]) -> [PoseidonPackage] -> [Int] -> PoseidonIO (IOVector Int) -compileGenotypeData [Char] -outPath ([Char] -outInd, [Char] -outSnp, [Char] -outGeno) [PoseidonPackage] -relevantPackages [Int] -relevantIndices - () -> PoseidonIO () +compileGenotypeData [Char] +outPath ([Char] +outInd, [Char] +outSnp, [Char] +outGeno) [PoseidonPackage] +relevantPackages [Int] +relevantIndices + () -> PoseidonIO () forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return () - ForgeOutMode + ForgeOutMode PreservePymlOut -> do - PoseidonPackage -normalPac <- [Char] + PoseidonPackage +normalPac <- [Char] -> [Char] -> GenotypeDataSpec -> Maybe (Either [EigenstratIndEntry] JannoRows) @@ -703,92 +705,92 @@ -> [BibEntry] -> ReaderT Env IO PoseidonPackage newPackageTemplate [Char] -outPath [Char] -outName GenotypeDataSpec -genotypeData - (Either [EigenstratIndEntry] JannoRows +outPath [Char] +outName GenotypeDataSpec +genotypeData + (Either [EigenstratIndEntry] JannoRows -> Maybe (Either [EigenstratIndEntry] JannoRows) forall a. a -> Maybe a Just (JannoRows -> Either [EigenstratIndEntry] JannoRows forall a b. b -> Either a b Right JannoRows -newJanno)) SeqSourceRows -relevantSeqSourceRows [BibEntry] -relevantBibEntries - let pac :: PoseidonPackage -pac = PoseidonPackage -normalPac { - posPacNameAndVersion :: PacNameAndVersion +newJanno)) SeqSourceRows +relevantSeqSourceRows [BibEntry] +relevantBibEntries + let pac :: PoseidonPackage +pac = PoseidonPackage +normalPac { + posPacNameAndVersion :: PacNameAndVersion posPacNameAndVersion = (PoseidonPackage -> PacNameAndVersion posPacNameAndVersion PoseidonPackage -pacSource) {panavName :: [Char] +pacSource) {panavName :: [Char] panavName = [Char] -outName} - , posPacDescription :: Maybe [Char] +outName} + , posPacDescription :: Maybe [Char] posPacDescription = PoseidonPackage -> Maybe [Char] posPacDescription PoseidonPackage -pacSource - , posPacLastModified :: Maybe Day +pacSource + , posPacLastModified :: Maybe Day posPacLastModified = PoseidonPackage -> Maybe Day posPacLastModified PoseidonPackage -pacSource - , posPacContributor :: [ContributorSpec] +pacSource + , posPacContributor :: [ContributorSpec] posPacContributor = PoseidonPackage -> [ContributorSpec] posPacContributor PoseidonPackage -pacSource - , posPacReadmeFile :: Maybe [Char] +pacSource + , posPacReadmeFile :: Maybe [Char] posPacReadmeFile = PoseidonPackage -> Maybe [Char] posPacReadmeFile PoseidonPackage -pacSource - , posPacChangelogFile :: Maybe [Char] +pacSource + , posPacChangelogFile :: Maybe [Char] posPacChangelogFile = PoseidonPackage -> Maybe [Char] posPacChangelogFile PoseidonPackage -pacSource - } - PoseidonPackage -> PoseidonIO () -writePoseidonYmlFile PoseidonPackage -pac - [Char] -> [Char] -> SeqSourceRows -> PoseidonIO () -writeSSFile [Char] -outPath [Char] -outName SeqSourceRows -relevantSeqSourceRows - [Char] -> [Char] -> [BibEntry] -> PoseidonIO () -writeBibFile [Char] -outPath [Char] -outName [BibEntry] -relevantBibEntries - [Char] -> PoseidonPackage -> PoseidonIO () -copyREADMEFile [Char] -outPath PoseidonPackage -pacSource - [Char] -> PoseidonPackage -> PoseidonIO () -copyCHANGELOGFile [Char] -outPath PoseidonPackage -pacSource - IOVector Int -newNrSnps <- [Char] +pacSource + } + PoseidonPackage -> PoseidonIO () +writePoseidonYmlFile PoseidonPackage +pac + [Char] -> [Char] -> SeqSourceRows -> PoseidonIO () +writeSSFile [Char] +outPath [Char] +outName SeqSourceRows +relevantSeqSourceRows + [Char] -> [Char] -> [BibEntry] -> PoseidonIO () +writeBibFile [Char] +outPath [Char] +outName [BibEntry] +relevantBibEntries + [Char] -> PoseidonPackage -> PoseidonIO () +copyREADMEFile [Char] +outPath PoseidonPackage +pacSource + [Char] -> PoseidonPackage -> PoseidonIO () +copyCHANGELOGFile [Char] +outPath PoseidonPackage +pacSource + IOVector Int +newNrSnps <- [Char] -> ([Char], [Char], [Char]) -> [PoseidonPackage] -> [Int] -> PoseidonIO (IOVector Int) -compileGenotypeData [Char] -outPath ([Char] -outInd, [Char] -outSnp, [Char] -outGeno) [PoseidonPackage] -relevantPackages [Int] -relevantIndices - [Char] -> [Char] -> IOVector Int -> [JannoRow] -> PoseidonIO () -writingJannoFile [Char] -outPath [Char] -outName IOVector Int -newNrSnps [JannoRow] -relevantJannoRows - ForgeOutMode +compileGenotypeData [Char] +outPath ([Char] +outInd, [Char] +outSnp, [Char] +outGeno) [PoseidonPackage] +relevantPackages [Int] +relevantIndices + [Char] -> [Char] -> IOVector Int -> [JannoRow] -> PoseidonIO () +writingJannoFile [Char] +outPath [Char] +outName IOVector Int +newNrSnps [JannoRow] +relevantJannoRows + ForgeOutMode NormalOut -> do - PoseidonPackage -pac <- [Char] + PoseidonPackage +pac <- [Char] -> [Char] -> GenotypeDataSpec -> Maybe (Either [EigenstratIndEntry] JannoRows) @@ -796,261 +798,261 @@ -> [BibEntry] -> ReaderT Env IO PoseidonPackage newPackageTemplate [Char] -outPath [Char] -outName GenotypeDataSpec -genotypeData - (Either [EigenstratIndEntry] JannoRows +outPath [Char] +outName GenotypeDataSpec +genotypeData + (Either [EigenstratIndEntry] JannoRows -> Maybe (Either [EigenstratIndEntry] JannoRows) forall a. a -> Maybe a Just (JannoRows -> Either [EigenstratIndEntry] JannoRows forall a b. b -> Either a b Right JannoRows -newJanno)) SeqSourceRows -relevantSeqSourceRows [BibEntry] -relevantBibEntries - PoseidonPackage -> PoseidonIO () -writePoseidonYmlFile PoseidonPackage -pac - [Char] -> [Char] -> SeqSourceRows -> PoseidonIO () -writeSSFile [Char] -outPath [Char] -outName SeqSourceRows -relevantSeqSourceRows - [Char] -> [Char] -> [BibEntry] -> PoseidonIO () -writeBibFile [Char] -outPath [Char] -outName [BibEntry] -relevantBibEntries - IOVector Int -newNrSnps <- [Char] +newJanno)) SeqSourceRows +relevantSeqSourceRows [BibEntry] +relevantBibEntries + PoseidonPackage -> PoseidonIO () +writePoseidonYmlFile PoseidonPackage +pac + [Char] -> [Char] -> SeqSourceRows -> PoseidonIO () +writeSSFile [Char] +outPath [Char] +outName SeqSourceRows +relevantSeqSourceRows + [Char] -> [Char] -> [BibEntry] -> PoseidonIO () +writeBibFile [Char] +outPath [Char] +outName [BibEntry] +relevantBibEntries + IOVector Int +newNrSnps <- [Char] -> ([Char], [Char], [Char]) -> [PoseidonPackage] -> [Int] -> PoseidonIO (IOVector Int) -compileGenotypeData [Char] -outPath ([Char] -outInd, [Char] -outSnp, [Char] -outGeno) [PoseidonPackage] -relevantPackages [Int] -relevantIndices - [Char] -> [Char] -> IOVector Int -> [JannoRow] -> PoseidonIO () -writingJannoFile [Char] -outPath [Char] -outName IOVector Int -newNrSnps [JannoRow] -relevantJannoRows - - where - -- individual writer functions -- - writePoseidonYmlFile :: PoseidonPackage -> PoseidonIO () - writePoseidonYmlFile :: PoseidonPackage -> PoseidonIO () -writePoseidonYmlFile PoseidonPackage -pac = do - [Char] -> PoseidonIO () +compileGenotypeData [Char] +outPath ([Char] +outInd, [Char] +outSnp, [Char] +outGeno) [PoseidonPackage] +relevantPackages [Int] +relevantIndices + [Char] -> [Char] -> IOVector Int -> [JannoRow] -> PoseidonIO () +writingJannoFile [Char] +outPath [Char] +outName IOVector Int +newNrSnps [JannoRow] +relevantJannoRows + + where + -- individual writer functions -- + writePoseidonYmlFile :: PoseidonPackage -> PoseidonIO () + writePoseidonYmlFile :: PoseidonPackage -> PoseidonIO () +writePoseidonYmlFile PoseidonPackage +pac = do + [Char] -> PoseidonIO () logInfo [Char] "Creating POSEIDON.yml" - IO () -> PoseidonIO () + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ PoseidonPackage -> IO () writePoseidonPackage PoseidonPackage -pac - writeSSFile :: FilePath -> String -> SeqSourceRows -> PoseidonIO () - writeSSFile :: [Char] -> [Char] -> SeqSourceRows -> PoseidonIO () -writeSSFile [Char] -outPath [Char] -outName SeqSourceRows -rows = do - Bool -> PoseidonIO () -> PoseidonIO () +pac + writeSSFile :: FilePath -> String -> SeqSourceRows -> PoseidonIO () + writeSSFile :: [Char] -> [Char] -> SeqSourceRows -> PoseidonIO () +writeSSFile [Char] +outPath [Char] +outName SeqSourceRows +rows = do + Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless ([SeqSourceRow] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null (SeqSourceRows -> [SeqSourceRow] getSeqSourceRowList SeqSourceRows -rows)) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +rows)) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do - [Char] -> PoseidonIO () + [Char] -> PoseidonIO () logInfo [Char] "Creating .ssf file" - IO () -> PoseidonIO () + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ [Char] -> SeqSourceRows -> IO () writeSeqSourceFile ([Char] -outPath [Char] -> [Char] -> [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] "ssf") SeqSourceRows -rows - writeBibFile :: FilePath -> String -> BibTeX -> PoseidonIO () - writeBibFile :: [Char] -> [Char] -> [BibEntry] -> PoseidonIO () -writeBibFile [Char] -outPath [Char] -outName [BibEntry] -entries = do - Bool -> PoseidonIO () -> PoseidonIO () +rows + writeBibFile :: FilePath -> String -> BibTeX -> PoseidonIO () + writeBibFile :: [Char] -> [Char] -> [BibEntry] -> PoseidonIO () +writeBibFile [Char] +outPath [Char] +outName [BibEntry] +entries = do + Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless ([BibEntry] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [BibEntry] -entries) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +entries) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do - [Char] -> PoseidonIO () + [Char] -> PoseidonIO () logInfo [Char] "Creating .bib file" - IO () -> PoseidonIO () + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ [Char] -> [BibEntry] -> IO () writeBibTeXFile ([Char] -outPath [Char] -> [Char] -> [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] "bib") [BibEntry] -entries - copyREADMEFile :: FilePath -> PoseidonPackage -> PoseidonIO () - copyREADMEFile :: [Char] -> PoseidonPackage -> PoseidonIO () -copyREADMEFile [Char] -outPath PoseidonPackage -pacSource = do - case PoseidonPackage -> Maybe [Char] +entries + copyREADMEFile :: FilePath -> PoseidonPackage -> PoseidonIO () + copyREADMEFile :: [Char] -> PoseidonPackage -> PoseidonIO () +copyREADMEFile [Char] +outPath PoseidonPackage +pacSource = do + case PoseidonPackage -> Maybe [Char] posPacReadmeFile PoseidonPackage -pacSource of - Maybe [Char] +pacSource of + Maybe [Char] Nothing -> () -> PoseidonIO () forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return () - (Just [Char] -path) -> do - [Char] -> PoseidonIO () + (Just [Char] +path) -> do + [Char] -> PoseidonIO () logInfo [Char] "Copying README file from source package" - let fullSourcePath :: [Char] -fullSourcePath = PoseidonPackage -> [Char] + let fullSourcePath :: [Char] +fullSourcePath = PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pacSource [Char] -> [Char] -> [Char] +pacSource [Char] -> [Char] -> [Char] </> [Char] -path - IO () -> PoseidonIO () +path + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ [Char] -> Maybe [Char] -> IO () checkFile [Char] -fullSourcePath Maybe [Char] +fullSourcePath Maybe [Char] forall a. Maybe a Nothing - IO () -> PoseidonIO () + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ [Char] -> [Char] -> IO () copyFile [Char] -fullSourcePath ([Char] -> IO ()) -> [Char] -> IO () +fullSourcePath ([Char] -> IO ()) -> [Char] -> IO () forall a b. (a -> b) -> a -> b $ [Char] -outPath [Char] -> [Char] -> [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -path - copyCHANGELOGFile :: FilePath -> PoseidonPackage -> PoseidonIO () - copyCHANGELOGFile :: [Char] -> PoseidonPackage -> PoseidonIO () -copyCHANGELOGFile [Char] -outPath PoseidonPackage -pacSource = do - case PoseidonPackage -> Maybe [Char] +path + copyCHANGELOGFile :: FilePath -> PoseidonPackage -> PoseidonIO () + copyCHANGELOGFile :: [Char] -> PoseidonPackage -> PoseidonIO () +copyCHANGELOGFile [Char] +outPath PoseidonPackage +pacSource = do + case PoseidonPackage -> Maybe [Char] posPacChangelogFile PoseidonPackage -pacSource of - Maybe [Char] +pacSource of + Maybe [Char] Nothing -> () -> PoseidonIO () forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return () - (Just [Char] -path) -> do - [Char] -> PoseidonIO () + (Just [Char] +path) -> do + [Char] -> PoseidonIO () logInfo [Char] "Copying CHANGELOG file from source package" - let fullSourcePath :: [Char] -fullSourcePath = PoseidonPackage -> [Char] + let fullSourcePath :: [Char] +fullSourcePath = PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pacSource [Char] -> [Char] -> [Char] +pacSource [Char] -> [Char] -> [Char] </> [Char] -path - IO () -> PoseidonIO () +path + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ [Char] -> Maybe [Char] -> IO () checkFile [Char] -fullSourcePath Maybe [Char] +fullSourcePath Maybe [Char] forall a. Maybe a Nothing - IO () -> PoseidonIO () + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ [Char] -> [Char] -> IO () copyFile [Char] -fullSourcePath ([Char] -> IO ()) -> [Char] -> IO () +fullSourcePath ([Char] -> IO ()) -> [Char] -> IO () forall a b. (a -> b) -> a -> b $ [Char] -outPath [Char] -> [Char] -> [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -path - compileGenotypeData :: FilePath -> (String,String,String) -> [PoseidonPackage] -> [Int] -> PoseidonIO (VUM.IOVector Int) - compileGenotypeData :: [Char] +path + compileGenotypeData :: FilePath -> (String,String,String) -> [PoseidonPackage] -> [Int] -> PoseidonIO (VUM.IOVector Int) + compileGenotypeData :: [Char] -> ([Char], [Char], [Char]) -> [PoseidonPackage] -> [Int] -> PoseidonIO (IOVector Int) -compileGenotypeData [Char] -outPath ([Char] -outInd, [Char] -outSnp, [Char] -outGeno) [PoseidonPackage] -relevantPackages [Int] -relevantIndices = do - [Char] -> PoseidonIO () +compileGenotypeData [Char] +outPath ([Char] +outInd, [Char] +outSnp, [Char] +outGeno) [PoseidonPackage] +relevantPackages [Int] +relevantIndices = do + [Char] -> PoseidonIO () logInfo [Char] "Compiling genotype data" - [Char] -> PoseidonIO () + [Char] -> PoseidonIO () logInfo [Char] "Processing SNPs..." - LogA -logA <- PoseidonIO LogA + LogA +logA <- PoseidonIO LogA envLogAction - PlinkPopNameMode -inPlinkPopMode <- PoseidonIO PlinkPopNameMode + PlinkPopNameMode +inPlinkPopMode <- PoseidonIO PlinkPopNameMode envInputPlinkMode - UTCTime -currentTime <- IO UTCTime -> ReaderT Env IO UTCTime + UTCTime +currentTime <- IO UTCTime -> ReaderT Env IO UTCTime forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO UTCTime getCurrentTime - ErrorLength -errLength <- PoseidonIO ErrorLength + ErrorLength +errLength <- PoseidonIO ErrorLength envErrorLength - IOVector Int -newNrSNPs <- IO (IOVector Int) -> PoseidonIO (IOVector Int) + IOVector Int +newNrSNPs <- IO (IOVector Int) -> PoseidonIO (IOVector Int) forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO (IOVector Int) -> PoseidonIO (IOVector Int)) @@ -1060,7 +1062,7 @@ -> (SomeException -> IO (IOVector Int)) -> IO (IOVector Int) forall e a. Exception e => IO a -> (e -> IO a) -> IO a catch ( - SafeT IO (IOVector Int) -> IO (IOVector Int) + SafeT IO (IOVector Int) -> IO (IOVector Int) forall (m :: * -> *) r. (MonadMask m, MonadIO m) => SafeT m r -> m r @@ -1068,9 +1070,9 @@ -> SafeT IO (IOVector Int) -> IO (IOVector Int) forall a b. (a -> b) -> a -> b $ do - ([EigenstratIndEntry] -eigenstratIndEntries, Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -eigenstratProd) <- LogA + ([EigenstratIndEntry] +eigenstratIndEntries, Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +eigenstratProd) <- LogA -> Bool -> PlinkPopNameMode -> [PoseidonPackage] @@ -1089,36 +1091,36 @@ -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) getJointGenotypeData LogA -logA Bool -intersect_ PlinkPopNameMode -inPlinkPopMode [PoseidonPackage] -relevantPackages Maybe [Char] -maybeSnpFile - let newEigenstratIndEntries :: [EigenstratIndEntry] -newEigenstratIndEntries = (Int -> EigenstratIndEntry) -> [Int] -> [EigenstratIndEntry] +logA Bool +intersect_ PlinkPopNameMode +inPlinkPopMode [PoseidonPackage] +relevantPackages Maybe [Char] +maybeSnpFile + let newEigenstratIndEntries :: [EigenstratIndEntry] +newEigenstratIndEntries = (Int -> EigenstratIndEntry) -> [Int] -> [EigenstratIndEntry] forall a b. (a -> b) -> [a] -> [b] map ([EigenstratIndEntry] -eigenstratIndEntries [EigenstratIndEntry] -> Int -> EigenstratIndEntry +eigenstratIndEntries [EigenstratIndEntry] -> Int -> EigenstratIndEntry forall a. HasCallStack => [a] -> Int -> a !!) [Int] -relevantIndices - let ([Char] -outG, [Char] -outS, [Char] -outI) = ([Char] -outPath [Char] -> [Char] -> [Char] +relevantIndices + let ([Char] +outG, [Char] +outS, [Char] +outI) = ([Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outGeno, [Char] -outPath [Char] -> [Char] -> [Char] +outGeno, [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outSnp, [Char] -outPath [Char] -> [Char] -> [Char] +outSnp, [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outInd) - let outConsumer :: Consumer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -outConsumer = case GenotypeFormatSpec -outFormat of - GenotypeFormatSpec +outInd) + let outConsumer :: Consumer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +outConsumer = case GenotypeFormatSpec +outFormat of + GenotypeFormatSpec GenotypeFormatEigenstrat -> [Char] -> [Char] -> [Char] @@ -1132,11 +1134,11 @@ -> [EigenstratIndEntry] -> Consumer (EigenstratSnpEntry, GenoLine) m () writeEigenstrat [Char] -outG [Char] -outS [Char] -outI [EigenstratIndEntry] -newEigenstratIndEntries - GenotypeFormatSpec +outG [Char] +outS [Char] +outI [EigenstratIndEntry] +newEigenstratIndEntries + GenotypeFormatSpec GenotypeFormatPlink -> [Char] -> [Char] -> [Char] @@ -1150,22 +1152,22 @@ -> [PlinkFamEntry] -> Consumer (EigenstratSnpEntry, GenoLine) m () writePlink [Char] -outG [Char] -outS [Char] -outI ((EigenstratIndEntry -> PlinkFamEntry) +outG [Char] +outS [Char] +outI ((EigenstratIndEntry -> PlinkFamEntry) -> [EigenstratIndEntry] -> [PlinkFamEntry] forall a b. (a -> b) -> [a] -> [b] map (PlinkPopNameMode -> EigenstratIndEntry -> PlinkFamEntry eigenstratInd2PlinkFam PlinkPopNameMode -outPlinkPopMode) [EigenstratIndEntry] -newEigenstratIndEntries) - let extractPipe :: Pipe +outPlinkPopMode) [EigenstratIndEntry] +newEigenstratIndEntries) + let extractPipe :: Pipe (EigenstratSnpEntry, GenoLine) (EigenstratSnpEntry, GenoLine) (SafeT IO) r -extractPipe = if Bool -packageWise then Pipe +extractPipe = if Bool +packageWise then Pipe (EigenstratSnpEntry, GenoLine) (EigenstratSnpEntry, GenoLine) (SafeT IO) @@ -1181,12 +1183,12 @@ P.map ([Int] -> (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) selectIndices [Int] -relevantIndices) - -- define main forge pipe including file output. - -- The final tee forwards the results to be used in the snpCounting-fold - let forgePipe :: Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -forgePipe = Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -eigenstratProd Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +relevantIndices) + -- define main forge pipe including file output. + -- The final tee forwards the results to be used in the snpCounting-fold + let forgePipe :: Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +forgePipe = Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +eigenstratProd Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -> Proxy () (EigenstratSnpEntry, GenoLine) @@ -1199,7 +1201,7 @@ Functor m => Proxy a' a () b m r -> Proxy () b c' c m r -> Proxy a' a c' c m r >-> - LogA + LogA -> UTCTime -> Proxy () @@ -1212,8 +1214,8 @@ MonadIO m => LogA -> UTCTime -> Pipe a a m () printSNPCopyProgress LogA -logA UTCTime -currentTime Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +logA UTCTime +currentTime Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -> Proxy () (EigenstratSnpEntry, GenoLine) @@ -1226,7 +1228,7 @@ Functor m => Proxy a' a () b m r -> Proxy () b c' c m r -> Proxy a' a c' c m r >-> - Proxy + Proxy () (EigenstratSnpEntry, GenoLine) () @@ -1239,7 +1241,7 @@ (EigenstratSnpEntry, GenoLine) (SafeT IO) r -extractPipe Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +extractPipe Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -> Proxy () (EigenstratSnpEntry, GenoLine) @@ -1252,7 +1254,7 @@ Functor m => Proxy a' a () b m r -> Proxy () b c' c m r -> Proxy a' a c' c m r >-> - Consumer (EigenstratSnpEntry, GenoLine) (SafeT IO) () + Consumer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -> Proxy () (EigenstratSnpEntry, GenoLine) @@ -1262,9 +1264,9 @@ () forall (m :: * -> *) a r. Monad m => Consumer a m r -> Pipe a a m r P.tee Consumer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -outConsumer - let startAcc :: SafeT IO (IOVector Int) -startAcc = IO (IOVector Int) -> SafeT IO (IOVector Int) +outConsumer + let startAcc :: SafeT IO (IOVector Int) +startAcc = IO (IOVector Int) -> SafeT IO (IOVector Int) forall a. IO a -> SafeT IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO (IOVector Int) -> SafeT IO (IOVector Int)) @@ -1278,9 +1280,9 @@ forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [EigenstratIndEntry] -newEigenstratIndEntries) Int +newEigenstratIndEntries) Int 0 - (IOVector Int + (IOVector Int -> (EigenstratSnpEntry, GenoLine) -> SafeT IO (IOVector Int)) -> SafeT IO (IOVector Int) -> (IOVector Int -> SafeT IO (IOVector Int)) @@ -1292,12 +1294,12 @@ P.foldM IOVector Int -> (EigenstratSnpEntry, GenoLine) -> SafeT IO (IOVector Int) sumNonMissingSNPs SafeT IO (IOVector Int) -startAcc IOVector Int -> SafeT IO (IOVector Int) +startAcc IOVector Int -> SafeT IO (IOVector Int) forall a. a -> SafeT IO a forall (m :: * -> *) a. Monad m => a -> m a return Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -forgePipe - ) (PoseidonException -> IO (IOVector Int) +forgePipe + ) (PoseidonException -> IO (IOVector Int) forall e a. Exception e => e -> IO a throwIO (PoseidonException -> IO (IOVector Int)) -> (SomeException -> PoseidonException) @@ -1306,27 +1308,27 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . ErrorLength -> SomeException -> PoseidonException PoseidonGenotypeExceptionForward ErrorLength -errLength) - [Char] -> PoseidonIO () +errLength) + [Char] -> PoseidonIO () logInfo [Char] "Done" - IOVector Int -> PoseidonIO (IOVector Int) + IOVector Int -> PoseidonIO (IOVector Int) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return IOVector Int -newNrSNPs - writingJannoFile :: FilePath -> String -> (VUM.MVector VUM.RealWorld Int) -> [JannoRow] -> PoseidonIO () - writingJannoFile :: [Char] -> [Char] -> IOVector Int -> [JannoRow] -> PoseidonIO () -writingJannoFile [Char] -outPath [Char] -outName IOVector Int -newNrSNPs [JannoRow] -rows = do - [Char] -> PoseidonIO () +newNrSNPs + writingJannoFile :: FilePath -> String -> (VUM.MVector VUM.RealWorld Int) -> [JannoRow] -> PoseidonIO () + writingJannoFile :: [Char] -> [Char] -> IOVector Int -> [JannoRow] -> PoseidonIO () +writingJannoFile [Char] +outPath [Char] +outName IOVector Int +newNrSNPs [JannoRow] +rows = do + [Char] -> PoseidonIO () logInfo [Char] "Creating .janno file" - Vector Int -snpList <- IO (Vector Int) -> ReaderT Env IO (Vector Int) + Vector Int +snpList <- IO (Vector Int) -> ReaderT Env IO (Vector Int) forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO (Vector Int) -> ReaderT Env IO (Vector Int)) @@ -1338,46 +1340,47 @@ MVector (PrimState m) a -> m (Vector a) VU.freeze IOVector Int MVector (PrimState IO) Int -newNrSNPs - let jannoRowsWithNewSNPNumbers :: [JannoRow] -jannoRowsWithNewSNPNumbers = - (JannoRow -> Int -> JannoRow) -> [JannoRow] -> [Int] -> [JannoRow] +newNrSNPs + let jannoRowsWithNewSNPNumbers :: [JannoRow] +jannoRowsWithNewSNPNumbers = + (JannoRow -> Int -> JannoRow) -> [JannoRow] -> [Int] -> [JannoRow] forall a b c. (a -> b -> c) -> [a] -> [b] -> [c] -zipWith (\JannoRow -x Int -y -> JannoRow -x {jNrSNPs :: Maybe Int -jNrSNPs = Int -> Maybe Int +zipWith (\JannoRow +x Int +y -> JannoRow +x {jNrSNPs :: Maybe JannoNrSNPs +jNrSNPs = JannoNrSNPs -> Maybe JannoNrSNPs forall a. a -> Maybe a -Just Int -y}) [JannoRow] -rows (Vector Int -> [Int] +Just (Int -> JannoNrSNPs +JannoNrSNPs Int +y)}) [JannoRow] +rows (Vector Int -> [Int] forall a. Unbox a => Vector a -> [a] VU.toList Vector Int -snpList) - IO () -> PoseidonIO () +snpList) + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ [Char] -> JannoRows -> IO () writeJannoFile ([Char] -outPath [Char] -> [Char] -> [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] "janno") ([JannoRow] -> JannoRows JannoRows [JannoRow] -jannoRowsWithNewSNPNumbers) - -sumNonMissingSNPs :: VUM.IOVector Int -> (EigenstratSnpEntry, GenoLine) -> SafeT IO (VUM.IOVector Int) -sumNonMissingSNPs :: IOVector Int +jannoRowsWithNewSNPNumbers) + +sumNonMissingSNPs :: VUM.IOVector Int -> (EigenstratSnpEntry, GenoLine) -> SafeT IO (VUM.IOVector Int) +sumNonMissingSNPs :: IOVector Int -> (EigenstratSnpEntry, GenoLine) -> SafeT IO (IOVector Int) -sumNonMissingSNPs IOVector Int -accumulator (EigenstratSnpEntry -_, GenoLine -geno) = do - [(GenoEntry, Int)] +sumNonMissingSNPs IOVector Int +accumulator (EigenstratSnpEntry +_, GenoLine +geno) = do + [(GenoEntry, Int)] -> ((GenoEntry, Int) -> SafeT IO ()) -> SafeT IO () forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => @@ -1387,155 +1390,167 @@ zip (GenoLine -> [GenoEntry] forall a. Vector a -> [a] V.toList GenoLine -geno) [Int +geno) [Int 0..]) (((GenoEntry, Int) -> SafeT IO ()) -> SafeT IO ()) -> ((GenoEntry, Int) -> SafeT IO ()) -> SafeT IO () forall a b. (a -> b) -> a -> b -$ \(GenoEntry -g, Int -i) -> do - let x :: Int -x = GenoEntry -> Int -nonMissingToInt GenoEntry -g - MVector (PrimState (SafeT IO)) Int +$ \(GenoEntry +g, Int +i) -> do + let x :: Int +x = GenoEntry -> Int +nonMissingToInt GenoEntry +g + MVector (PrimState (SafeT IO)) Int -> (Int -> Int) -> Int -> SafeT IO () forall (m :: * -> *) a. (PrimMonad m, Unbox a) => MVector (PrimState m) a -> (a -> a) -> Int -> m () VUM.modify IOVector Int MVector (PrimState (SafeT IO)) Int -accumulator (Int -> Int -> Int +accumulator (Int -> Int -> Int forall a. Num a => a -> a -> a +Int -x) Int -i - IOVector Int -> SafeT IO (IOVector Int) +x) Int +i + IOVector Int -> SafeT IO (IOVector Int) forall a. a -> SafeT IO a forall (m :: * -> *) a. Monad m => a -> m a return IOVector Int -accumulator - where - nonMissingToInt :: GenoEntry -> Int - nonMissingToInt :: GenoEntry -> Int -nonMissingToInt GenoEntry -x - | GenoEntry -x GenoEntry -> GenoEntry -> Bool +accumulator + where + nonMissingToInt :: GenoEntry -> Int + nonMissingToInt :: GenoEntry -> Int +nonMissingToInt GenoEntry +x + | GenoEntry +x GenoEntry -> GenoEntry -> Bool forall a. Eq a => a -> a -> Bool == GenoEntry Missing = Int 0 - | Bool + | Bool otherwise = Int 1 - -filterSeqSourceRows :: JannoRows -> SeqSourceRows -> SeqSourceRows -filterSeqSourceRows :: JannoRows -> SeqSourceRows -> SeqSourceRows -filterSeqSourceRows (JannoRows [JannoRow] -jRows) (SeqSourceRows [SeqSourceRow] -sRows) = - let desiredPoseidonIDs :: [[Char]] -desiredPoseidonIDs = (JannoRow -> [Char]) -> [JannoRow] -> [[Char]] + +filterSeqSourceRows :: JannoRows -> SeqSourceRows -> SeqSourceRows +filterSeqSourceRows :: JannoRows -> SeqSourceRows -> SeqSourceRows +filterSeqSourceRows (JannoRows [JannoRow] +jRows) (SeqSourceRows [SeqSourceRow] +sRows) = + let desiredPoseidonIDs :: [[Char]] +desiredPoseidonIDs = (JannoRow -> [Char]) -> [JannoRow] -> [[Char]] forall a b. (a -> b) -> [a] -> [b] map JannoRow -> [Char] jPoseidonID [JannoRow] -jRows - in [SeqSourceRow] -> SeqSourceRows +jRows + in [SeqSourceRow] -> SeqSourceRows SeqSourceRows ([SeqSourceRow] -> SeqSourceRows) -> [SeqSourceRow] -> SeqSourceRows forall a b. (a -> b) -> a -> b $ (SeqSourceRow -> Bool) -> [SeqSourceRow] -> [SeqSourceRow] forall a. (a -> Bool) -> [a] -> [a] filter ([[Char]] -> SeqSourceRow -> Bool -hasAPoseidonID [[Char]] -desiredPoseidonIDs) [SeqSourceRow] -sRows - where - hasAPoseidonID :: [String] -> SeqSourceRow -> Bool - hasAPoseidonID :: [[Char]] -> SeqSourceRow -> Bool -hasAPoseidonID [[Char]] -jIDs SeqSourceRow -seqSourceRow = - let sIDs :: [[Char]] -sIDs = Maybe (JannoList [Char]) -> [[Char]] -forall a. Maybe (JannoList a) -> [a] -getMaybeJannoList (Maybe (JannoList [Char]) -> [[Char]]) --> Maybe (JannoList [Char]) -> [[Char]] +hasAPoseidonID [[Char]] +desiredPoseidonIDs) [SeqSourceRow] +sRows + where + hasAPoseidonID :: [String] -> SeqSourceRow -> Bool + hasAPoseidonID :: [[Char]] -> SeqSourceRow -> Bool +hasAPoseidonID [[Char]] +jIDs SeqSourceRow +seqSourceRow = + let sIDs :: [[Char]] +sIDs = Maybe (ListColumn [Char]) -> [[Char]] +forall a. Maybe (ListColumn a) -> [a] +getMaybeListColumn (Maybe (ListColumn [Char]) -> [[Char]]) +-> Maybe (ListColumn [Char]) -> [[Char]] forall a b. (a -> b) -> a -> b -$ SeqSourceRow -> Maybe (JannoList [Char]) +$ SeqSourceRow -> Maybe (ListColumn [Char]) sPoseidonID SeqSourceRow -seqSourceRow - in ([Char] -> Bool) -> [[Char]] -> Bool +seqSourceRow + in ([Char] -> Bool) -> [[Char]] -> Bool forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any ([Char] -> [[Char]] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [[Char]] -jIDs) [[Char]] -sIDs - -filterBibEntries :: JannoRows -> BibTeX -> BibTeX -filterBibEntries :: JannoRows -> [BibEntry] -> [BibEntry] -filterBibEntries (JannoRows [JannoRow] -rows) [BibEntry] -references_ = - let relevantPublications :: [[Char]] -relevantPublications = [[Char]] -> [[Char]] +jIDs) [[Char]] +sIDs + +filterBibEntries :: JannoRows -> BibTeX -> BibTeX +filterBibEntries :: JannoRows -> [BibEntry] -> [BibEntry] +filterBibEntries (JannoRows [JannoRow] +rows) [BibEntry] +references_ = + let relevantPublications :: [[Char]] +relevantPublications = (JannoPublication -> [Char]) -> [JannoPublication] -> [[Char]] +forall a b. (a -> b) -> [a] -> [b] +map JannoPublication -> [Char] +forall a. Show a => a -> [Char] +show ([JannoPublication] -> [[Char]]) +-> ([JannoRow] -> [JannoPublication]) -> [JannoRow] -> [[Char]] +forall b c a. (b -> c) -> (a -> b) -> a -> c +. [JannoPublication] -> [JannoPublication] forall a. Eq a => [a] -> [a] -nub ([[Char]] -> [[Char]]) --> ([JannoRow] -> [[Char]]) -> [JannoRow] -> [[Char]] +nub ([JannoPublication] -> [JannoPublication]) +-> ([JannoRow] -> [JannoPublication]) +-> [JannoRow] +-> [JannoPublication] forall b c a. (b -> c) -> (a -> b) -> a -> c -. (JannoList [Char] -> [[Char]]) -> [JannoList [Char]] -> [[Char]] +. (ListColumn JannoPublication -> [JannoPublication]) +-> [ListColumn JannoPublication] -> [JannoPublication] forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] -concatMap JannoList [Char] -> [[Char]] -forall a. JannoList a -> [a] -getJannoList ([JannoList [Char]] -> [[Char]]) --> ([JannoRow] -> [JannoList [Char]]) -> [JannoRow] -> [[Char]] +concatMap ListColumn JannoPublication -> [JannoPublication] +forall a. ListColumn a -> [a] +getListColumn ([ListColumn JannoPublication] -> [JannoPublication]) +-> ([JannoRow] -> [ListColumn JannoPublication]) +-> [JannoRow] +-> [JannoPublication] forall b c a. (b -> c) -> (a -> b) -> a -> c -. (JannoRow -> Maybe (JannoList [Char])) --> [JannoRow] -> [JannoList [Char]] +. (JannoRow -> Maybe (ListColumn JannoPublication)) +-> [JannoRow] -> [ListColumn JannoPublication] forall a b. (a -> Maybe b) -> [a] -> [b] -mapMaybe JannoRow -> Maybe (JannoList [Char]) +mapMaybe JannoRow -> Maybe (ListColumn JannoPublication) jPublication ([JannoRow] -> [[Char]]) -> [JannoRow] -> [[Char]] forall a b. (a -> b) -> a -> b $ [JannoRow] -rows - in (BibEntry -> Bool) -> [BibEntry] -> [BibEntry] +rows + in (BibEntry -> Bool) -> [BibEntry] -> [BibEntry] forall a. (a -> Bool) -> [a] -> [a] -filter (\BibEntry -x-> BibEntry -> [Char] +filter (\BibEntry +x-> BibEntry -> [Char] bibEntryId BibEntry -x [Char] -> [[Char]] -> Bool +x [Char] -> [[Char]] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [[Char]] -relevantPublications) [BibEntry] -references_ - -fillMissingSnpSets :: [PoseidonPackage] -> PoseidonIO [SNPSetSpec] -fillMissingSnpSets :: [PoseidonPackage] -> PoseidonIO [SNPSetSpec] -fillMissingSnpSets [PoseidonPackage] -packages = [PoseidonPackage] +relevantPublications) [BibEntry] +references_ + +fillMissingSnpSets :: [PoseidonPackage] -> PoseidonIO [SNPSetSpec] +fillMissingSnpSets :: [PoseidonPackage] -> PoseidonIO [SNPSetSpec] +fillMissingSnpSets [PoseidonPackage] +packages = [PoseidonPackage] -> (PoseidonPackage -> ReaderT Env IO SNPSetSpec) -> PoseidonIO [SNPSetSpec] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM [PoseidonPackage] -packages ((PoseidonPackage -> ReaderT Env IO SNPSetSpec) +packages ((PoseidonPackage -> ReaderT Env IO SNPSetSpec) -> PoseidonIO [SNPSetSpec]) -> (PoseidonPackage -> ReaderT Env IO SNPSetSpec) -> PoseidonIO [SNPSetSpec] forall a b. (a -> b) -> a -> b -$ \PoseidonPackage -pac -> do - let pac_ :: PacNameAndVersion -pac_ = PoseidonPackage -> PacNameAndVersion +$ \PoseidonPackage +pac -> do + let pac_ :: PacNameAndVersion +pac_ = PoseidonPackage -> PacNameAndVersion posPacNameAndVersion PoseidonPackage -pac - maybeSnpSet :: Maybe SNPSetSpec -maybeSnpSet = GenotypeDataSpec -> Maybe SNPSetSpec +pac + maybeSnpSet :: Maybe SNPSetSpec +maybeSnpSet = GenotypeDataSpec -> Maybe SNPSetSpec snpSet (GenotypeDataSpec -> Maybe SNPSetSpec) -> (PoseidonPackage -> GenotypeDataSpec) -> PoseidonPackage @@ -1546,18 +1561,18 @@ -> PoseidonPackage -> Maybe SNPSetSpec forall a b. (a -> b) -> a -> b $ PoseidonPackage -pac - case Maybe SNPSetSpec -maybeSnpSet of - Just SNPSetSpec -s -> SNPSetSpec -> ReaderT Env IO SNPSetSpec +pac + case Maybe SNPSetSpec +maybeSnpSet of + Just SNPSetSpec +s -> SNPSetSpec -> ReaderT Env IO SNPSetSpec forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return SNPSetSpec -s - Maybe SNPSetSpec +s + Maybe SNPSetSpec Nothing -> do - [Char] -> PoseidonIO () + [Char] -> PoseidonIO () logWarning ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b $ [Char] @@ -1566,14 +1581,14 @@ ++ PacNameAndVersion -> [Char] forall a. Show a => a -> [Char] show PacNameAndVersion -pac_ [Char] -> [Char] -> [Char] +pac_ [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] ": field \"snpSet\" \ \is not set. I will interpret this as \"snpSet: Other\"" - SNPSetSpec -> ReaderT Env IO SNPSetSpec + SNPSetSpec -> ReaderT Env IO SNPSetSpec forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return SNPSetSpec SNPSetOther - \ No newline at end of file + \ No newline at end of file diff --git a/src/Poseidon.CLI.Genoconvert.html b/src/Poseidon.CLI.Genoconvert.html index 2cfccb89..a31590ee 100644 --- a/src/Poseidon.CLI.Genoconvert.html +++ b/src/Poseidon.CLI.Genoconvert.html @@ -53,16 +53,16 @@ runGenoconvert :: GenoconvertOptions -> PoseidonIO () runGenoconvert :: GenoconvertOptions -> PoseidonIO () -runGenoconvert (GenoconvertOptions [GenoDataSource] -genoSources GenotypeFormatSpec -outFormat Bool -onlyGeno Maybe [Char] -outPath Bool -removeOld PlinkPopNameMode -outPlinkPopMode Bool -onlyLatest) = do - let pacReadOpts :: PackageReadOptions -pacReadOpts = PackageReadOptions +runGenoconvert (GenoconvertOptions [GenoDataSource] +genoSources GenotypeFormatSpec +outFormat Bool +onlyGeno Maybe [Char] +outPath Bool +removeOld PlinkPopNameMode +outPlinkPopMode Bool +onlyLatest) = do + let pacReadOpts :: PackageReadOptions +pacReadOpts = PackageReadOptions defaultPackageReadOptions { _readOptIgnoreChecksums :: Bool _readOptIgnoreChecksums = Bool @@ -75,25 +75,25 @@ True , _readOptOnlyLatest :: Bool _readOptOnlyLatest = Bool -onlyLatest +onlyLatest } -- load packages - [PoseidonPackage] -properPackages <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] + [PoseidonPackage] +properPackages <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions -pacReadOpts ([[Char]] -> PoseidonIO [PoseidonPackage]) +pacReadOpts ([[Char]] -> PoseidonIO [PoseidonPackage]) -> [[Char]] -> PoseidonIO [PoseidonPackage] forall a b. (a -> b) -> a -> b $ [GenoDataSource -> [Char] getPacBaseDirs GenoDataSource -x | x :: GenoDataSource -x@PacBaseDir {} <- [GenoDataSource] -genoSources] - PlinkPopNameMode -inPlinkPopMode <- PoseidonIO PlinkPopNameMode +x | x :: GenoDataSource +x@PacBaseDir {} <- [GenoDataSource] +genoSources] + PlinkPopNameMode +inPlinkPopMode <- PoseidonIO PlinkPopNameMode envInputPlinkMode - [PoseidonPackage] -pseudoPackages <- (GenotypeDataSpec -> ReaderT Env IO PoseidonPackage) + [PoseidonPackage] +pseudoPackages <- (GenotypeDataSpec -> ReaderT Env IO PoseidonPackage) -> [GenotypeDataSpec] -> PoseidonIO [PoseidonPackage] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => @@ -102,9 +102,9 @@ mapM GenotypeDataSpec -> ReaderT Env IO PoseidonPackage makePseudoPackageFromGenotypeData [GenoDataSource -> GenotypeDataSpec getGenoDirect GenoDataSource -x | x :: GenoDataSource -x@GenoDirect {} <- [GenoDataSource] -genoSources] +x | x :: GenoDataSource +x@GenoDirect {} <- [GenoDataSource] +genoSources] [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -118,7 +118,7 @@ forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [PoseidonPackage] -pseudoPackages) +pseudoPackages) -- convert (PoseidonPackage -> PoseidonIO ()) -> [PoseidonPackage] -> PoseidonIO () @@ -134,13 +134,13 @@ -> PoseidonPackage -> PoseidonIO () convertGenoTo GenotypeFormatSpec -outFormat Bool -onlyGeno Maybe [Char] -outPath Bool -removeOld PlinkPopNameMode -inPlinkPopMode PlinkPopNameMode -outPlinkPopMode) [PoseidonPackage] -properPackages +outFormat Bool +onlyGeno Maybe [Char] +outPath Bool +removeOld PlinkPopNameMode +inPlinkPopMode PlinkPopNameMode +outPlinkPopMode) [PoseidonPackage] +properPackages (PoseidonPackage -> PoseidonIO ()) -> [PoseidonPackage] -> PoseidonIO () forall (t :: * -> *) (m :: * -> *) a b. @@ -155,13 +155,13 @@ -> PoseidonPackage -> PoseidonIO () convertGenoTo GenotypeFormatSpec -outFormat Bool +outFormat Bool True Maybe [Char] -outPath Bool -removeOld PlinkPopNameMode -inPlinkPopMode PlinkPopNameMode -outPlinkPopMode) [PoseidonPackage] -pseudoPackages +outPath Bool +removeOld PlinkPopNameMode +inPlinkPopMode PlinkPopNameMode +outPlinkPopMode) [PoseidonPackage] +pseudoPackages convertGenoTo :: GenotypeFormatSpec -> Bool -> Maybe FilePath -> Bool -> PlinkPopNameMode -> PlinkPopNameMode -> PoseidonPackage -> PoseidonIO () @@ -173,14 +173,14 @@ -> PlinkPopNameMode -> PoseidonPackage -> PoseidonIO () -convertGenoTo GenotypeFormatSpec -outFormat Bool -onlyGeno Maybe [Char] -outPath Bool -removeOld PlinkPopNameMode -inPlinkPopMode PlinkPopNameMode -outPlinkPopMode PoseidonPackage -pac = do +convertGenoTo GenotypeFormatSpec +outFormat Bool +onlyGeno Maybe [Char] +outPath Bool +removeOld PlinkPopNameMode +inPlinkPopMode PlinkPopNameMode +outPlinkPopMode PoseidonPackage +pac = do -- start message [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -194,7 +194,7 @@ forall a. Show a => a -> [Char] show (PoseidonPackage -> PacNameAndVersion posPacNameAndVersion PoseidonPackage -pac) +pac) [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] @@ -204,14 +204,14 @@ ++ GenotypeFormatSpec -> [Char] forall a. Show a => a -> [Char] show GenotypeFormatSpec -outFormat +outFormat [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] ":" -- compile file names paths - let outName :: [Char] -outName = PacNameAndVersion -> [Char] + let outName :: [Char] +outName = PacNameAndVersion -> [Char] forall a. HasNameAndVersion a => a -> [Char] getPacName (PacNameAndVersion -> [Char]) -> (PoseidonPackage -> PacNameAndVersion) @@ -222,52 +222,52 @@ posPacNameAndVersion (PoseidonPackage -> [Char]) -> PoseidonPackage -> [Char] forall a b. (a -> b) -> a -> b $ PoseidonPackage -pac - let ([Char] -outInd, [Char] -outSnp, [Char] -outGeno) = case GenotypeFormatSpec -outFormat of +pac + let ([Char] +outInd, [Char] +outSnp, [Char] +outGeno) = case GenotypeFormatSpec +outFormat of GenotypeFormatSpec GenotypeFormatEigenstrat -> ([Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] ".ind", [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] ".snp", [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] ".geno") GenotypeFormatSpec GenotypeFormatPlink -> ([Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] ".fam", [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] ".bim", [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] ".bed") -- check if genotype data needs conversion if GenotypeDataSpec -> GenotypeFormatSpec format (PoseidonPackage -> GenotypeDataSpec posPacGenotypeData PoseidonPackage -pac) GenotypeFormatSpec -> GenotypeFormatSpec -> Bool +pac) GenotypeFormatSpec -> GenotypeFormatSpec -> Bool forall a. Eq a => a -> a -> Bool == GenotypeFormatSpec -outFormat +outFormat then [Char] -> PoseidonIO () logWarning [Char] "The genotype data is already in the requested format" else do -- create new genotype data files - [Char] -newBaseDir <- case Maybe [Char] -outPath of - Just [Char] -x -> do + [Char] +newBaseDir <- case Maybe [Char] +outPath of + Just [Char] +x -> do -- create new directory [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -276,7 +276,7 @@ "Writing to directory (will be created if missing): " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -x +x IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -286,12 +286,12 @@ createDirectoryIfMissing Bool True ([Char] -> [Char] dropTrailingPathSeparator [Char] -x) +x) [Char] -> ReaderT Env IO [Char] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return [Char] -x +x Maybe [Char] Nothing -> [Char] -> ReaderT Env IO [Char] forall a. a -> ReaderT Env IO a @@ -301,22 +301,22 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac - let ([Char] -outG, [Char] -outS, [Char] -outI) = ([Char] -newBaseDir [Char] -> [Char] -> [Char] +pac + let ([Char] +outG, [Char] +outS, [Char] +outI) = ([Char] +newBaseDir [Char] -> [Char] -> [Char] </> [Char] -outGeno, [Char] -newBaseDir [Char] -> [Char] -> [Char] +outGeno, [Char] +newBaseDir [Char] -> [Char] -> [Char] </> [Char] -outSnp, [Char] -newBaseDir [Char] -> [Char] -> [Char] +outSnp, [Char] +newBaseDir [Char] -> [Char] -> [Char] </> [Char] -outInd) - Bool -anyExists <- [Bool] -> Bool +outInd) + Bool +anyExists <- [Bool] -> Bool forall (t :: * -> *). Foldable t => t Bool -> Bool or ([Bool] -> Bool) -> ReaderT Env IO [Bool] -> ReaderT Env IO Bool forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -327,12 +327,12 @@ (a -> m b) -> t a -> m (t b) forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b] mapM [Char] -> ReaderT Env IO Bool -checkFile [[Char] -outG, [Char] -outS, [Char] -outI] +checkFile [[Char] +outG, [Char] +outS, [Char] +outI] if Bool -anyExists +anyExists then [Char] -> PoseidonIO () logWarning ([Char] "skipping genotype conversion for " [Char] -> [Char] -> [Char] @@ -341,22 +341,22 @@ forall a. Show a => a -> [Char] show (PoseidonPackage -> PacNameAndVersion posPacNameAndVersion PoseidonPackage -pac)) +pac)) else do [Char] -> PoseidonIO () logInfo [Char] "Processing SNPs..." - LogA -logA <- PoseidonIO LogA + LogA +logA <- PoseidonIO LogA envLogAction - UTCTime -currentTime <- IO UTCTime -> ReaderT Env IO UTCTime + UTCTime +currentTime <- IO UTCTime -> ReaderT Env IO UTCTime forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO UTCTime getCurrentTime - ErrorLength -errLength <- PoseidonIO ErrorLength + ErrorLength +errLength <- PoseidonIO ErrorLength envErrorLength IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a @@ -373,9 +373,9 @@ runSafeT (SafeT IO () -> IO ()) -> SafeT IO () -> IO () forall a b. (a -> b) -> a -> b $ do - ([EigenstratIndEntry] -eigenstratIndEntries, Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -eigenstratProd) <- [Char] + ([EigenstratIndEntry] +eigenstratIndEntries, Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +eigenstratProd) <- [Char] -> GenotypeDataSpec -> PlinkPopNameMode -> SafeT @@ -391,13 +391,13 @@ Producer (EigenstratSnpEntry, GenoLine) m ()) loadGenotypeData (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac) (PoseidonPackage -> GenotypeDataSpec +pac) (PoseidonPackage -> GenotypeDataSpec posPacGenotypeData PoseidonPackage -pac) PlinkPopNameMode -inPlinkPopMode - let outConsumer :: Consumer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -outConsumer = case GenotypeFormatSpec -outFormat of +pac) PlinkPopNameMode +inPlinkPopMode + let outConsumer :: Consumer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +outConsumer = case GenotypeFormatSpec +outFormat of GenotypeFormatSpec GenotypeFormatEigenstrat -> [Char] -> [Char] @@ -412,10 +412,10 @@ -> [EigenstratIndEntry] -> Consumer (EigenstratSnpEntry, GenoLine) m () writeEigenstrat [Char] -outG [Char] -outS [Char] -outI [EigenstratIndEntry] -eigenstratIndEntries +outG [Char] +outS [Char] +outI [EigenstratIndEntry] +eigenstratIndEntries GenotypeFormatSpec GenotypeFormatPlink -> [Char] -> [Char] @@ -430,22 +430,22 @@ -> [PlinkFamEntry] -> Consumer (EigenstratSnpEntry, GenoLine) m () writePlink [Char] -outG [Char] -outS [Char] -outI ((EigenstratIndEntry -> PlinkFamEntry) +outG [Char] +outS [Char] +outI ((EigenstratIndEntry -> PlinkFamEntry) -> [EigenstratIndEntry] -> [PlinkFamEntry] forall a b. (a -> b) -> [a] -> [b] map (PlinkPopNameMode -> EigenstratIndEntry -> PlinkFamEntry eigenstratInd2PlinkFam PlinkPopNameMode -outPlinkPopMode) [EigenstratIndEntry] -eigenstratIndEntries) +outPlinkPopMode) [EigenstratIndEntry] +eigenstratIndEntries) Effect (SafeT IO) () -> SafeT IO () forall (m :: * -> *) r. Monad m => Effect m r -> m r runEffect (Effect (SafeT IO) () -> SafeT IO ()) -> Effect (SafeT IO) () -> SafeT IO () forall a b. (a -> b) -> a -> b $ Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -eigenstratProd Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +eigenstratProd Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -> Proxy () (EigenstratSnpEntry, GenoLine) @@ -470,15 +470,15 @@ MonadIO m => LogA -> UTCTime -> Pipe a a m () printSNPCopyProgress LogA -logA UTCTime -currentTime Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +logA UTCTime +currentTime Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -> Consumer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -> Effect (SafeT IO) () forall (m :: * -> *) a' a b r c' c. Functor m => Proxy a' a () b m r -> Proxy () b c' c m r -> Proxy a' a c' c m r >-> Consumer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -outConsumer +outConsumer ) (PoseidonException -> IO () forall e a. Exception e => e -> IO a throwIO (PoseidonException -> IO ()) @@ -486,7 +486,7 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . ErrorLength -> SomeException -> PoseidonException PoseidonGenotypeExceptionForward ErrorLength -errLength) +errLength) [Char] -> PoseidonIO () logInfo [Char] "Done" @@ -494,15 +494,15 @@ Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (Bool -onlyGeno Bool -> Bool -> Bool +onlyGeno Bool -> Bool -> Bool || Maybe [Char] -> Bool forall a. Maybe a -> Bool isJust Maybe [Char] -outPath) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +outPath) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do - let genotypeData :: GenotypeDataSpec -genotypeData = GenotypeFormatSpec + let genotypeData :: GenotypeDataSpec +genotypeData = GenotypeFormatSpec -> [Char] -> Maybe [Char] -> [Char] @@ -512,14 +512,14 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -outFormat [Char] -outGeno Maybe [Char] +outFormat [Char] +outGeno Maybe [Char] forall a. Maybe a Nothing [Char] -outSnp Maybe [Char] +outSnp Maybe [Char] forall a. Maybe a Nothing [Char] -outInd Maybe [Char] +outInd Maybe [Char] forall a. Maybe a Nothing (GenotypeDataSpec -> Maybe SNPSetSpec snpSet (GenotypeDataSpec -> Maybe SNPSetSpec) @@ -532,12 +532,12 @@ -> PoseidonPackage -> Maybe SNPSetSpec forall a b. (a -> b) -> a -> b $ PoseidonPackage -pac) - newPac :: PoseidonPackage -newPac = PoseidonPackage -pac { posPacGenotypeData :: GenotypeDataSpec +pac) + newPac :: PoseidonPackage +newPac = PoseidonPackage +pac { posPacGenotypeData :: GenotypeDataSpec posPacGenotypeData = GenotypeDataSpec -genotypeData } +genotypeData } [Char] -> PoseidonIO () logInfo [Char] "Adjusting POSEIDON.yml..." @@ -548,12 +548,12 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> IO () writePoseidonPackage PoseidonPackage -newPac +newPac -- delete now replaced input genotype data Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -removeOld (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +removeOld (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a @@ -568,44 +568,44 @@ removeFile [ PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> [Char] -> [Char] +pac [Char] -> [Char] -> [Char] </> GenotypeDataSpec -> [Char] genoFile (PoseidonPackage -> GenotypeDataSpec posPacGenotypeData PoseidonPackage -pac) +pac) , PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> [Char] -> [Char] +pac [Char] -> [Char] -> [Char] </> GenotypeDataSpec -> [Char] snpFile (PoseidonPackage -> GenotypeDataSpec posPacGenotypeData PoseidonPackage -pac) +pac) , PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> [Char] -> [Char] +pac [Char] -> [Char] -> [Char] </> GenotypeDataSpec -> [Char] indFile (PoseidonPackage -> GenotypeDataSpec posPacGenotypeData PoseidonPackage -pac) +pac) ] where - checkFile :: FilePath -> PoseidonIO Bool - checkFile :: [Char] -> ReaderT Env IO Bool -checkFile [Char] -fn = do - Bool -fe <- IO Bool -> ReaderT Env IO Bool + checkFile :: FilePath -> PoseidonIO Bool + checkFile :: [Char] -> ReaderT Env IO Bool +checkFile [Char] +fn = do + Bool +fe <- IO Bool -> ReaderT Env IO Bool forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Bool -> ReaderT Env IO Bool) -> IO Bool -> ReaderT Env IO Bool forall a b. (a -> b) -> a -> b $ [Char] -> IO Bool doesFileExist [Char] -fn +fn Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -fe (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +fe (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonIO () logWarning ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -614,7 +614,7 @@ "File " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -fn [Char] -> [Char] -> [Char] +fn [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " exists" @@ -622,5 +622,5 @@ forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return Bool -fe +fe \ No newline at end of file diff --git a/src/Poseidon.CLI.Init.html b/src/Poseidon.CLI.Init.html index c96b864f..7a182148 100644 --- a/src/Poseidon.CLI.Init.html +++ b/src/Poseidon.CLI.Init.html @@ -31,26 +31,26 @@ runInit :: InitOptions -> PoseidonIO () runInit :: InitOptions -> PoseidonIO () -runInit (InitOptions GenotypeDataSpec -gd [Char] -outPathRaw Maybe [Char] -maybeOutName Bool -minimal) = do - let (GenotypeDataSpec GenotypeFormatSpec -format_ [Char] -genoFile_ Maybe [Char] -_ [Char] -snpFile_ Maybe [Char] -_ [Char] -indFile_ Maybe [Char] -_ Maybe SNPSetSpec -snpSet_) = GenotypeDataSpec -gd +runInit (InitOptions GenotypeDataSpec +gd [Char] +outPathRaw Maybe [Char] +maybeOutName Bool +minimal) = do + let (GenotypeDataSpec GenotypeFormatSpec +format_ [Char] +genoFile_ Maybe [Char] +_ [Char] +snpFile_ Maybe [Char] +_ [Char] +indFile_ Maybe [Char] +_ Maybe SNPSetSpec +snpSet_) = GenotypeDataSpec +gd -- create new directory - let outPath :: [Char] -outPath = [Char] -> [Char] + let outPath :: [Char] +outPath = [Char] -> [Char] dropTrailingPathSeparator [Char] -outPathRaw +outPathRaw [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -58,7 +58,7 @@ "Creating new package directory: " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -outPath +outPath IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -67,22 +67,22 @@ $ Bool -> [Char] -> IO () createDirectoryIfMissing Bool True [Char] -outPath +outPath -- compile genotype data structure - let outInd :: [Char] -outInd = [Char] -> [Char] + let outInd :: [Char] +outInd = [Char] -> [Char] takeFileName [Char] -indFile_ - outSnp :: [Char] -outSnp = [Char] -> [Char] +indFile_ + outSnp :: [Char] +outSnp = [Char] -> [Char] takeFileName [Char] -snpFile_ - outGeno :: [Char] -outGeno = [Char] -> [Char] +snpFile_ + outGeno :: [Char] +outGeno = [Char] -> [Char] takeFileName [Char] -genoFile_ - genotypeData :: GenotypeDataSpec -genotypeData = GenotypeFormatSpec +genoFile_ + genotypeData :: GenotypeDataSpec +genotypeData = GenotypeFormatSpec -> [Char] -> Maybe [Char] -> [Char] @@ -92,17 +92,17 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -format_ [Char] -outGeno Maybe [Char] +format_ [Char] +outGeno Maybe [Char] forall a. Maybe a Nothing [Char] -outSnp Maybe [Char] +outSnp Maybe [Char] forall a. Maybe a Nothing [Char] -outInd Maybe [Char] +outInd Maybe [Char] forall a. Maybe a Nothing Maybe SNPSetSpec -snpSet_ +snpSet_ -- genotype data [Char] -> PoseidonIO () logInfo [Char] @@ -114,7 +114,7 @@ forall a b. (a -> b) -> a -> b $ [Char] -> Maybe [Char] -> IO () checkFile [Char] -indFile_ Maybe [Char] +indFile_ Maybe [Char] forall a. Maybe a Nothing IO () -> PoseidonIO () @@ -124,7 +124,7 @@ forall a b. (a -> b) -> a -> b $ [Char] -> Maybe [Char] -> IO () checkFile [Char] -snpFile_ Maybe [Char] +snpFile_ Maybe [Char] forall a. Maybe a Nothing IO () -> PoseidonIO () @@ -134,7 +134,7 @@ forall a b. (a -> b) -> a -> b $ [Char] -> Maybe [Char] -> IO () checkFile [Char] -genoFile_ Maybe [Char] +genoFile_ Maybe [Char] forall a. Maybe a Nothing IO () -> PoseidonIO () @@ -144,12 +144,12 @@ forall a b. (a -> b) -> a -> b $ [Char] -> [Char] -> IO () copyFile [Char] -indFile_ ([Char] -> IO ()) -> [Char] -> IO () +indFile_ ([Char] -> IO ()) -> [Char] -> IO () forall a b. (a -> b) -> a -> b $ [Char] -outPath [Char] -> [Char] -> [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outInd +outInd IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -157,12 +157,12 @@ forall a b. (a -> b) -> a -> b $ [Char] -> [Char] -> IO () copyFile [Char] -snpFile_ ([Char] -> IO ()) -> [Char] -> IO () +snpFile_ ([Char] -> IO ()) -> [Char] -> IO () forall a b. (a -> b) -> a -> b $ [Char] -outPath [Char] -> [Char] -> [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outSnp +outSnp IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -170,18 +170,18 @@ forall a b. (a -> b) -> a -> b $ [Char] -> [Char] -> IO () copyFile [Char] -genoFile_ ([Char] -> IO ()) -> [Char] -> IO () +genoFile_ ([Char] -> IO ()) -> [Char] -> IO () forall a b. (a -> b) -> a -> b $ [Char] -outPath [Char] -> [Char] -> [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outGeno +outGeno -- create new package [Char] -> PoseidonIO () logInfo [Char] "Creating new package entity" - [Char] -outName <- IO [Char] -> ReaderT Env IO [Char] + [Char] +outName <- IO [Char] -> ReaderT Env IO [Char] forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO [Char] -> ReaderT Env IO [Char]) @@ -189,16 +189,16 @@ forall a b. (a -> b) -> a -> b $ Maybe [Char] -> [Char] -> IO [Char] determinePackageOutName Maybe [Char] -maybeOutName [Char] -outPath - [EigenstratIndEntry] -inds <- [Char] -> GenotypeDataSpec -> PoseidonIO [EigenstratIndEntry] +maybeOutName [Char] +outPath + [EigenstratIndEntry] +inds <- [Char] -> GenotypeDataSpec -> PoseidonIO [EigenstratIndEntry] loadIndividuals [Char] -outPath GenotypeDataSpec -genotypeData - PoseidonPackage -pac <- if Bool -minimal +outPath GenotypeDataSpec +genotypeData + PoseidonPackage +pac <- if Bool +minimal then PoseidonPackage -> ReaderT Env IO PoseidonPackage forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -207,9 +207,9 @@ forall a b. (a -> b) -> a -> b $ [Char] -> [Char] -> GenotypeDataSpec -> PoseidonPackage newMinimalPackageTemplate [Char] -outPath [Char] -outName GenotypeDataSpec -genotypeData +outPath [Char] +outName GenotypeDataSpec +genotypeData else [Char] -> [Char] -> GenotypeDataSpec @@ -218,15 +218,15 @@ -> BibTeX -> ReaderT Env IO PoseidonPackage newPackageTemplate [Char] -outPath [Char] -outName GenotypeDataSpec -genotypeData (Either [EigenstratIndEntry] JannoRows +outPath [Char] +outName GenotypeDataSpec +genotypeData (Either [EigenstratIndEntry] JannoRows -> Maybe (Either [EigenstratIndEntry] JannoRows) forall a. a -> Maybe a Just ([EigenstratIndEntry] -> Either [EigenstratIndEntry] JannoRows forall a b. a -> Either a b Left [EigenstratIndEntry] -inds)) SeqSourceRows +inds)) SeqSourceRows forall a. Monoid a => a mempty [BibEntry dummyBibEntry] @@ -241,11 +241,11 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> IO () writePoseidonPackage PoseidonPackage -pac +pac Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -minimal (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +minimal (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do -- janno @@ -259,15 +259,15 @@ forall a b. (a -> b) -> a -> b $ [Char] -> JannoRows -> IO () writeJannoFile ([Char] -outPath [Char] -> [Char] -> [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] "janno") (JannoRows -> IO ()) -> JannoRows -> IO () forall a b. (a -> b) -> a -> b $ PoseidonPackage -> JannoRows posPacJanno PoseidonPackage -pac +pac -- bib [Char] -> PoseidonIO () logInfo [Char] @@ -279,13 +279,13 @@ forall a b. (a -> b) -> a -> b $ [Char] -> BibTeX -> IO () writeBibTeXFile ([Char] -outPath [Char] -> [Char] -> [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outName [Char] -> [Char] -> [Char] +outName [Char] -> [Char] -> [Char] <.> [Char] "bib") (BibTeX -> IO ()) -> BibTeX -> IO () forall a b. (a -> b) -> a -> b $ PoseidonPackage -> BibTeX posPacBib PoseidonPackage -pac +pac \ No newline at end of file diff --git a/src/Poseidon.CLI.Jannocoalesce.html b/src/Poseidon.CLI.Jannocoalesce.html index 43d9d3be..75cb43d9 100644 --- a/src/Poseidon.CLI.Jannocoalesce.html +++ b/src/Poseidon.CLI.Jannocoalesce.html @@ -54,26 +54,26 @@ runJannocoalesce :: JannoCoalesceOptions -> PoseidonIO () runJannocoalesce :: JannoCoalesceOptions -> PoseidonIO () -runJannocoalesce (JannoCoalesceOptions JannoSourceSpec -sourceSpec [Char] -target Maybe [Char] -outSpec CoalesceJannoColumnSpec -fields Bool -overwrite [Char] -sKey [Char] -tKey Maybe [Char] -maybeStrip) = do - JannoRows [JannoRow] -sourceRows <- case JannoSourceSpec -sourceSpec of - JannoSourceSingle [Char] -sourceFile -> [Char] -> ReaderT Env IO JannoRows +runJannocoalesce (JannoCoalesceOptions JannoSourceSpec +sourceSpec [Char] +target Maybe [Char] +outSpec CoalesceJannoColumnSpec +fields Bool +overwrite [Char] +sKey [Char] +tKey Maybe [Char] +maybeStrip) = do + JannoRows [JannoRow] +sourceRows <- case JannoSourceSpec +sourceSpec of + JannoSourceSingle [Char] +sourceFile -> [Char] -> ReaderT Env IO JannoRows readJannoFile [Char] -sourceFile - JannoSourceBaseDirs [[Char]] -sourceDirs -> do - let pacReadOpts :: PackageReadOptions -pacReadOpts = PackageReadOptions +sourceFile + JannoSourceBaseDirs [[Char]] +sourceDirs -> do + let pacReadOpts :: PackageReadOptions +pacReadOpts = PackageReadOptions defaultPackageReadOptions { _readOptIgnoreChecksums :: Bool _readOptIgnoreChecksums = Bool @@ -94,15 +94,15 @@ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> PackageReadOptions -> [[Char]] -> ReaderT Env IO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions -pacReadOpts [[Char]] -sourceDirs - JannoRows [JannoRow] -targetRows <- [Char] -> ReaderT Env IO JannoRows +pacReadOpts [[Char]] +sourceDirs + JannoRows [JannoRow] +targetRows <- [Char] -> ReaderT Env IO JannoRows readJannoFile [Char] -target +target - [JannoRow] -newJanno <- [JannoRow] + [JannoRow] +newJanno <- [JannoRow] -> [JannoRow] -> CoalesceJannoColumnSpec -> Bool @@ -111,22 +111,22 @@ -> Maybe [Char] -> PoseidonIO [JannoRow] makeNewJannoRows [JannoRow] -sourceRows [JannoRow] -targetRows CoalesceJannoColumnSpec -fields Bool -overwrite [Char] -sKey [Char] -tKey Maybe [Char] -maybeStrip +sourceRows [JannoRow] +targetRows CoalesceJannoColumnSpec +fields Bool +overwrite [Char] +sKey [Char] +tKey Maybe [Char] +maybeStrip - let outPath :: [Char] -outPath = [Char] -> ([Char] -> [Char]) -> Maybe [Char] -> [Char] + let outPath :: [Char] +outPath = [Char] -> ([Char] -> [Char]) -> Maybe [Char] -> [Char] forall b a. b -> (a -> b) -> Maybe a -> b maybe [Char] -target [Char] -> [Char] +target [Char] -> [Char] forall a. a -> a id Maybe [Char] -outSpec +outSpec [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -134,7 +134,7 @@ "Writing to file (directory will be created if missing): " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -outPath +outPath IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -145,12 +145,12 @@ createDirectoryIfMissing Bool True ([Char] -> [Char] takeDirectory [Char] -outPath) +outPath) [Char] -> JannoRows -> IO () writeJannoFile [Char] -outPath ([JannoRow] -> JannoRows +outPath ([JannoRow] -> JannoRows JannoRows [JannoRow] -newJanno) +newJanno) type CounterMismatches = R.IORef Int type CounterCopied = R.IORef Int @@ -164,19 +164,19 @@ -> [Char] -> Maybe [Char] -> PoseidonIO [JannoRow] -makeNewJannoRows [JannoRow] -sourceRows [JannoRow] -targetRows CoalesceJannoColumnSpec -fields Bool -overwrite [Char] -sKey [Char] -tKey Maybe [Char] -maybeStrip = do +makeNewJannoRows [JannoRow] +sourceRows [JannoRow] +targetRows CoalesceJannoColumnSpec +fields Bool +overwrite [Char] +sKey [Char] +tKey Maybe [Char] +maybeStrip = do [Char] -> PoseidonIO () logInfo [Char] "Starting to coalesce..." - IORef Int -counterMismatches <- IO (IORef Int) -> ReaderT Env IO (IORef Int) + IORef Int +counterMismatches <- IO (IORef Int) -> ReaderT Env IO (IORef Int) forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO (IORef Int) -> ReaderT Env IO (IORef Int)) @@ -186,8 +186,8 @@ forall a. a -> IO (IORef a) R.newIORef Int 0 - IORef Int -counterCopied <- IO (IORef Int) -> ReaderT Env IO (IORef Int) + IORef Int +counterCopied <- IO (IORef Int) -> ReaderT Env IO (IORef Int) forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO (IORef Int) -> ReaderT Env IO (IORef Int)) @@ -197,20 +197,20 @@ forall a. a -> IO (IORef a) R.newIORef Int 0 - [JannoRow] -newRows <- (JannoRow -> ReaderT Env IO JannoRow) + [JannoRow] +newRows <- (JannoRow -> ReaderT Env IO JannoRow) -> [JannoRow] -> PoseidonIO [JannoRow] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b] mapM (IORef Int -> IORef Int -> JannoRow -> ReaderT Env IO JannoRow -makeNewJannoRow IORef Int -counterMismatches IORef Int -counterCopied) [JannoRow] -targetRows - Int -counterCopiedVal <- IO Int -> ReaderT Env IO Int +makeNewJannoRow IORef Int +counterMismatches IORef Int +counterCopied) [JannoRow] +targetRows + Int +counterCopiedVal <- IO Int -> ReaderT Env IO Int forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Int -> ReaderT Env IO Int) -> IO Int -> ReaderT Env IO Int @@ -218,9 +218,9 @@ $ IORef Int -> IO Int forall a. IORef a -> IO a R.readIORef IORef Int -counterCopied - Int -counterMismatchesVal <- IO Int -> ReaderT Env IO Int +counterCopied + Int +counterMismatchesVal <- IO Int -> ReaderT Env IO Int forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Int -> ReaderT Env IO Int) -> IO Int -> ReaderT Env IO Int @@ -228,7 +228,7 @@ $ IORef Int -> IO Int forall a. IORef a -> IO a R.readIORef IORef Int -counterMismatches +counterMismatches [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -238,14 +238,14 @@ ++ Int -> [Char] forall a. Show a => a -> [Char] show Int -counterCopiedVal [Char] -> [Char] -> [Char] +counterCopiedVal [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " values" Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (Int -counterMismatchesVal Int -> Int -> Bool +counterMismatchesVal Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 0) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () @@ -260,7 +260,7 @@ ++ Int -> [Char] forall a. Show a => a -> [Char] show Int -counterMismatchesVal [Char] -> [Char] -> [Char] +counterMismatchesVal [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " target rows in source" @@ -268,44 +268,44 @@ forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return [JannoRow] -newRows +newRows where - makeNewJannoRow :: CounterMismatches -> CounterCopied -> JannoRow -> PoseidonIO JannoRow - makeNewJannoRow :: IORef Int -> IORef Int -> JannoRow -> ReaderT Env IO JannoRow -makeNewJannoRow IORef Int -cm IORef Int -cp JannoRow -targetRow = do - [Char] -posId <- JannoRow -> [Char] -> ReaderT Env IO [Char] + makeNewJannoRow :: CounterMismatches -> CounterCopied -> JannoRow -> PoseidonIO JannoRow + makeNewJannoRow :: IORef Int -> IORef Int -> JannoRow -> ReaderT Env IO JannoRow +makeNewJannoRow IORef Int +cm IORef Int +cp JannoRow +targetRow = do + [Char] +posId <- JannoRow -> [Char] -> ReaderT Env IO [Char] forall (m :: * -> *). MonadThrow m => JannoRow -> [Char] -> m [Char] getKeyFromJanno JannoRow -targetRow [Char] -tKey - [JannoRow] -sourceRowCandidates <- (JannoRow -> ReaderT Env IO Bool) +targetRow [Char] +tKey + [JannoRow] +sourceRowCandidates <- (JannoRow -> ReaderT Env IO Bool) -> [JannoRow] -> PoseidonIO [JannoRow] forall (m :: * -> *) a. Applicative m => (a -> m Bool) -> [a] -> m [a] -filterM (\JannoRow -r -> (Maybe [Char] -> [Char] -> [Char] -> Bool +filterM (\JannoRow +r -> (Maybe [Char] -> [Char] -> [Char] -> Bool matchWithOptionalStrip Maybe [Char] -maybeStrip [Char] -posId) ([Char] -> Bool) -> ReaderT Env IO [Char] -> ReaderT Env IO Bool +maybeStrip [Char] +posId) ([Char] -> Bool) -> ReaderT Env IO [Char] -> ReaderT Env IO Bool forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> JannoRow -> [Char] -> ReaderT Env IO [Char] forall (m :: * -> *). MonadThrow m => JannoRow -> [Char] -> m [Char] getKeyFromJanno JannoRow -r [Char] -sKey) [JannoRow] -sourceRows +r [Char] +sKey) [JannoRow] +sourceRows case [JannoRow] -sourceRowCandidates of +sourceRowCandidates of [] -> do [Char] -> PoseidonIO () logWarning ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -314,7 +314,7 @@ "no match for target " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -posId [Char] -> [Char] -> [Char] +posId [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " in source" @@ -326,7 +326,7 @@ $ IORef Int -> (Int -> Int) -> IO () forall a. IORef a -> (a -> a) -> IO () R.modifyIORef IORef Int -cm (Int -> Int -> Int +cm (Int -> Int -> Int forall a. Num a => a -> a -> a +Int 1) @@ -334,9 +334,9 @@ forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return JannoRow -targetRow - [JannoRow -keyRow] -> IORef Int +targetRow + [JannoRow +keyRow] -> IORef Int -> JannoRow -> JannoRow -> CoalesceJannoColumnSpec @@ -345,13 +345,13 @@ -> [Char] -> ReaderT Env IO JannoRow mergeRow IORef Int -cp JannoRow -targetRow JannoRow -keyRow CoalesceJannoColumnSpec -fields Bool -overwrite [Char] -sKey [Char] -tKey +cp JannoRow +targetRow JannoRow +keyRow CoalesceJannoColumnSpec +fields Bool +overwrite [Char] +sKey [Char] +tKey [JannoRow] _ -> PoseidonException -> ReaderT Env IO JannoRow forall e a. Exception e => e -> ReaderT Env IO a @@ -366,26 +366,26 @@ "source file contains multiple rows with key " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -posId +posId -getKeyFromJanno :: (MonadThrow m) => JannoRow -> String -> m String +getKeyFromJanno :: (MonadThrow m) => JannoRow -> String -> m String getKeyFromJanno :: forall (m :: * -> *). MonadThrow m => JannoRow -> [Char] -> m [Char] -getKeyFromJanno JannoRow -jannoRow [Char] -key = do - let jannoRowDict :: NamedRecord -jannoRowDict = JannoRow -> NamedRecord +getKeyFromJanno JannoRow +jannoRow [Char] +key = do + let jannoRowDict :: NamedRecord +jannoRowDict = JannoRow -> NamedRecord forall a. ToNamedRecord a => a -> NamedRecord Csv.toNamedRecord JannoRow -jannoRow +jannoRow case NamedRecord -jannoRowDict NamedRecord -> ByteString -> Maybe ByteString +jannoRowDict NamedRecord -> ByteString -> Maybe ByteString forall k v. (Eq k, Hashable k) => HashMap k v -> k -> Maybe v HM.!? ([Char] -> ByteString BSC.pack [Char] -key) of +key) of Maybe ByteString Nothing -> PoseidonException -> m [Char] forall e a. Exception e => e -> m a @@ -397,82 +397,82 @@ "Key " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -key [Char] -> [Char] -> [Char] +key [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " not present in .janno file") - Just ByteString -r -> [Char] -> m [Char] + Just ByteString +r -> [Char] -> m [Char] forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return ([Char] -> m [Char]) -> [Char] -> m [Char] forall a b. (a -> b) -> a -> b $ ByteString -> [Char] BSC.unpack ByteString -r +r matchWithOptionalStrip :: (Maybe String) -> String -> String -> Bool matchWithOptionalStrip :: Maybe [Char] -> [Char] -> [Char] -> Bool -matchWithOptionalStrip Maybe [Char] -maybeRegex [Char] -id1 [Char] -id2 = +matchWithOptionalStrip Maybe [Char] +maybeRegex [Char] +id1 [Char] +id2 = case Maybe [Char] -maybeRegex of +maybeRegex of Maybe [Char] Nothing -> [Char] -id1 [Char] -> [Char] -> Bool +id1 [Char] -> [Char] -> Bool forall a. Eq a => a -> a -> Bool == [Char] -id2 - Just [Char] -r -> - let id1stripped :: [Char] -id1stripped = [Char] -> [Char] -> [Char] -stripR [Char] -r [Char] -id1 - id2stripped :: [Char] -id2stripped = [Char] -> [Char] -> [Char] -stripR [Char] -r [Char] -id2 +id2 + Just [Char] +r -> + let id1stripped :: [Char] +id1stripped = [Char] -> [Char] -> [Char] +stripR [Char] +r [Char] +id1 + id2stripped :: [Char] +id2stripped = [Char] -> [Char] -> [Char] +stripR [Char] +r [Char] +id2 in [Char] -id1stripped [Char] -> [Char] -> Bool +id1stripped [Char] -> [Char] -> Bool forall a. Eq a => a -> a -> Bool == [Char] -id2stripped +id2stripped where - stripR :: String -> String -> String - stripR :: [Char] -> [Char] -> [Char] -stripR [Char] -r [Char] -s = - let match :: [Char] -match = [Char] -s [Char] -> [Char] -> [Char] + stripR :: String -> String -> String + stripR :: [Char] -> [Char] -> [Char] +stripR [Char] +r [Char] +s = + let match :: [Char] +match = [Char] +s [Char] -> [Char] -> [Char] forall source source1 target. (RegexMaker Regex CompOption ExecOption source, RegexContext Regex source1 target) => source1 -> source -> target =~ [Char] -r +r in if [Char] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [Char] -match then [Char] -s else Text -> [Char] +match then [Char] +s else Text -> [Char] unpack (Text -> [Char]) -> Text -> [Char] forall a b. (a -> b) -> a -> b $ HasCallStack => Text -> Text -> Text -> Text Text -> Text -> Text -> Text replace ([Char] -> Text pack [Char] -match) Text +match) Text "" ([Char] -> Text pack [Char] -s) +s) mergeRow :: CounterCopied -> JannoRow -> JannoRow -> CoalesceJannoColumnSpec -> Bool -> String -> String -> PoseidonIO JannoRow mergeRow :: IORef Int @@ -483,32 +483,32 @@ -> [Char] -> [Char] -> ReaderT Env IO JannoRow -mergeRow IORef Int -cp JannoRow -targetRow JannoRow -sourceRow CoalesceJannoColumnSpec -fields Bool -overwrite [Char] -sKey [Char] -tKey = do - let sourceKeys :: [ByteString] -sourceKeys = NamedRecord -> [ByteString] +mergeRow IORef Int +cp JannoRow +targetRow JannoRow +sourceRow CoalesceJannoColumnSpec +fields Bool +overwrite [Char] +sKey [Char] +tKey = do + let sourceKeys :: [ByteString] +sourceKeys = NamedRecord -> [ByteString] forall k v. HashMap k v -> [k] HM.keys NamedRecord -sourceRowRecord - sourceKeysDesired :: [ByteString] -sourceKeysDesired = [ByteString] -> CoalesceJannoColumnSpec -> [ByteString] -determineDesiredSourceKeys [ByteString] -sourceKeys CoalesceJannoColumnSpec -fields +sourceRowRecord + sourceKeysDesired :: [ByteString] +sourceKeysDesired = [ByteString] -> CoalesceJannoColumnSpec -> [ByteString] +determineDesiredSourceKeys [ByteString] +sourceKeys CoalesceJannoColumnSpec +fields -- fill in the target row with dummy values for desired fields that might not be present yet - targetComplete :: NamedRecord -targetComplete = NamedRecord -> NamedRecord -> NamedRecord + targetComplete :: NamedRecord +targetComplete = NamedRecord -> NamedRecord -> NamedRecord forall k v. (Eq k, Hashable k) => HashMap k v -> HashMap k v -> HashMap k v HM.union NamedRecord -targetRowRecord ([(ByteString, ByteString)] -> NamedRecord +targetRowRecord ([(ByteString, ByteString)] -> NamedRecord forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v HM.fromList ([(ByteString, ByteString)] -> NamedRecord) -> [(ByteString, ByteString)] -> NamedRecord @@ -518,16 +518,16 @@ forall a b. (a -> b) -> [a] -> [b] map (, ByteString BSC.empty) [ByteString] -sourceKeysDesired) - newRowRecord :: NamedRecord -newRowRecord = (ByteString -> ByteString -> ByteString) +sourceKeysDesired) + newRowRecord :: NamedRecord +newRowRecord = (ByteString -> ByteString -> ByteString) -> NamedRecord -> NamedRecord forall k v1 v2. (k -> v1 -> v2) -> HashMap k v1 -> HashMap k v2 HM.mapWithKey ByteString -> ByteString -> ByteString -fillFromSource NamedRecord -targetComplete - parseResult :: Either [Char] JannoRow -parseResult = Parser JannoRow -> Either [Char] JannoRow +fillFromSource NamedRecord +targetComplete + parseResult :: Either [Char] JannoRow +parseResult = Parser JannoRow -> Either [Char] JannoRow forall a. Parser a -> Either [Char] a Csv.runParser (Parser JannoRow -> Either [Char] JannoRow) -> (NamedRecord -> Parser JannoRow) @@ -540,7 +540,7 @@ -> NamedRecord -> Either [Char] JannoRow forall a b. (a -> b) -> a -> b $ NamedRecord -newRowRecord +newRowRecord [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -549,13 +549,13 @@ forall a. [a] -> [a] -> [a] ++ ByteString -> [Char] BSC.unpack (NamedRecord -targetComplete NamedRecord -> ByteString -> ByteString +targetComplete NamedRecord -> ByteString -> ByteString forall k v. (Eq k, Hashable k, HasCallStack) => HashMap k v -> k -> v HM.! [Char] -> ByteString BSC.pack [Char] -tKey) [Char] -> [Char] -> [Char] +tKey) [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] @@ -563,17 +563,17 @@ forall a. [a] -> [a] -> [a] ++ ByteString -> [Char] BSC.unpack (NamedRecord -sourceRowRecord NamedRecord -> ByteString -> ByteString +sourceRowRecord NamedRecord -> ByteString -> ByteString forall k v. (Eq k, Hashable k, HasCallStack) => HashMap k v -> k -> v HM.! [Char] -> ByteString BSC.pack [Char] -sKey) +sKey) case Either [Char] JannoRow -parseResult of - Left [Char] -err -> PoseidonException -> ReaderT Env IO JannoRow +parseResult of + Left [Char] +err -> PoseidonException -> ReaderT Env IO JannoRow forall e a. Exception e => e -> ReaderT Env IO a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (PoseidonException -> ReaderT Env IO JannoRow) @@ -589,33 +589,33 @@ ".janno row-merge error: " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -err - Right JannoRow -r -> do - let newFields :: NamedRecord -newFields = (ByteString -> ByteString -> Maybe ByteString) +err + Right JannoRow +r -> do + let newFields :: NamedRecord +newFields = (ByteString -> ByteString -> Maybe ByteString) -> NamedRecord -> NamedRecord -> NamedRecord forall k v w. (Eq k, Hashable k) => (v -> w -> Maybe v) -> HashMap k v -> HashMap k w -> HashMap k v -HM.differenceWith (\ByteString -v1 ByteString -v2 -> if ByteString -v1 ByteString -> ByteString -> Bool +HM.differenceWith (\ByteString +v1 ByteString +v2 -> if ByteString +v1 ByteString -> ByteString -> Bool forall a. Eq a => a -> a -> Bool == ByteString -v2 then Maybe ByteString +v2 then Maybe ByteString forall a. Maybe a Nothing else ByteString -> Maybe ByteString forall a. a -> Maybe a Just ByteString -v1) NamedRecord -newRowRecord NamedRecord -targetComplete +v1) NamedRecord +newRowRecord NamedRecord +targetComplete if NamedRecord -> Bool forall k v. HashMap k v -> Bool HM.null NamedRecord -newFields then do +newFields then do [Char] -> PoseidonIO () logDebug [Char] "-- no changes" @@ -628,12 +628,12 @@ forM_ (NamedRecord -> [(ByteString, ByteString)] forall k v. HashMap k v -> [(k, v)] HM.toList NamedRecord -newFields) (((ByteString, ByteString) -> PoseidonIO ()) -> PoseidonIO ()) +newFields) (((ByteString, ByteString) -> PoseidonIO ()) -> PoseidonIO ()) -> ((ByteString, ByteString) -> PoseidonIO ()) -> PoseidonIO () forall a b. (a -> b) -> a -> b -$ \(ByteString -key, ByteString -val) -> do +$ \(ByteString +key, ByteString +val) -> do IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -642,7 +642,7 @@ $ IORef Int -> (Int -> Int) -> IO () forall a. IORef a -> (a -> a) -> IO () R.modifyIORef IORef Int -cp (Int -> Int -> Int +cp (Int -> Int -> Int forall a. Num a => a -> a -> a +Int 1) @@ -654,71 +654,71 @@ forall a. [a] -> [a] -> [a] ++ ByteString -> [Char] BSC.unpack ByteString -val [Char] -> [Char] -> [Char] +val [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "\" from column " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ ByteString -> [Char] BSC.unpack ByteString -key +key JannoRow -> ReaderT Env IO JannoRow forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return JannoRow -r +r where - targetRowRecord :: Csv.NamedRecord - targetRowRecord :: NamedRecord -targetRowRecord = JannoRow -> NamedRecord + targetRowRecord :: Csv.NamedRecord + targetRowRecord :: NamedRecord +targetRowRecord = JannoRow -> NamedRecord forall a. ToNamedRecord a => a -> NamedRecord Csv.toNamedRecord JannoRow -targetRow - sourceRowRecord :: Csv.NamedRecord - sourceRowRecord :: NamedRecord -sourceRowRecord = JannoRow -> NamedRecord +targetRow + sourceRowRecord :: Csv.NamedRecord + sourceRowRecord :: NamedRecord +sourceRowRecord = JannoRow -> NamedRecord forall a. ToNamedRecord a => a -> NamedRecord Csv.toNamedRecord JannoRow -sourceRow - determineDesiredSourceKeys :: [BSC.ByteString] -> CoalesceJannoColumnSpec -> [BSC.ByteString] - determineDesiredSourceKeys :: [ByteString] -> CoalesceJannoColumnSpec -> [ByteString] -determineDesiredSourceKeys [ByteString] -keys CoalesceJannoColumnSpec +sourceRow + determineDesiredSourceKeys :: [BSC.ByteString] -> CoalesceJannoColumnSpec -> [BSC.ByteString] + determineDesiredSourceKeys :: [ByteString] -> CoalesceJannoColumnSpec -> [ByteString] +determineDesiredSourceKeys [ByteString] +keys CoalesceJannoColumnSpec AllJannoColumns = [ByteString] -keys - determineDesiredSourceKeys [ByteString] -_ (IncludeJannoColumns [ByteString] -included) = [ByteString] -included - determineDesiredSourceKeys [ByteString] -keys (ExcludeJannoColumns [ByteString] -excluded) = [ByteString] -keys [ByteString] -> [ByteString] -> [ByteString] +keys + determineDesiredSourceKeys [ByteString] +_ (IncludeJannoColumns [ByteString] +included) = [ByteString] +included + determineDesiredSourceKeys [ByteString] +keys (ExcludeJannoColumns [ByteString] +excluded) = [ByteString] +keys [ByteString] -> [ByteString] -> [ByteString] forall a. Eq a => [a] -> [a] -> [a] \\ [ByteString] -excluded - fillFromSource :: BSC.ByteString -> BSC.ByteString -> BSC.ByteString - fillFromSource :: ByteString -> ByteString -> ByteString -fillFromSource ByteString -key ByteString -targetVal = +excluded + fillFromSource :: BSC.ByteString -> BSC.ByteString -> BSC.ByteString + fillFromSource :: ByteString -> ByteString -> ByteString +fillFromSource ByteString +key ByteString +targetVal = -- don't overwrite key if ByteString -key ByteString -> ByteString -> Bool +key ByteString -> ByteString -> Bool forall a. Eq a => a -> a -> Bool /= [Char] -> ByteString BSC.pack [Char] -tKey +tKey -- overwrite field only if it's requested Bool -> Bool -> Bool && ByteString -> CoalesceJannoColumnSpec -> Bool -includeField ByteString -key CoalesceJannoColumnSpec -fields +includeField ByteString +key CoalesceJannoColumnSpec +fields -- overwrite only empty fields, except overwrite is set Bool -> Bool -> Bool && (ByteString -targetVal ByteString -> [ByteString] -> Bool +targetVal ByteString -> [ByteString] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [ByteString @@ -726,34 +726,34 @@ "", ByteString BSC.empty] Bool -> Bool -> Bool || Bool -overwrite) +overwrite) then ByteString -> ByteString -> NamedRecord -> ByteString forall k v. (Eq k, Hashable k) => v -> k -> HashMap k v -> v HM.findWithDefault ByteString "" ByteString -key NamedRecord -sourceRowRecord +key NamedRecord +sourceRowRecord else ByteString -targetVal - includeField :: BSC.ByteString -> CoalesceJannoColumnSpec -> Bool - includeField :: ByteString -> CoalesceJannoColumnSpec -> Bool -includeField ByteString +targetVal + includeField :: BSC.ByteString -> CoalesceJannoColumnSpec -> Bool + includeField :: ByteString -> CoalesceJannoColumnSpec -> Bool +includeField ByteString _ CoalesceJannoColumnSpec AllJannoColumns = Bool True - includeField ByteString -key (IncludeJannoColumns [ByteString] -xs) = ByteString -key ByteString -> [ByteString] -> Bool + includeField ByteString +key (IncludeJannoColumns [ByteString] +xs) = ByteString +key ByteString -> [ByteString] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [ByteString] -xs - includeField ByteString -key (ExcludeJannoColumns [ByteString] -xs) = ByteString -key ByteString -> [ByteString] -> Bool +xs + includeField ByteString +key (ExcludeJannoColumns [ByteString] +xs) = ByteString +key ByteString -> [ByteString] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `notElem` [ByteString] -xs +xs \ No newline at end of file diff --git a/src/Poseidon.CLI.List.html b/src/Poseidon.CLI.List.html index df5cca01..8f1d5a63 100644 --- a/src/Poseidon.CLI.List.html +++ b/src/Poseidon.CLI.List.html @@ -48,13 +48,13 @@ -- | The main function running the list command runList :: ListOptions -> PoseidonIO () runList :: ListOptions -> PoseidonIO () -runList (ListOptions RepoLocationSpec -repoLocation ListEntity -listEntity Bool -rawOutput Bool -onlyLatest) = do - let pacReadOpts :: PackageReadOptions -pacReadOpts = PackageReadOptions +runList (ListOptions RepoLocationSpec +repoLocation ListEntity +listEntity Bool +rawOutput Bool +onlyLatest) = do + let pacReadOpts :: PackageReadOptions +pacReadOpts = PackageReadOptions defaultPackageReadOptions { _readOptIgnoreChecksums :: Bool _readOptIgnoreChecksums = Bool @@ -67,64 +67,64 @@ True , _readOptOnlyLatest :: Bool _readOptOnlyLatest = Bool -onlyLatest +onlyLatest } -- build tables - ([String] -tableH, [[String]] -tableB) <- case ListEntity -listEntity of + ([String] +tableH, [[String]] +tableB) <- case ListEntity +listEntity of ListEntity ListPackages -> do - [PackageInfo] -packageInfos <- case RepoLocationSpec -repoLocation of - RepoRemote (ArchiveEndpoint String -remoteURL Maybe String -archive) -> do + [PackageInfo] +packageInfos <- case RepoLocationSpec +repoLocation of + RepoRemote (ArchiveEndpoint String +remoteURL Maybe String +archive) -> do String -> PoseidonIO () logInfo String "Downloading package data from server" - ApiReturnData -apiReturn <- String -> Bool -> PoseidonIO ApiReturnData + ApiReturnData +apiReturn <- String -> Bool -> PoseidonIO ApiReturnData processApiResponse (String -remoteURL String -> String -> String +remoteURL String -> String -> String forall a. [a] -> [a] -> [a] ++ String "/packages" String -> String -> String forall a. [a] -> [a] -> [a] ++ Maybe String -> String qDefault Maybe String -archive) Bool +archive) Bool False case ApiReturnData -apiReturn of - ApiReturnPackageInfo [PackageInfo] -pacInfo -> [PackageInfo] -> ReaderT Env IO [PackageInfo] +apiReturn of + ApiReturnPackageInfo [PackageInfo] +pacInfo -> [PackageInfo] -> ReaderT Env IO [PackageInfo] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return [PackageInfo] -pacInfo +pacInfo ApiReturnData _ -> String -> ReaderT Env IO [PackageInfo] forall a. HasCallStack => String -> a error String "should not happen" - RepoLocal [String] -baseDirs -> do - [PoseidonPackage] -pacCollection <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage] + RepoLocal [String] +baseDirs -> do + [PoseidonPackage] +pacCollection <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions -pacReadOpts [String] -baseDirs +pacReadOpts [String] +baseDirs [PoseidonPackage] -> ReaderT Env IO [PackageInfo] forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> m [PackageInfo] packagesToPackageInfos [PoseidonPackage] -pacCollection - let tableH :: [String] -tableH = [String +pacCollection + let tableH :: [String] +tableH = [String "Package", String "Package Version", String "Is Latest", String @@ -132,23 +132,23 @@ "Description", String "Last modified", String "Nr Individuals"] - tableB :: [[String]] -tableB = ([String] -> String) -> [[String]] -> [[String]] + tableB :: [[String]] +tableB = ([String] -> String) -> [[String]] -> [[String]] forall b a. Ord b => (a -> b) -> [a] -> [a] sortOn [String] -> String forall a. HasCallStack => [a] -> a head ([[String]] -> [[String]]) -> [[String]] -> [[String]] forall a b. (a -> b) -> a -> b $ do - pInf :: PackageInfo -pInf@(PackageInfo PacNameAndVersion -_ Bool -isLatest Version -posV Maybe String -desc Maybe Day -lastMod Int -nrInds) <- [PackageInfo] -packageInfos + pInf :: PackageInfo +pInf@(PackageInfo PacNameAndVersion +_ Bool +isLatest Version +posV Maybe String +desc Maybe Day +lastMod Int +nrInds) <- [PackageInfo] +packageInfos -- for the locally read packages this doesn't do anything, -- because the dataset is already reduced to the latest packages -- in the reading process @@ -158,219 +158,219 @@ forall (m :: * -> *) a. Monad m => a -> m a return (Bool -> Bool not Bool -onlyLatest Bool -> Bool -> Bool +onlyLatest Bool -> Bool -> Bool || Bool -isLatest) +isLatest) [String] -> [[String]] forall a. a -> [a] forall (m :: * -> *) a. Monad m => a -> m a return [PackageInfo -> String forall a. HasNameAndVersion a => a -> String getPacName PackageInfo -pInf, Maybe Version -> String -showMaybeVersion (PackageInfo -> Maybe Version +pInf, Maybe Version -> String +showMaybeVersion (PackageInfo -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PackageInfo -pInf), Bool -> String +pInf), Bool -> String forall a. Show a => a -> String show Bool -isLatest, +isLatest, Version -> String showVersion Version -posV, Maybe String -> String -showMaybe Maybe String -desc, Maybe String -> String -showMaybe (Day -> String +posV, Maybe String -> String +showMaybe Maybe String +desc, Maybe String -> String +showMaybe (Day -> String forall a. Show a => a -> String show (Day -> String) -> Maybe Day -> Maybe String forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Maybe Day -lastMod), Int -> String +lastMod), Int -> String forall a. Show a => a -> String show Int -nrInds] +nrInds] ([String], [[String]]) -> ReaderT Env IO ([String], [[String]]) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return ([String] -tableH, [[String]] -tableB) +tableH, [[String]] +tableB) ListEntity ListGroups -> do - [GroupInfo] -groupInfos <- case RepoLocationSpec -repoLocation of - RepoRemote (ArchiveEndpoint String -remoteURL Maybe String -archive) -> do + [GroupInfo] +groupInfos <- case RepoLocationSpec +repoLocation of + RepoRemote (ArchiveEndpoint String +remoteURL Maybe String +archive) -> do String -> PoseidonIO () logInfo String "Downloading group data from server" - ApiReturnData -apiReturn <- String -> Bool -> PoseidonIO ApiReturnData + ApiReturnData +apiReturn <- String -> Bool -> PoseidonIO ApiReturnData processApiResponse (String -remoteURL String -> String -> String +remoteURL String -> String -> String forall a. [a] -> [a] -> [a] ++ String "/groups" String -> String -> String forall a. [a] -> [a] -> [a] ++ Maybe String -> String qDefault Maybe String -archive) Bool +archive) Bool False case ApiReturnData -apiReturn of - ApiReturnGroupInfo [GroupInfo] -groupInfo -> [GroupInfo] -> ReaderT Env IO [GroupInfo] +apiReturn of + ApiReturnGroupInfo [GroupInfo] +groupInfo -> [GroupInfo] -> ReaderT Env IO [GroupInfo] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return [GroupInfo] -groupInfo +groupInfo ApiReturnData _ -> String -> ReaderT Env IO [GroupInfo] forall a. HasCallStack => String -> a error String "should not happen" - RepoLocal [String] -baseDirs -> do - [PoseidonPackage] -pacCollection <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage] + RepoLocal [String] +baseDirs -> do + [PoseidonPackage] +pacCollection <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions -pacReadOpts [String] -baseDirs +pacReadOpts [String] +baseDirs [PoseidonPackage] -> ReaderT Env IO [GroupInfo] forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> m [GroupInfo] getAllGroupInfo [PoseidonPackage] -pacCollection - let tableH :: [String] -tableH = [String +pacCollection + let tableH :: [String] +tableH = [String "Group", String "Package", String "Package Version", String "Is Latest", String "Nr Individuals"] - tableB :: [[String]] -tableB = do - gi :: GroupInfo -gi@(GroupInfo String -groupName PacNameAndVersion -_ Bool -isLatest Int -nrInds) <- [GroupInfo] -groupInfos + tableB :: [[String]] +tableB = do + gi :: GroupInfo +gi@(GroupInfo String +groupName PacNameAndVersion +_ Bool +isLatest Int +nrInds) <- [GroupInfo] +groupInfos Bool True <- Bool -> [Bool] forall a. a -> [a] forall (m :: * -> *) a. Monad m => a -> m a return (Bool -> Bool not Bool -onlyLatest Bool -> Bool -> Bool +onlyLatest Bool -> Bool -> Bool || Bool -isLatest) +isLatest) [String] -> [[String]] forall a. a -> [a] forall (m :: * -> *) a. Monad m => a -> m a return [String -groupName, GroupInfo -> String +groupName, GroupInfo -> String forall a. HasNameAndVersion a => a -> String getPacName GroupInfo -gi, Maybe Version -> String -showMaybeVersion (GroupInfo -> Maybe Version +gi, Maybe Version -> String +showMaybeVersion (GroupInfo -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion GroupInfo -gi), Bool -> String +gi), Bool -> String forall a. Show a => a -> String show Bool -isLatest, Int -> String +isLatest, Int -> String forall a. Show a => a -> String show Int -nrInds] +nrInds] ([String], [[String]]) -> ReaderT Env IO ([String], [[String]]) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return ([String] -tableH, [[String]] -tableB) - ListIndividuals AddJannoColSpec -addJannoColSpec -> do - [ExtendedIndividualInfo] -extIndInfos <- case RepoLocationSpec -repoLocation of - RepoRemote (ArchiveEndpoint String -remoteURL Maybe String -archive) -> do +tableH, [[String]] +tableB) + ListIndividuals AddJannoColSpec +addJannoColSpec -> do + [ExtendedIndividualInfo] +extIndInfos <- case RepoLocationSpec +repoLocation of + RepoRemote (ArchiveEndpoint String +remoteURL Maybe String +archive) -> do String -> PoseidonIO () logInfo String "Downloading individual data from server" - let addJannoColFlag :: String -addJannoColFlag = case AddJannoColSpec -addJannoColSpec of + let addJannoColFlag :: String +addJannoColFlag = case AddJannoColSpec +addJannoColSpec of AddJannoColSpec AddJannoColAll -> String "&additionalJannoColumns=ALL" AddJannoColList [] -> String "" - AddJannoColList [String] -moreJannoColumns -> String + AddJannoColList [String] +moreJannoColumns -> String "&additionalJannoColumns=" String -> String -> String forall a. [a] -> [a] -> [a] ++ String -> [String] -> String forall a. [a] -> [[a]] -> [a] intercalate String "," [String] -moreJannoColumns - ApiReturnData -apiReturn <- String -> Bool -> PoseidonIO ApiReturnData +moreJannoColumns + ApiReturnData +apiReturn <- String -> Bool -> PoseidonIO ApiReturnData processApiResponse (String -remoteURL String -> String -> String +remoteURL String -> String -> String forall a. [a] -> [a] -> [a] ++ String "/individuals" String -> String -> String forall a. [a] -> [a] -> [a] ++ Maybe String -> String qDefault Maybe String -archive String -> String -> String +archive String -> String -> String forall a. [a] -> [a] -> [a] ++ String -addJannoColFlag) Bool +addJannoColFlag) Bool False case ApiReturnData -apiReturn of - ApiReturnExtIndividualInfo [ExtendedIndividualInfo] -indInfo -> [ExtendedIndividualInfo] -> ReaderT Env IO [ExtendedIndividualInfo] +apiReturn of + ApiReturnExtIndividualInfo [ExtendedIndividualInfo] +indInfo -> [ExtendedIndividualInfo] -> ReaderT Env IO [ExtendedIndividualInfo] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return [ExtendedIndividualInfo] -indInfo +indInfo ApiReturnData _ -> String -> ReaderT Env IO [ExtendedIndividualInfo] forall a. HasCallStack => String -> a error String "should not happen" - RepoLocal [String] -baseDirs -> do - [PoseidonPackage] -pacCollection <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage] + RepoLocal [String] +baseDirs -> do + [PoseidonPackage] +pacCollection <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions -pacReadOpts [String] -baseDirs +pacReadOpts [String] +baseDirs [PoseidonPackage] -> AddJannoColSpec -> ReaderT Env IO [ExtendedIndividualInfo] forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> AddJannoColSpec -> m [ExtendedIndividualInfo] getExtendedIndividualInfo [PoseidonPackage] -pacCollection AddJannoColSpec -addJannoColSpec +pacCollection AddJannoColSpec +addJannoColSpec - let addJannoCols :: [String] -addJannoCols = case [ExtendedIndividualInfo] -extIndInfos of -- get all add-column names from first extIndInfo + let addJannoCols :: [String] +addJannoCols = case [ExtendedIndividualInfo] +extIndInfos of -- get all add-column names from first extIndInfo [] -> [] - (ExtendedIndividualInfo -e:[ExtendedIndividualInfo] + (ExtendedIndividualInfo +e:[ExtendedIndividualInfo] _) -> ((String, Maybe String) -> String) -> [(String, Maybe String)] -> [String] forall a b. (a -> b) -> [a] -> [b] @@ -386,13 +386,13 @@ -> ExtendedIndividualInfo -> [String] forall a b. (a -> b) -> a -> b $ ExtendedIndividualInfo -e +e -- warning in case the additional Columns do not exist in the entire janno dataset, -- we only output this warning if the columns were requested explicitly. Not if -- all columns were requested. We consider such an "all" request to mean "all columns that are present". case AddJannoColSpec -addJannoColSpec of +addJannoColSpec of AddJannoColList (String _:[String] _) -> do @@ -405,36 +405,36 @@ forall a b. [a] -> [b] -> [(a, b)] zip [Int 0..] [String] -addJannoCols) (((Int, String) -> PoseidonIO ()) -> PoseidonIO ()) +addJannoCols) (((Int, String) -> PoseidonIO ()) -> PoseidonIO ()) -> ((Int, String) -> PoseidonIO ()) -> PoseidonIO () forall a b. (a -> b) -> a -> b -$ \(Int -i, String -columnKey) -> do +$ \(Int +i, String +columnKey) -> do -- check entries in all individuals for that key - let nonEmptyEntries :: [String] -nonEmptyEntries = [Maybe String] -> [String] + let nonEmptyEntries :: [String] +nonEmptyEntries = [Maybe String] -> [String] forall a. [Maybe a] -> [a] catMaybes [(String, Maybe String) -> Maybe String forall a b. (a, b) -> b snd ([(String, Maybe String)] -entries [(String, Maybe String)] -> Int -> (String, Maybe String) +entries [(String, Maybe String)] -> Int -> (String, Maybe String) forall a. HasCallStack => [a] -> Int -> a !! Int -i) | ExtendedIndividualInfo String +i) | ExtendedIndividualInfo String _ [String] _ PacNameAndVersion _ Bool -_ [(String, Maybe String)] -entries <- [ExtendedIndividualInfo] -extIndInfos] +_ [(String, Maybe String)] +entries <- [ExtendedIndividualInfo] +extIndInfos] Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when ([String] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [String] -nonEmptyEntries) (PoseidonIO () -> PoseidonIO ()) +nonEmptyEntries) (PoseidonIO () -> PoseidonIO ()) -> (String -> PoseidonIO ()) -> String -> PoseidonIO () forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> PoseidonIO () @@ -444,7 +444,7 @@ "Column Name " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -columnKey String -> String -> String +columnKey String -> String -> String forall a. [a] -> [a] -> [a] ++ String " not present in any individual" @@ -454,8 +454,8 @@ forall (m :: * -> *) a. Monad m => a -> m a return () - let tableH :: [String] -tableH = [String + let tableH :: [String] +tableH = [String "Individual", String "Group", String "Package", String @@ -463,48 +463,48 @@ "Is Latest"] [String] -> [String] -> [String] forall a. [a] -> [a] -> [a] ++ [String] -addJannoCols - tableB :: [[String]] -tableB = do - i :: ExtendedIndividualInfo -i@(ExtendedIndividualInfo String -name [String] -groups PacNameAndVersion -_ Bool -isLatest [(String, Maybe String)] -addColumnEntries) <- [ExtendedIndividualInfo] -extIndInfos +addJannoCols + tableB :: [[String]] +tableB = do + i :: ExtendedIndividualInfo +i@(ExtendedIndividualInfo String +name [String] +groups PacNameAndVersion +_ Bool +isLatest [(String, Maybe String)] +addColumnEntries) <- [ExtendedIndividualInfo] +extIndInfos Bool True <- Bool -> [Bool] forall a. a -> [a] forall (m :: * -> *) a. Monad m => a -> m a return (Bool -> Bool not Bool -onlyLatest Bool -> Bool -> Bool +onlyLatest Bool -> Bool -> Bool || Bool -isLatest) +isLatest) [String] -> [[String]] forall a. a -> [a] forall (m :: * -> *) a. Monad m => a -> m a return ([String] -> [[String]]) -> [String] -> [[String]] forall a b. (a -> b) -> a -> b $ [String -name, String -> [String] -> String +name, String -> [String] -> String forall a. [a] -> [[a]] -> [a] intercalate String ", " [String] -groups, ExtendedIndividualInfo -> String +groups, ExtendedIndividualInfo -> String forall a. HasNameAndVersion a => a -> String getPacName ExtendedIndividualInfo -i, +i, Maybe Version -> String -showMaybeVersion (ExtendedIndividualInfo -> Maybe Version +showMaybeVersion (ExtendedIndividualInfo -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion ExtendedIndividualInfo -i), Bool -> String +i), Bool -> String forall a. Show a => a -> String show Bool -isLatest] [String] -> [String] -> [String] +isLatest] [String] -> [String] -> [String] forall a. [a] -> [a] -> [a] ++ ((String, Maybe String) -> String) @@ -521,15 +521,15 @@ . (String, Maybe String) -> Maybe String forall a b. (a, b) -> b snd) [(String, Maybe String)] -addColumnEntries +addColumnEntries ([String], [[String]]) -> ReaderT Env IO ([String], [[String]]) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return ([String] -tableH, [[String]] -tableB) +tableH, [[String]] +tableB) if Bool -rawOutput then +rawOutput then IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -545,21 +545,21 @@ forall a. [a] -> [[a]] -> [a] intercalate String "\t" [String] -row | [String] -row <- [String] -tableH[String] -> [[String]] -> [[String]] +row | [String] +row <- [String] +tableH[String] -> [[String]] -> [[String]] forall a. a -> [a] -> [a] :[[String]] -tableB] +tableB] else do - let colSpecs :: [ColSpec] -colSpecs = Int -> ColSpec -> [ColSpec] + let colSpecs :: [ColSpec] +colSpecs = Int -> ColSpec -> [ColSpec] forall a. Int -> a -> [a] replicate ([String] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [String] -tableH) (LenSpec -> Position H -> AlignSpec -> CutMark -> ColSpec +tableH) (LenSpec -> Position H -> AlignSpec -> CutMark -> ColSpec column (Int -> LenSpec expandUntil Int 60) Position H @@ -583,23 +583,23 @@ Cell a => [ColSpec] -> TableStyle -> HeaderSpec -> [RowGroup a] -> String tableString [ColSpec] -colSpecs TableStyle +colSpecs TableStyle asciiRoundS ([String] -> HeaderSpec titlesH [String] -tableH) [[[String]] -> RowGroup String +tableH) [[[String]] -> RowGroup String forall a. [Row a] -> RowGroup a rowsG [[String]] -tableB] +tableB] where - showMaybe :: Maybe String -> String - showMaybe :: Maybe String -> String -showMaybe = String -> Maybe String -> String + showMaybe :: Maybe String -> String + showMaybe :: Maybe String -> String +showMaybe = String -> Maybe String -> String forall a. a -> Maybe a -> a fromMaybe String "n/a" - showMaybeVersion :: Maybe Version -> String - showMaybeVersion :: Maybe Version -> String -showMaybeVersion = String -> (Version -> String) -> Maybe Version -> String + showMaybeVersion :: Maybe Version -> String + showMaybeVersion :: Maybe Version -> String +showMaybeVersion = String -> (Version -> String) -> Maybe Version -> String forall b a. b -> (a -> b) -> Maybe a -> b maybe String "n/a" Version -> String diff --git a/src/Poseidon.CLI.OptparseApplicativeParsers.html b/src/Poseidon.CLI.OptparseApplicativeParsers.html index a3a1f074..df9ca51f 100644 --- a/src/Poseidon.CLI.OptparseApplicativeParsers.html +++ b/src/Poseidon.CLI.OptparseApplicativeParsers.html @@ -200,7 +200,7 @@ <$> (String -> Either String Version) -> ReadM Version forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String Version -readPoseidonVersionString) ( +readPoseidonVersionString) ( String -> Mod OptionFields (Maybe Version) forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -233,10 +233,10 @@ Nothing ) where - readPoseidonVersionString :: String -> Either String Version - readPoseidonVersionString :: String -> Either String Version -readPoseidonVersionString String -s = case Parsec String () Version + readPoseidonVersionString :: String -> Either String Version + readPoseidonVersionString :: String -> Either String Version +readPoseidonVersionString String +s = case Parsec String () Version -> () -> String -> String -> Either ParseError Version forall s t u a. Stream s Identity t => @@ -244,18 +244,18 @@ P.runParser Parsec String () Version parseVersion () String "" String -s of - Left ParseError -p -> String -> Either String Version +s of + Left ParseError +p -> String -> Either String Version forall a b. a -> Either a b Left (ParseError -> String showParsecErr ParseError -p) - Right Version -x -> Version -> Either String Version +p) + Right Version +x -> Version -> Either String Version forall a b. b -> Either a b Right Version -x +x parseDebugMode :: OP.Parser LogMode parseDebugMode :: Parser LogMode @@ -283,7 +283,7 @@ OP.option ((String -> Either String LogMode) -> ReadM LogMode forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String LogMode -readLogMode) ( +readLogMode) ( String -> Mod OptionFields LogMode forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -318,11 +318,11 @@ OP.showDefault ) where - readLogMode :: String -> Either String LogMode - readLogMode :: String -> Either String LogMode -readLogMode String -s = case String -s of + readLogMode :: String -> Either String LogMode + readLogMode :: String -> Either String LogMode +readLogMode String +s = case String +s of String "NoLog" -> LogMode -> Either String LogMode forall a b. b -> Either a b @@ -361,7 +361,7 @@ OP.option ((String -> Either String TestMode) -> ReadM TestMode forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String TestMode -readTestMode) ( +readTestMode) ( String -> Mod OptionFields TestMode forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -402,11 +402,11 @@ OP.internal ) where - readTestMode :: String -> Either String TestMode - readTestMode :: String -> Either String TestMode -readTestMode String -s = case String -s of + readTestMode :: String -> Either String TestMode + readTestMode :: String -> Either String TestMode +readTestMode String +s = case String +s of String "Testing" -> TestMode -> Either String TestMode forall a b. b -> Either a b @@ -431,7 +431,7 @@ OP.option ((String -> Either String ErrorLength) -> ReadM ErrorLength forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String ErrorLength -readErrorLengthString) ( +readErrorLengthString) ( String -> Mod OptionFields ErrorLength forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -466,12 +466,12 @@ forall a (f :: * -> *). Show a => Mod f a OP.showDefault ) where - readErrorLengthString :: String -> Either String ErrorLength - readErrorLengthString :: String -> Either String ErrorLength -readErrorLengthString String -s = do + readErrorLengthString :: String -> Either String ErrorLength + readErrorLengthString :: String -> Either String ErrorLength +readErrorLengthString String +s = do if String -s String -> String -> Bool +s String -> String -> Bool forall a. Eq a => a -> a -> Bool == String "Inf" @@ -482,16 +482,16 @@ else case String -> Maybe Int forall a. Read a => String -> Maybe a readMaybe String -s of - Just Int -n -> ErrorLength -> Either String ErrorLength +s of + Just Int +n -> ErrorLength -> Either String ErrorLength forall a b. b -> Either a b Right (ErrorLength -> Either String ErrorLength) -> ErrorLength -> Either String ErrorLength forall a b. (a -> b) -> a -> b $ Int -> ErrorLength CharCount Int -n +n Maybe Int Nothing -> String -> Either String ErrorLength forall a b. a -> Either a b @@ -517,28 +517,28 @@ parseChecksumsToRectify :: OP.Parser ChecksumsToRectify parseChecksumsToRectify :: Parser ChecksumsToRectify parseChecksumsToRectify = Parser ChecksumsToRectify -parseChecksumNone Parser ChecksumsToRectify +parseChecksumNone Parser ChecksumsToRectify -> Parser ChecksumsToRectify -> Parser ChecksumsToRectify forall a. Parser a -> Parser a -> Parser a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Parser ChecksumsToRectify -parseChecksumAll Parser ChecksumsToRectify +parseChecksumAll Parser ChecksumsToRectify -> Parser ChecksumsToRectify -> Parser ChecksumsToRectify forall a. Parser a -> Parser a -> Parser a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Parser ChecksumsToRectify -parseChecksumsDetail +parseChecksumsDetail where - parseChecksumNone :: OP.Parser ChecksumsToRectify - parseChecksumNone :: Parser ChecksumsToRectify -parseChecksumNone = ChecksumsToRectify -> Parser ChecksumsToRectify + parseChecksumNone :: OP.Parser ChecksumsToRectify + parseChecksumNone :: Parser ChecksumsToRectify +parseChecksumNone = ChecksumsToRectify -> Parser ChecksumsToRectify forall a. a -> Parser a forall (f :: * -> *) a. Applicative f => a -> f a pure ChecksumsToRectify ChecksumNone - parseChecksumAll :: OP.Parser ChecksumsToRectify - parseChecksumAll :: Parser ChecksumsToRectify -parseChecksumAll = ChecksumsToRectify + parseChecksumAll :: OP.Parser ChecksumsToRectify + parseChecksumAll :: Parser ChecksumsToRectify +parseChecksumAll = ChecksumsToRectify ChecksumAll ChecksumsToRectify -> Parser () -> Parser ChecksumsToRectify forall a b. a -> Parser b -> Parser a forall (f :: * -> *) a b. Functor f => a -> f b -> f a @@ -556,37 +556,37 @@ forall (f :: * -> *) a. String -> Mod f a OP.help String "Update all checksums.") - parseChecksumsDetail :: OP.Parser ChecksumsToRectify - parseChecksumsDetail :: Parser ChecksumsToRectify -parseChecksumsDetail = Bool -> Bool -> Bool -> Bool -> ChecksumsToRectify + parseChecksumsDetail :: OP.Parser ChecksumsToRectify + parseChecksumsDetail :: Parser ChecksumsToRectify +parseChecksumsDetail = Bool -> Bool -> Bool -> Bool -> ChecksumsToRectify ChecksumsDetail (Bool -> Bool -> Bool -> Bool -> ChecksumsToRectify) -> Parser Bool -> Parser (Bool -> Bool -> Bool -> ChecksumsToRectify) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parser Bool -parseChecksumGeno Parser (Bool -> Bool -> Bool -> ChecksumsToRectify) +parseChecksumGeno Parser (Bool -> Bool -> Bool -> ChecksumsToRectify) -> Parser Bool -> Parser (Bool -> Bool -> ChecksumsToRectify) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Parser Bool -parseChecksumJanno Parser (Bool -> Bool -> ChecksumsToRectify) +parseChecksumJanno Parser (Bool -> Bool -> ChecksumsToRectify) -> Parser Bool -> Parser (Bool -> ChecksumsToRectify) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Parser Bool -parseChecksumSSF Parser (Bool -> ChecksumsToRectify) +parseChecksumSSF Parser (Bool -> ChecksumsToRectify) -> Parser Bool -> Parser ChecksumsToRectify forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Parser Bool -parseChecksumBib - parseChecksumGeno :: OP.Parser Bool - parseChecksumGeno :: Parser Bool -parseChecksumGeno = Mod FlagFields Bool -> Parser Bool +parseChecksumBib + parseChecksumGeno :: OP.Parser Bool + parseChecksumGeno :: Parser Bool +parseChecksumGeno = Mod FlagFields Bool -> Parser Bool OP.switch ( String -> Mod FlagFields Bool forall (f :: * -> *) a. HasName f => String -> Mod f a @@ -598,9 +598,9 @@ forall (f :: * -> *) a. String -> Mod f a OP.help String "Update genotype data checksums.") - parseChecksumJanno :: OP.Parser Bool - parseChecksumJanno :: Parser Bool -parseChecksumJanno = Mod FlagFields Bool -> Parser Bool + parseChecksumJanno :: OP.Parser Bool + parseChecksumJanno :: Parser Bool +parseChecksumJanno = Mod FlagFields Bool -> Parser Bool OP.switch ( String -> Mod FlagFields Bool forall (f :: * -> *) a. HasName f => String -> Mod f a @@ -612,9 +612,9 @@ forall (f :: * -> *) a. String -> Mod f a OP.help String "Update .janno file checksum.") - parseChecksumSSF :: OP.Parser Bool - parseChecksumSSF :: Parser Bool -parseChecksumSSF = Mod FlagFields Bool -> Parser Bool + parseChecksumSSF :: OP.Parser Bool + parseChecksumSSF :: Parser Bool +parseChecksumSSF = Mod FlagFields Bool -> Parser Bool OP.switch ( String -> Mod FlagFields Bool forall (f :: * -> *) a. HasName f => String -> Mod f a @@ -626,9 +626,9 @@ forall (f :: * -> *) a. String -> Mod f a OP.help String "Update .ssf file checksum") - parseChecksumBib :: OP.Parser Bool - parseChecksumBib :: Parser Bool -parseChecksumBib = Mod FlagFields Bool -> Parser Bool + parseChecksumBib :: OP.Parser Bool + parseChecksumBib :: Parser Bool +parseChecksumBib = Mod FlagFields Bool -> Parser Bool OP.switch ( String -> Mod FlagFields Bool forall (f :: * -> *) a. HasName f => String -> Mod f a @@ -672,7 +672,7 @@ -> ReadM VersionComponent forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String VersionComponent -readVersionComponent) ( +readVersionComponent) ( String -> Mod OptionFields VersionComponent forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -697,11 +697,11 @@ \Major, Minor or Patch (see https://semver.org)." ) where - readVersionComponent :: String -> Either String VersionComponent - readVersionComponent :: String -> Either String VersionComponent -readVersionComponent String -s = case String -s of + readVersionComponent :: String -> Either String VersionComponent + readVersionComponent :: String -> Either String VersionComponent +readVersionComponent String +s = case String +s of String "Major" -> VersionComponent -> Either String VersionComponent forall a b. b -> Either a b @@ -823,8 +823,8 @@ readContributorString :: String -> Either String [ContributorSpec] readContributorString :: String -> Either String [ContributorSpec] -readContributorString String -s = case Parsec String () [ContributorSpec] +readContributorString String +s = case Parsec String () [ContributorSpec] -> () -> String -> String -> Either ParseError [ContributorSpec] forall s t u a. Stream s Identity t => @@ -832,18 +832,18 @@ P.runParser Parsec String () [ContributorSpec] contributorSpecParser () String "" String -s of - Left ParseError -p -> String -> Either String [ContributorSpec] +s of + Left ParseError +p -> String -> Either String [ContributorSpec] forall a b. a -> Either a b Left (ParseError -> String showParsecErr ParseError -p) - Right [ContributorSpec] -x -> [ContributorSpec] -> Either String [ContributorSpec] +p) + Right [ContributorSpec] +x -> [ContributorSpec] -> Either String [ContributorSpec] forall a b. b -> Either a b Right [ContributorSpec] -x +x parseMaybeLog :: OP.Parser (Maybe String) @@ -954,10 +954,10 @@ forall a. Parser a -> Parser [a] forall (f :: * -> *) a. Alternative f => f a -> f [a] OP.many Parser (EntityInput SignedEntity) -parseSignedEntityInput +parseSignedEntityInput where - parseSignedEntityInput :: Parser (EntityInput SignedEntity) -parseSignedEntityInput = (String -> EntityInput SignedEntity + parseSignedEntityInput :: Parser (EntityInput SignedEntity) +parseSignedEntityInput = (String -> EntityInput SignedEntity forall a. String -> EntityInput a EntitiesFromFile (String -> EntityInput SignedEntity) -> Parser String -> Parser (EntityInput SignedEntity) @@ -982,7 +982,7 @@ parseFetchEntityInputs :: Parser [EntityInput PoseidonEntity] parseFetchEntityInputs = Parser [EntityInput PoseidonEntity] forall {a}. Parser [a] -parseDownloadAll Parser [EntityInput PoseidonEntity] +parseDownloadAll Parser [EntityInput PoseidonEntity] -> Parser [EntityInput PoseidonEntity] -> Parser [EntityInput PoseidonEntity] forall a. Parser a -> Parser a -> Parser a @@ -992,10 +992,10 @@ forall a. Parser a -> Parser [a] forall (f :: * -> *) a. Alternative f => f a -> f [a] OP.some Parser (EntityInput PoseidonEntity) -parseEntityInput +parseEntityInput where - parseDownloadAll :: Parser [a] -parseDownloadAll = [a] -> Mod FlagFields [a] -> Parser [a] + parseDownloadAll :: Parser [a] +parseDownloadAll = [a] -> Mod FlagFields [a] -> Parser [a] forall a. a -> Mod FlagFields a -> Parser a OP.flag' [] ( String -> Mod FlagFields [a] @@ -1009,8 +1009,8 @@ OP.help String "Download all packages the server is offering." ) - parseEntityInput :: Parser (EntityInput PoseidonEntity) -parseEntityInput = (String -> EntityInput PoseidonEntity + parseEntityInput :: Parser (EntityInput PoseidonEntity) +parseEntityInput = (String -> EntityInput PoseidonEntity forall a. String -> EntityInput a EntitiesFromFile (String -> EntityInput PoseidonEntity) -> Parser String -> Parser (EntityInput PoseidonEntity) @@ -1056,7 +1056,7 @@ forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String SignedEntitiesList forall {a}. EntitySpec a => String -> Either String [a] -readSignedEntities) ( +readSignedEntities) ( String -> Mod OptionFields SignedEntitiesList forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -1097,25 +1097,25 @@ \If there are individuals in your input packages with equal individual id, but different main group or \ \source package, they can be specified with the special syntax \"<package:group:individual>\".") where - readSignedEntities :: String -> Either String [a] -readSignedEntities String -s = case String -> Either PoseidonException [a] + readSignedEntities :: String -> Either String [a] +readSignedEntities String +s = case String -> Either PoseidonException [a] forall a. EntitySpec a => String -> Either PoseidonException [a] readEntitiesFromString String -s of - Left PoseidonException -e -> String -> Either String [a] +s of + Left PoseidonException +e -> String -> Either String [a] forall a b. a -> Either a b Left (String -> Either String [a]) -> String -> Either String [a] forall a b. (a -> b) -> a -> b $ PoseidonException -> String renderPoseidonException PoseidonException -e - Right [a] -e -> [a] -> Either String [a] +e + Right [a] +e -> [a] -> Either String [a] forall a b. b -> Either a b Right [a] -e +e parseFetchEntitiesDirect :: OP.Parser EntitiesList parseFetchEntitiesDirect :: Parser EntitiesList @@ -1126,7 +1126,7 @@ forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String EntitiesList forall {a}. EntitySpec a => String -> Either String [a] -readEntities) ( +readEntities) ( String -> Mod OptionFields EntitiesList forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -1157,25 +1157,25 @@ \fetchString uses the same parser as forgeString, but does not allow excludes. If groups or individuals are \ \specified, then packages which include these groups or individuals are included in the download.") where - readEntities :: String -> Either String [a] -readEntities String -s = case String -> Either PoseidonException [a] + readEntities :: String -> Either String [a] +readEntities String +s = case String -> Either PoseidonException [a] forall a. EntitySpec a => String -> Either PoseidonException [a] readEntitiesFromString String -s of - Left PoseidonException -e -> String -> Either String [a] +s of + Left PoseidonException +e -> String -> Either String [a] forall a b. a -> Either a b Left (String -> Either String [a]) -> String -> Either String [a] forall a b. (a -> b) -> a -> b $ PoseidonException -> String renderPoseidonException PoseidonException -e - Right [a] -e -> [a] -> Either String [a] +e + Right [a] +e -> [a] -> Either String [a] forall a b. b -> Either a b Right [a] -e +e parseForgeEntitiesFromFile :: OP.Parser FilePath parseForgeEntitiesFromFile :: Parser String @@ -1268,10 +1268,10 @@ parseOutGenotypeFormat :: Bool -> OP.Parser GenotypeFormatSpec parseOutGenotypeFormat :: Bool -> Parser GenotypeFormatSpec -parseOutGenotypeFormat Bool -withDefault = +parseOutGenotypeFormat Bool +withDefault = if Bool -withDefault +withDefault then ReadM GenotypeFormatSpec -> Mod OptionFields GenotypeFormatSpec -> Parser GenotypeFormatSpec forall a. ReadM a -> Mod OptionFields a -> Parser a @@ -1279,8 +1279,8 @@ -> ReadM GenotypeFormatSpec forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String GenotypeFormatSpec -readGenotypeFormat) Mod OptionFields GenotypeFormatSpec -settingsWithDefault +readGenotypeFormat) Mod OptionFields GenotypeFormatSpec +settingsWithDefault else ReadM GenotypeFormatSpec -> Mod OptionFields GenotypeFormatSpec -> Parser GenotypeFormatSpec forall a. ReadM a -> Mod OptionFields a -> Parser a @@ -1288,12 +1288,12 @@ -> ReadM GenotypeFormatSpec forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String GenotypeFormatSpec -readGenotypeFormat) Mod OptionFields GenotypeFormatSpec +readGenotypeFormat) Mod OptionFields GenotypeFormatSpec forall {a}. Mod OptionFields a -settingsWithoutDefault +settingsWithoutDefault where - settingsWithDefault :: Mod OptionFields GenotypeFormatSpec -settingsWithDefault = + settingsWithDefault :: Mod OptionFields GenotypeFormatSpec +settingsWithDefault = String -> Mod OptionFields GenotypeFormatSpec forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -1329,8 +1329,8 @@ Mod OptionFields GenotypeFormatSpec forall a (f :: * -> *). Show a => Mod f a OP.showDefault - settingsWithoutDefault :: Mod OptionFields a -settingsWithoutDefault = + settingsWithoutDefault :: Mod OptionFields a +settingsWithoutDefault = String -> Mod OptionFields a forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -1347,11 +1347,11 @@ forall (f :: * -> *) a. String -> Mod f a OP.help String "the format of the output genotype data: EIGENSTRAT or PLINK." - readGenotypeFormat :: String -> Either String GenotypeFormatSpec - readGenotypeFormat :: String -> Either String GenotypeFormatSpec -readGenotypeFormat String -s = case String -s of + readGenotypeFormat :: String -> Either String GenotypeFormatSpec + readGenotypeFormat :: String -> Either String GenotypeFormatSpec +readGenotypeFormat String +s = case String +s of String "EIGENSTRAT" -> GenotypeFormatSpec -> Either String GenotypeFormatSpec forall a b. b -> Either a b @@ -1650,7 +1650,7 @@ parseInGenoWithoutSNPSet :: OP.Parser GenotypeDataSpec parseInGenoWithoutSNPSet :: Parser GenotypeDataSpec parseInGenoWithoutSNPSet = GenoInput -> GenotypeDataSpec -createGeno (GenoInput -> GenotypeDataSpec) +createGeno (GenoInput -> GenotypeDataSpec) -> Parser GenoInput -> Parser GenotypeDataSpec forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Parser GenoInput @@ -1660,13 +1660,13 @@ <|> Parser GenoInput parseInGenoSep) where - createGeno :: GenoInput -> GenotypeDataSpec - createGeno :: GenoInput -> GenotypeDataSpec -createGeno (GenotypeFormatSpec -a,String -b,String -c,String -d) = GenotypeFormatSpec + createGeno :: GenoInput -> GenotypeDataSpec + createGeno :: GenoInput -> GenotypeDataSpec +createGeno (GenotypeFormatSpec +a,String +b,String +c,String +d) = GenotypeFormatSpec -> String -> Maybe String -> String @@ -1676,14 +1676,14 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -a String -b Maybe String +a String +b Maybe String forall a. Maybe a Nothing String -c Maybe String +c Maybe String forall a. Maybe a Nothing String -d Maybe String +d Maybe String forall a. Maybe a Nothing Maybe SNPSetSpec forall a. Maybe a @@ -1692,7 +1692,7 @@ parseInGenotypeDataset :: OP.Parser GenotypeDataSpec parseInGenotypeDataset :: Parser GenotypeDataSpec parseInGenotypeDataset = GenoInput -> Maybe SNPSetSpec -> GenotypeDataSpec -createGeno (GenoInput -> Maybe SNPSetSpec -> GenotypeDataSpec) +createGeno (GenoInput -> Maybe SNPSetSpec -> GenotypeDataSpec) -> Parser GenoInput -> Parser (Maybe SNPSetSpec -> GenotypeDataSpec) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -1708,13 +1708,13 @@ <*> Parser (Maybe SNPSetSpec) parseGenotypeSNPSet where - createGeno :: GenoInput -> Maybe SNPSetSpec -> GenotypeDataSpec - createGeno :: GenoInput -> Maybe SNPSetSpec -> GenotypeDataSpec -createGeno (GenotypeFormatSpec -a,String -b,String -c,String -d) = GenotypeFormatSpec + createGeno :: GenoInput -> Maybe SNPSetSpec -> GenotypeDataSpec + createGeno :: GenoInput -> Maybe SNPSetSpec -> GenotypeDataSpec +createGeno (GenotypeFormatSpec +a,String +b,String +c,String +d) = GenotypeFormatSpec -> String -> Maybe String -> String @@ -1724,14 +1724,14 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -a String -b Maybe String +a String +b Maybe String forall a. Maybe a Nothing String -c Maybe String +c Maybe String forall a. Maybe a Nothing String -d Maybe String +d Maybe String forall a. Maybe a Nothing @@ -1744,7 +1744,7 @@ OP.option ((String -> Either String GenoInput) -> ReadM GenoInput forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String GenoInput -readGenoInput) ( +readGenoInput) ( String -> Mod OptionFields GenoInput forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -1777,21 +1777,21 @@ \file pairs (.geno.gz, .snp.gz) or (.bim.gz, .bed.gz) are both zipped, but not the .fam or .ind file. \ \If a .ind or .fam file is given, it is assumed that none of the file triples is zipped.") where - readGenoInput :: FilePath -> Either String GenoInput - readGenoInput :: String -> Either String GenoInput -readGenoInput String -p = String -> String -> Either String GenoInput -makeGenoInput (String -> String + readGenoInput :: FilePath -> Either String GenoInput + readGenoInput :: String -> Either String GenoInput +readGenoInput String +p = String -> String -> Either String GenoInput +makeGenoInput (String -> String dropExtensions String -p) (String -> String +p) (String -> String takeExtensions String -p) - makeGenoInput :: String -> String -> Either String GenoInput -makeGenoInput String -path String -ext +p) + makeGenoInput :: String -> String -> Either String GenoInput +makeGenoInput String +path String +ext | String -ext String -> [String] -> Bool +ext String -> [String] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [String @@ -1801,17 +1801,17 @@ forall a b. b -> Either a b Right (GenotypeFormatSpec GenotypeFormatEigenstrat, String -path String -> String -> String +path String -> String -> String <.> String ".geno", String -path String -> String -> String +path String -> String -> String <.> String ".snp", String -path String -> String -> String +path String -> String -> String <.> String ".ind") | String -ext String -> [String] -> Bool +ext String -> [String] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [String @@ -1820,17 +1820,17 @@ forall a b. b -> Either a b Right (GenotypeFormatSpec GenotypeFormatEigenstrat, String -path String -> String -> String +path String -> String -> String <.> String ".geno.gz", String -path String -> String -> String +path String -> String -> String <.> String ".snp.gz", String -path String -> String -> String +path String -> String -> String <.> String ".ind") | String -ext String -> [String] -> Bool +ext String -> [String] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [String @@ -1840,17 +1840,17 @@ forall a b. b -> Either a b Right (GenotypeFormatSpec GenotypeFormatPlink, String -path String -> String -> String +path String -> String -> String <.> String ".bed", String -path String -> String -> String +path String -> String -> String <.> String ".bim", String -path String -> String -> String +path String -> String -> String <.> String ".fam") | String -ext String -> [String] -> Bool +ext String -> [String] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [String @@ -1859,13 +1859,13 @@ forall a b. b -> Either a b Right (GenotypeFormatSpec GenotypeFormatPlink, String -path String -> String -> String +path String -> String -> String <.> String ".bed.gz", String -path String -> String -> String +path String -> String -> String <.> String ".bim.gz", String -path String -> String -> String +path String -> String -> String <.> String ".fam") | Bool @@ -1878,7 +1878,7 @@ "unknown file extension: " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -ext +ext parseInGenoSep :: OP.Parser GenoInput parseInGenoSep :: Parser GenoInput @@ -1912,7 +1912,7 @@ -> ReadM GenotypeFormatSpec forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String GenotypeFormatSpec -readGenotypeFormat) ( +readGenotypeFormat) ( String -> Mod OptionFields GenotypeFormatSpec forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -1935,11 +1935,11 @@ "The format of the input genotype data: EIGENSTRAT or PLINK. \ \Only necessary for data input with --genoFile + --snpFile + --indFile.") where - readGenotypeFormat :: String -> Either String GenotypeFormatSpec - readGenotypeFormat :: String -> Either String GenotypeFormatSpec -readGenotypeFormat String -s = case String -s of + readGenotypeFormat :: String -> Either String GenotypeFormatSpec + readGenotypeFormat :: String -> Either String GenotypeFormatSpec +readGenotypeFormat String +s = case String +s of String "EIGENSTRAT" -> GenotypeFormatSpec -> Either String GenotypeFormatSpec forall a b. b -> Either a b @@ -2041,7 +2041,7 @@ <$> (String -> Either String SNPSetSpec) -> ReadM SNPSetSpec forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String SNPSetSpec -readSnpSet) ( +readSnpSet) ( String -> Mod OptionFields (Maybe SNPSetSpec) forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -2076,11 +2076,11 @@ Just SNPSetSpec SNPSetOther)) where - readSnpSet :: String -> Either String SNPSetSpec - readSnpSet :: String -> Either String SNPSetSpec -readSnpSet String -s = case String -s of + readSnpSet :: String -> Either String SNPSetSpec + readSnpSet :: String -> Either String SNPSetSpec +readSnpSet String +s = case String +s of String "1240K" -> SNPSetSpec -> Either String SNPSetSpec forall a b. b -> Either a b @@ -2292,7 +2292,7 @@ OP.switch Mod FlagFields Bool forall a. Mod FlagFields a onlyGenoOutputDocu -onlyGenoOutputDocu :: OP.Mod OP.FlagFields a +onlyGenoOutputDocu :: OP.Mod OP.FlagFields a onlyGenoOutputDocu :: forall a. Mod FlagFields a onlyGenoOutputDocu = String -> Mod FlagFields a @@ -2321,7 +2321,7 @@ OP.switch Mod FlagFields Bool forall a. Mod FlagFields a minimalOutputDocu -minimalOutputDocu :: OP.Mod OP.FlagFields a +minimalOutputDocu :: OP.Mod OP.FlagFields a minimalOutputDocu :: forall a. Mod FlagFields a minimalOutputDocu = String -> Mod FlagFields a @@ -2436,22 +2436,22 @@ parseListEntity :: OP.Parser ListEntity parseListEntity :: Parser ListEntity parseListEntity = Parser ListEntity -parseListPackages Parser ListEntity -> Parser ListEntity -> Parser ListEntity +parseListPackages Parser ListEntity -> Parser ListEntity -> Parser ListEntity forall a. Parser a -> Parser a -> Parser a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Parser ListEntity -parseListGroups Parser ListEntity -> Parser ListEntity -> Parser ListEntity +parseListGroups Parser ListEntity -> Parser ListEntity -> Parser ListEntity forall a. Parser a -> Parser a -> Parser a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> (Parser () -parseListIndividualsDummy Parser () -> Parser ListEntity -> Parser ListEntity +parseListIndividualsDummy Parser () -> Parser ListEntity -> Parser ListEntity forall a b. Parser a -> Parser b -> Parser b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> Parser ListEntity -parseListIndividualsExtraCols) +parseListIndividualsExtraCols) where - parseListPackages :: Parser ListEntity -parseListPackages = ListEntity -> Mod FlagFields ListEntity -> Parser ListEntity + parseListPackages :: Parser ListEntity +parseListPackages = ListEntity -> Mod FlagFields ListEntity -> Parser ListEntity forall a. a -> Mod FlagFields a -> Parser a OP.flag' ListEntity ListPackages ( @@ -2467,8 +2467,8 @@ OP.help String "List all packages." ) - parseListGroups :: Parser ListEntity -parseListGroups = ListEntity -> Mod FlagFields ListEntity -> Parser ListEntity + parseListGroups :: Parser ListEntity +parseListGroups = ListEntity -> Mod FlagFields ListEntity -> Parser ListEntity forall a. a -> Mod FlagFields a -> Parser a OP.flag' ListEntity ListGroups ( @@ -2483,8 +2483,8 @@ forall (f :: * -> *) a. String -> Mod f a OP.help String "List all groups, ignoring any group names after the first as specified in the .janno-file.") - parseListIndividualsDummy :: Parser () -parseListIndividualsDummy = () -> Mod FlagFields () -> Parser () + parseListIndividualsDummy :: Parser () +parseListIndividualsDummy = () -> Mod FlagFields () -> Parser () forall a. a -> Mod FlagFields a -> Parser a OP.flag' () ( String -> Mod FlagFields () @@ -2497,13 +2497,13 @@ forall (f :: * -> *) a. String -> Mod f a OP.help String "List all individuals/samples.") - parseListIndividualsExtraCols :: Parser ListEntity -parseListIndividualsExtraCols = AddJannoColSpec -> ListEntity + parseListIndividualsExtraCols :: Parser ListEntity +parseListIndividualsExtraCols = AddJannoColSpec -> ListEntity ListIndividuals (AddJannoColSpec -> ListEntity) -> Parser AddJannoColSpec -> Parser ListEntity forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Parser AddJannoColSpec -parseAllJannoCols Parser AddJannoColSpec +parseAllJannoCols Parser AddJannoColSpec -> Parser AddJannoColSpec -> Parser AddJannoColSpec forall a. Parser a -> Parser a -> Parser a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a @@ -2515,9 +2515,9 @@ forall a. Parser a -> Parser [a] forall (f :: * -> *) a. Alternative f => f a -> f [a] OP.many Parser String -parseExtraCol)) - parseAllJannoCols :: Parser AddJannoColSpec -parseAllJannoCols = AddJannoColSpec +parseExtraCol)) + parseAllJannoCols :: Parser AddJannoColSpec +parseAllJannoCols = AddJannoColSpec -> Mod FlagFields AddJannoColSpec -> Parser AddJannoColSpec forall a. a -> Mod FlagFields a -> Parser a OP.flag' AddJannoColSpec @@ -2531,8 +2531,8 @@ forall (f :: * -> *) a. String -> Mod f a OP.help String "output all Janno Columns") - parseExtraCol :: Parser String -parseExtraCol = Mod OptionFields String -> Parser String + parseExtraCol :: Parser String +parseExtraCol = Mod OptionFields String -> Parser String forall s. IsString s => Mod OptionFields s -> Parser s OP.strOption ( Char -> Mod OptionFields String @@ -2805,9 +2805,9 @@ readPlinkPopName :: String -> Either String PlinkPopNameMode readPlinkPopName :: String -> Either String PlinkPopNameMode -readPlinkPopName String -s = case String -s of +readPlinkPopName String +s = case String +s of String "asFamily" -> PlinkPopNameMode -> Either String PlinkPopNameMode forall a b. b -> Either a b @@ -2960,10 +2960,10 @@ -> Parser (Maybe (String, [String], String)) forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a) OP.optional Parser (String, [String], String) -parseFiles +parseFiles where - parseFiles :: Parser (String, [String], String) -parseFiles = (,,) (String -> [String] -> String -> (String, [String], String)) + parseFiles :: Parser (String, [String], String) +parseFiles = (,,) (String -> [String] -> String -> (String, [String], String)) -> Parser String -> Parser ([String] -> String -> (String, [String], String)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -3062,18 +3062,18 @@ forall a. Parser a -> Parser [a] forall (f :: * -> *) a. Alternative f => f a -> f [a] OP.some Parser (String, String) -parseArchiveBasePath +parseArchiveBasePath where - parseArchiveBasePath :: OP.Parser (String, FilePath) - parseArchiveBasePath :: Parser (String, String) -parseArchiveBasePath = ReadM (String, String) + parseArchiveBasePath :: OP.Parser (String, FilePath) + parseArchiveBasePath :: Parser (String, String) +parseArchiveBasePath = ReadM (String, String) -> Mod OptionFields (String, String) -> Parser (String, String) forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option ((String -> Either String (String, String)) -> ReadM (String, String) forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String (String, String) -parseArchiveNameAndPath) ( +parseArchiveNameAndPath) ( String -> Mod OptionFields (String, String) forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -3105,26 +3105,26 @@ \packages in this path are being served. Example: arch1=/path/to/basepath. Can \ \be given multiple times. Multiple paths for the same archive are combined internally. \ \The very first named archive is considered to be the default archive on the server.") - parseArchiveNameAndPath :: String -> Either String (String, FilePath) - parseArchiveNameAndPath :: String -> Either String (String, String) -parseArchiveNameAndPath String -str = - let parts :: [String] -parts = String -> String -> [String] + parseArchiveNameAndPath :: String -> Either String (String, FilePath) + parseArchiveNameAndPath :: String -> Either String (String, String) +parseArchiveNameAndPath String +str = + let parts :: [String] +parts = String -> String -> [String] forall a. Eq a => [a] -> [a] -> [[a]] splitOn String "=" String -str +str in case [String] -parts of - [String -name, String -fp] -> (String, String) -> Either String (String, String) +parts of + [String +name, String +fp] -> (String, String) -> Either String (String, String) forall a. a -> Either String a forall (m :: * -> *) a. Monad m => a -> m a return (String -name, String -fp) +name, String +fp) [String] _ -> String -> Either String (String, String) forall a b. a -> Either a b @@ -3135,7 +3135,7 @@ "could not parse archive and base directory " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -str String -> String -> String +str String -> String -> String forall a. [a] -> [a] -> [a] ++ String ". Please use format name=path " @@ -3197,7 +3197,7 @@ parseJannocoalSourceSpec :: OP.Parser JannoSourceSpec parseJannocoalSourceSpec :: Parser JannoSourceSpec parseJannocoalSourceSpec = Parser JannoSourceSpec -parseJannocoalSingleSource Parser JannoSourceSpec +parseJannocoalSingleSource Parser JannoSourceSpec -> Parser JannoSourceSpec -> Parser JannoSourceSpec forall a. Parser a -> Parser a -> Parser a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a @@ -3208,8 +3208,8 @@ <$> Parser [String] parseBasePaths) where - parseJannocoalSingleSource :: Parser JannoSourceSpec -parseJannocoalSingleSource = ReadM JannoSourceSpec + parseJannocoalSingleSource :: Parser JannoSourceSpec +parseJannocoalSingleSource = ReadM JannoSourceSpec -> Mod OptionFields JannoSourceSpec -> Parser JannoSourceSpec forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option (String -> JannoSourceSpec @@ -3343,12 +3343,12 @@ parseJannocoalJannoColumns :: OP.Parser CoalesceJannoColumnSpec parseJannocoalJannoColumns :: Parser CoalesceJannoColumnSpec parseJannocoalJannoColumns = Parser CoalesceJannoColumnSpec -includeJannoColumns Parser CoalesceJannoColumnSpec +includeJannoColumns Parser CoalesceJannoColumnSpec -> Parser CoalesceJannoColumnSpec -> Parser CoalesceJannoColumnSpec forall a. Parser a -> Parser a -> Parser a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a OP.<|> Parser CoalesceJannoColumnSpec -excludeJannoColumns Parser CoalesceJannoColumnSpec +excludeJannoColumns Parser CoalesceJannoColumnSpec -> Parser CoalesceJannoColumnSpec -> Parser CoalesceJannoColumnSpec forall a. Parser a -> Parser a -> Parser a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a @@ -3358,8 +3358,8 @@ pure CoalesceJannoColumnSpec AllJannoColumns where - includeJannoColumns :: Parser CoalesceJannoColumnSpec -includeJannoColumns = ReadM CoalesceJannoColumnSpec + includeJannoColumns :: Parser CoalesceJannoColumnSpec +includeJannoColumns = ReadM CoalesceJannoColumnSpec -> Mod OptionFields CoalesceJannoColumnSpec -> Parser CoalesceJannoColumnSpec forall a. ReadM a -> Mod OptionFields a -> Parser a @@ -3397,8 +3397,8 @@ \If not specified, all columns that can be found in the source \ \and target will get filled." ) - excludeJannoColumns :: Parser CoalesceJannoColumnSpec -excludeJannoColumns = ReadM CoalesceJannoColumnSpec + excludeJannoColumns :: Parser CoalesceJannoColumnSpec +excludeJannoColumns = ReadM CoalesceJannoColumnSpec -> Mod OptionFields CoalesceJannoColumnSpec -> Parser CoalesceJannoColumnSpec forall a. ReadM a -> Mod OptionFields a -> Parser a diff --git a/src/Poseidon.CLI.Rectify.html b/src/Poseidon.CLI.Rectify.html index 0e9a6394..0b80481b 100644 --- a/src/Poseidon.CLI.Rectify.html +++ b/src/Poseidon.CLI.Rectify.html @@ -68,16 +68,16 @@ runRectify :: RectifyOptions -> PoseidonIO () runRectify :: RectifyOptions -> PoseidonIO () -runRectify (RectifyOptions [[Char]] -baseDirs Bool -ignorePosVer Maybe Version -newPosVer Maybe PackageVersionUpdate -pacVerUpdate ChecksumsToRectify -checksumUpdate Maybe [ContributorSpec] -newContributors Bool -onlyLatest) = do - let pacReadOpts :: PackageReadOptions -pacReadOpts = PackageReadOptions +runRectify (RectifyOptions [[Char]] +baseDirs Bool +ignorePosVer Maybe Version +newPosVer Maybe PackageVersionUpdate +pacVerUpdate ChecksumsToRectify +checksumUpdate Maybe [ContributorSpec] +newContributors Bool +onlyLatest) = do + let pacReadOpts :: PackageReadOptions +pacReadOpts = PackageReadOptions defaultPackageReadOptions { _readOptIgnoreChecksums :: Bool _readOptIgnoreChecksums = Bool @@ -90,17 +90,17 @@ False , _readOptOnlyLatest :: Bool _readOptOnlyLatest = Bool -onlyLatest +onlyLatest } - [PoseidonPackage] -allPackages <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] + [PoseidonPackage] +allPackages <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions -pacReadOpts {_readOptIgnorePosVersion :: Bool +pacReadOpts {_readOptIgnorePosVersion :: Bool _readOptIgnorePosVersion = Bool -ignorePosVer} +ignorePosVer} [[Char]] -baseDirs +baseDirs [Char] -> PoseidonIO () logInfo [Char] "Starting per-package update procedure" @@ -110,16 +110,16 @@ (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ PoseidonPackage -> PoseidonIO () -rectifyOnePackage [PoseidonPackage] -allPackages +rectifyOnePackage [PoseidonPackage] +allPackages [Char] -> PoseidonIO () logInfo [Char] "Done" where - rectifyOnePackage :: PoseidonPackage -> PoseidonIO () - rectifyOnePackage :: PoseidonPackage -> PoseidonIO () -rectifyOnePackage PoseidonPackage -inPac = do + rectifyOnePackage :: PoseidonPackage -> PoseidonIO () + rectifyOnePackage :: PoseidonPackage -> PoseidonIO () +rectifyOnePackage PoseidonPackage +inPac = do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -129,40 +129,40 @@ ++ PoseidonPackage -> [Char] forall a. HasNameAndVersion a => a -> [Char] renderNameWithVersion PoseidonPackage -inPac - PoseidonPackage -updatedPacPosVer <- Maybe Version -> PoseidonPackage -> PoseidonIO PoseidonPackage +inPac + PoseidonPackage +updatedPacPosVer <- Maybe Version -> PoseidonPackage -> PoseidonIO PoseidonPackage updatePoseidonVersion Maybe Version -newPosVer PoseidonPackage -inPac - PoseidonPackage -updatedPacContri <- Maybe [ContributorSpec] +newPosVer PoseidonPackage +inPac + PoseidonPackage +updatedPacContri <- Maybe [ContributorSpec] -> PoseidonPackage -> PoseidonIO PoseidonPackage addContributors Maybe [ContributorSpec] -newContributors PoseidonPackage -updatedPacPosVer - PoseidonPackage -updatedPacChecksums <- ChecksumsToRectify -> PoseidonPackage -> PoseidonIO PoseidonPackage +newContributors PoseidonPackage +updatedPacPosVer + PoseidonPackage +updatedPacChecksums <- ChecksumsToRectify -> PoseidonPackage -> PoseidonIO PoseidonPackage updateChecksums ChecksumsToRectify -checksumUpdate PoseidonPackage -updatedPacContri +checksumUpdate PoseidonPackage +updatedPacContri Maybe PackageVersionUpdate -> PoseidonPackage -> PoseidonIO () completeAndWritePackage Maybe PackageVersionUpdate -pacVerUpdate PoseidonPackage -updatedPacChecksums +pacVerUpdate PoseidonPackage +updatedPacChecksums updatePoseidonVersion :: Maybe Version -> PoseidonPackage -> PoseidonIO PoseidonPackage updatePoseidonVersion :: Maybe Version -> PoseidonPackage -> PoseidonIO PoseidonPackage updatePoseidonVersion Maybe Version -Nothing PoseidonPackage -pac = PoseidonPackage -> PoseidonIO PoseidonPackage +Nothing PoseidonPackage +pac = PoseidonPackage -> PoseidonIO PoseidonPackage forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -pac -updatePoseidonVersion (Just Version -ver) PoseidonPackage -pac = do +pac +updatePoseidonVersion (Just Version +ver) PoseidonPackage +pac = do [Char] -> PoseidonIO () logDebug [Char] "Updating Poseidon version" @@ -170,23 +170,23 @@ forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -pac { posPacPoseidonVersion :: Version +pac { posPacPoseidonVersion :: Version posPacPoseidonVersion = Version -ver } +ver } addContributors :: Maybe [ContributorSpec] -> PoseidonPackage -> PoseidonIO PoseidonPackage addContributors :: Maybe [ContributorSpec] -> PoseidonPackage -> PoseidonIO PoseidonPackage addContributors Maybe [ContributorSpec] -Nothing PoseidonPackage -pac = PoseidonPackage -> PoseidonIO PoseidonPackage +Nothing PoseidonPackage +pac = PoseidonPackage -> PoseidonIO PoseidonPackage forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -pac -addContributors (Just [ContributorSpec] -cs) PoseidonPackage -pac = do +pac +addContributors (Just [ContributorSpec] +cs) PoseidonPackage +pac = do [Char] -> PoseidonIO () logDebug [Char] "Updating list of contributors" @@ -194,23 +194,23 @@ forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -pac { posPacContributor :: [ContributorSpec] +pac { posPacContributor :: [ContributorSpec] posPacContributor = [ContributorSpec] -> [ContributorSpec] forall a. Eq a => [a] -> [a] nub (PoseidonPackage -> [ContributorSpec] posPacContributor PoseidonPackage -pac [ContributorSpec] -> [ContributorSpec] -> [ContributorSpec] +pac [ContributorSpec] -> [ContributorSpec] -> [ContributorSpec] forall a. [a] -> [a] -> [a] ++ [ContributorSpec] -cs) } +cs) } updateChecksums :: ChecksumsToRectify -> PoseidonPackage -> PoseidonIO PoseidonPackage updateChecksums :: ChecksumsToRectify -> PoseidonPackage -> PoseidonIO PoseidonPackage -updateChecksums ChecksumsToRectify -checksumSetting PoseidonPackage -pac = do +updateChecksums ChecksumsToRectify +checksumSetting PoseidonPackage +pac = do case ChecksumsToRectify -checksumSetting of +checksumSetting of ChecksumsToRectify ChecksumNone -> [Char] -> PoseidonIO () logDebug [Char] @@ -223,58 +223,58 @@ forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -pac +pac ChecksumsToRectify ChecksumAll -> Bool -> Bool -> Bool -> Bool -> PoseidonIO PoseidonPackage -update Bool +update Bool True Bool True Bool True Bool True - ChecksumsDetail Bool -g Bool -j Bool -s Bool -b -> Bool -> Bool -> Bool -> Bool -> PoseidonIO PoseidonPackage -update Bool -g Bool -j Bool -s Bool -b + ChecksumsDetail Bool +g Bool +j Bool +s Bool +b -> Bool -> Bool -> Bool -> Bool -> PoseidonIO PoseidonPackage +update Bool +g Bool +j Bool +s Bool +b where - update :: Bool -> Bool -> Bool -> Bool -> PoseidonIO PoseidonPackage - update :: Bool -> Bool -> Bool -> Bool -> PoseidonIO PoseidonPackage -update Bool -g Bool -j Bool -s Bool -b = do - let d :: [Char] -d = PoseidonPackage -> [Char] + update :: Bool -> Bool -> Bool -> Bool -> PoseidonIO PoseidonPackage + update :: Bool -> Bool -> Bool -> Bool -> PoseidonIO PoseidonPackage +update Bool +g Bool +j Bool +s Bool +b = do + let d :: [Char] +d = PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac - GenotypeDataSpec -newGenotypeDataSection <- +pac + GenotypeDataSpec +newGenotypeDataSection <- if Bool -g +g then do [Char] -> PoseidonIO () logDebug [Char] "Updating genotype data checksums" - let gd :: GenotypeDataSpec -gd = PoseidonPackage -> GenotypeDataSpec + let gd :: GenotypeDataSpec +gd = PoseidonPackage -> GenotypeDataSpec posPacGenotypeData PoseidonPackage -pac - Bool -genoExists <- [Char] -> ReaderT Env IO Bool -exists ([Char] -d [Char] -> [Char] -> [Char] +pac + Bool +genoExists <- [Char] -> ReaderT Env IO Bool +exists ([Char] +d [Char] -> [Char] -> [Char] </> GenotypeDataSpec -> [Char] genoFile GenotypeDataSpec -gd) - Maybe [Char] -genoChkSum <- if Bool -genoExists +gd) + Maybe [Char] +genoChkSum <- if Bool +genoExists then [Char] -> Maybe [Char] forall a. a -> Maybe a Just ([Char] -> Maybe [Char]) @@ -283,11 +283,11 @@ (Monad m, NFData b) => (a -> b) -> m a -> m b <$!!> [Char] -> ReaderT Env IO [Char] -getChk ([Char] -d [Char] -> [Char] -> [Char] +getChk ([Char] +d [Char] -> [Char] -> [Char] </> GenotypeDataSpec -> [Char] genoFile GenotypeDataSpec -gd) +gd) else Maybe [Char] -> ReaderT Env IO (Maybe [Char]) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -296,17 +296,17 @@ forall a b. (a -> b) -> a -> b $ GenotypeDataSpec -> Maybe [Char] genoFileChkSum GenotypeDataSpec -gd - Bool -snpExists <- [Char] -> ReaderT Env IO Bool -exists ([Char] -d [Char] -> [Char] -> [Char] +gd + Bool +snpExists <- [Char] -> ReaderT Env IO Bool +exists ([Char] +d [Char] -> [Char] -> [Char] </> GenotypeDataSpec -> [Char] snpFile GenotypeDataSpec -gd) - Maybe [Char] -snpChkSum <- if Bool -snpExists +gd) + Maybe [Char] +snpChkSum <- if Bool +snpExists then [Char] -> Maybe [Char] forall a. a -> Maybe a Just ([Char] -> Maybe [Char]) @@ -315,11 +315,11 @@ (Monad m, NFData b) => (a -> b) -> m a -> m b <$!!> [Char] -> ReaderT Env IO [Char] -getChk ([Char] -d [Char] -> [Char] -> [Char] +getChk ([Char] +d [Char] -> [Char] -> [Char] </> GenotypeDataSpec -> [Char] snpFile GenotypeDataSpec -gd) +gd) else Maybe [Char] -> ReaderT Env IO (Maybe [Char]) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -328,17 +328,17 @@ forall a b. (a -> b) -> a -> b $ GenotypeDataSpec -> Maybe [Char] snpFileChkSum GenotypeDataSpec -gd - Bool -indExists <- [Char] -> ReaderT Env IO Bool -exists ([Char] -d [Char] -> [Char] -> [Char] +gd + Bool +indExists <- [Char] -> ReaderT Env IO Bool +exists ([Char] +d [Char] -> [Char] -> [Char] </> GenotypeDataSpec -> [Char] indFile GenotypeDataSpec -gd) - Maybe [Char] -indChkSum <- if Bool -indExists +gd) + Maybe [Char] +indChkSum <- if Bool +indExists then [Char] -> Maybe [Char] forall a. a -> Maybe a Just ([Char] -> Maybe [Char]) @@ -347,11 +347,11 @@ (Monad m, NFData b) => (a -> b) -> m a -> m b <$!!> [Char] -> ReaderT Env IO [Char] -getChk ([Char] -d [Char] -> [Char] -> [Char] +getChk ([Char] +d [Char] -> [Char] -> [Char] </> GenotypeDataSpec -> [Char] indFile GenotypeDataSpec -gd) +gd) else Maybe [Char] -> ReaderT Env IO (Maybe [Char]) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -360,7 +360,7 @@ forall a b. (a -> b) -> a -> b $ GenotypeDataSpec -> Maybe [Char] indFileChkSum GenotypeDataSpec -gd +gd GenotypeDataSpec -> ReaderT Env IO GenotypeDataSpec forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -368,16 +368,16 @@ -> GenotypeDataSpec -> ReaderT Env IO GenotypeDataSpec forall a b. (a -> b) -> a -> b $ GenotypeDataSpec -gd { +gd { genoFileChkSum :: Maybe [Char] genoFileChkSum = Maybe [Char] -genoChkSum, +genoChkSum, snpFileChkSum :: Maybe [Char] snpFileChkSum = Maybe [Char] -snpChkSum, +snpChkSum, indFileChkSum :: Maybe [Char] indFileChkSum = Maybe [Char] -indChkSum +indChkSum } else GenotypeDataSpec -> ReaderT Env IO GenotypeDataSpec forall a. a -> ReaderT Env IO a @@ -387,18 +387,18 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> GenotypeDataSpec posPacGenotypeData PoseidonPackage -pac - Maybe [Char] -newJannoChkSum <- +pac + Maybe [Char] +newJannoChkSum <- if Bool -j +j then do [Char] -> PoseidonIO () logDebug [Char] "Updating .janno file checksums" case PoseidonPackage -> Maybe [Char] posPacJannoFile PoseidonPackage -pac of +pac of Maybe [Char] Nothing -> Maybe [Char] -> ReaderT Env IO (Maybe [Char]) forall a. a -> ReaderT Env IO a @@ -408,9 +408,9 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> Maybe [Char] posPacJannoFileChkSum PoseidonPackage -pac - Just [Char] -fn -> [Char] -> Maybe [Char] +pac + Just [Char] +fn -> [Char] -> Maybe [Char] forall a. a -> Maybe a Just ([Char] -> Maybe [Char]) -> ReaderT Env IO [Char] -> ReaderT Env IO (Maybe [Char]) @@ -418,10 +418,10 @@ (Monad m, NFData b) => (a -> b) -> m a -> m b <$!!> [Char] -> ReaderT Env IO [Char] -getChk ([Char] -d [Char] -> [Char] -> [Char] +getChk ([Char] +d [Char] -> [Char] -> [Char] </> [Char] -fn) +fn) else Maybe [Char] -> ReaderT Env IO (Maybe [Char]) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -430,18 +430,18 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> Maybe [Char] posPacJannoFileChkSum PoseidonPackage -pac - Maybe [Char] -newSeqSourceChkSum <- +pac + Maybe [Char] +newSeqSourceChkSum <- if Bool -s +s then do [Char] -> PoseidonIO () logDebug [Char] "Updating .ssf file checksums" case PoseidonPackage -> Maybe [Char] posPacSeqSourceFile PoseidonPackage -pac of +pac of Maybe [Char] Nothing -> Maybe [Char] -> ReaderT Env IO (Maybe [Char]) forall a. a -> ReaderT Env IO a @@ -451,9 +451,9 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> Maybe [Char] posPacSeqSourceFileChkSum PoseidonPackage -pac - Just [Char] -fn -> [Char] -> Maybe [Char] +pac + Just [Char] +fn -> [Char] -> Maybe [Char] forall a. a -> Maybe a Just ([Char] -> Maybe [Char]) -> ReaderT Env IO [Char] -> ReaderT Env IO (Maybe [Char]) @@ -461,10 +461,10 @@ (Monad m, NFData b) => (a -> b) -> m a -> m b <$!!> [Char] -> ReaderT Env IO [Char] -getChk ([Char] -d [Char] -> [Char] -> [Char] +getChk ([Char] +d [Char] -> [Char] -> [Char] </> [Char] -fn) +fn) else Maybe [Char] -> ReaderT Env IO (Maybe [Char]) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -473,18 +473,18 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> Maybe [Char] posPacSeqSourceFileChkSum PoseidonPackage -pac - Maybe [Char] -newBibChkSum <- +pac + Maybe [Char] +newBibChkSum <- if Bool -b +b then do [Char] -> PoseidonIO () logDebug [Char] "Updating .bib file checksums" case PoseidonPackage -> Maybe [Char] posPacBibFile PoseidonPackage -pac of +pac of Maybe [Char] Nothing -> Maybe [Char] -> ReaderT Env IO (Maybe [Char]) forall a. a -> ReaderT Env IO a @@ -494,9 +494,9 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> Maybe [Char] posPacBibFileChkSum PoseidonPackage -pac - Just [Char] -fn -> [Char] -> Maybe [Char] +pac + Just [Char] +fn -> [Char] -> Maybe [Char] forall a. a -> Maybe a Just ([Char] -> Maybe [Char]) -> ReaderT Env IO [Char] -> ReaderT Env IO (Maybe [Char]) @@ -504,10 +504,10 @@ (Monad m, NFData b) => (a -> b) -> m a -> m b <$!!> [Char] -> ReaderT Env IO [Char] -getChk ([Char] -d [Char] -> [Char] -> [Char] +getChk ([Char] +d [Char] -> [Char] -> [Char] </> [Char] -fn) +fn) else Maybe [Char] -> ReaderT Env IO (Maybe [Char]) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -516,7 +516,7 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> Maybe [Char] posPacBibFileChkSum PoseidonPackage -pac +pac PoseidonPackage -> PoseidonIO PoseidonPackage forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -524,22 +524,22 @@ -> PoseidonPackage -> PoseidonIO PoseidonPackage forall a b. (a -> b) -> a -> b $ PoseidonPackage -pac { +pac { posPacGenotypeData :: GenotypeDataSpec posPacGenotypeData = GenotypeDataSpec -newGenotypeDataSection, +newGenotypeDataSection, posPacJannoFileChkSum :: Maybe [Char] posPacJannoFileChkSum = Maybe [Char] -newJannoChkSum, +newJannoChkSum, posPacSeqSourceFileChkSum :: Maybe [Char] posPacSeqSourceFileChkSum = Maybe [Char] -newSeqSourceChkSum, +newSeqSourceChkSum, posPacBibFileChkSum :: Maybe [Char] posPacBibFileChkSum = Maybe [Char] -newBibChkSum +newBibChkSum } - getChk :: [Char] -> ReaderT Env IO [Char] -getChk = IO [Char] -> ReaderT Env IO [Char] + getChk :: [Char] -> ReaderT Env IO [Char] +getChk = IO [Char] -> ReaderT Env IO [Char] forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO [Char] -> ReaderT Env IO [Char]) @@ -547,8 +547,8 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> IO [Char] getChecksum - exists :: [Char] -> ReaderT Env IO Bool -exists = IO Bool -> ReaderT Env IO Bool + exists :: [Char] -> ReaderT Env IO Bool +exists = IO Bool -> ReaderT Env IO Bool forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Bool -> ReaderT Env IO Bool) @@ -560,8 +560,8 @@ completeAndWritePackage :: Maybe PackageVersionUpdate -> PoseidonPackage -> PoseidonIO () completeAndWritePackage :: Maybe PackageVersionUpdate -> PoseidonPackage -> PoseidonIO () completeAndWritePackage Maybe PackageVersionUpdate -Nothing PoseidonPackage -pac = do +Nothing PoseidonPackage +pac = do [Char] -> PoseidonIO () logDebug [Char] "Writing rectified POSEIDON.yml file" @@ -572,21 +572,21 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> IO () writePoseidonPackage PoseidonPackage -pac -completeAndWritePackage (Just (PackageVersionUpdate VersionComponent -component Maybe [Char] -logText)) PoseidonPackage -pac = do - PoseidonPackage -updatedPacPacVer <- VersionComponent -> PoseidonPackage -> PoseidonIO PoseidonPackage +pac +completeAndWritePackage (Just (PackageVersionUpdate VersionComponent +component Maybe [Char] +logText)) PoseidonPackage +pac = do + PoseidonPackage +updatedPacPacVer <- VersionComponent -> PoseidonPackage -> PoseidonIO PoseidonPackage updatePackageVersion VersionComponent -component PoseidonPackage -pac - PoseidonPackage -updatePacChangeLog <- Maybe [Char] -> PoseidonPackage -> PoseidonIO PoseidonPackage +component PoseidonPackage +pac + PoseidonPackage +updatePacChangeLog <- Maybe [Char] -> PoseidonPackage -> PoseidonIO PoseidonPackage writeOrUpdateChangelogFile Maybe [Char] -logText PoseidonPackage -updatedPacPacVer +logText PoseidonPackage +updatedPacPacVer [Char] -> PoseidonIO () logDebug [Char] "Writing rectified POSEIDON.yml file" @@ -597,33 +597,33 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> IO () writePoseidonPackage PoseidonPackage -updatePacChangeLog +updatePacChangeLog updatePackageVersion :: VersionComponent -> PoseidonPackage -> PoseidonIO PoseidonPackage updatePackageVersion :: VersionComponent -> PoseidonPackage -> PoseidonIO PoseidonPackage -updatePackageVersion VersionComponent -component PoseidonPackage -pac = do +updatePackageVersion VersionComponent +component PoseidonPackage +pac = do [Char] -> PoseidonIO () logDebug [Char] "Updating package version" - (UTCTime Day -today DiffTime + (UTCTime Day +today DiffTime _) <- IO UTCTime -> ReaderT Env IO UTCTime forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO UTCTime getCurrentTime - let pacNameAndVer :: PacNameAndVersion -pacNameAndVer = PoseidonPackage -> PacNameAndVersion + let pacNameAndVer :: PacNameAndVersion +pacNameAndVer = PoseidonPackage -> PacNameAndVersion posPacNameAndVersion PoseidonPackage -pac - let outPac :: PoseidonPackage -outPac = PoseidonPackage -pac { +pac + let outPac :: PoseidonPackage +outPac = PoseidonPackage +pac { posPacNameAndVersion :: PacNameAndVersion posPacNameAndVersion = PacNameAndVersion -pacNameAndVer {panavVersion :: Maybe Version +pacNameAndVer {panavVersion :: Maybe Version panavVersion = Maybe Version -> (Version -> Maybe Version) -> Maybe Version -> Maybe Version forall b a. b -> (a -> b) -> Maybe a -> b @@ -643,39 +643,39 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . VersionComponent -> Version -> Version updateThreeComponentVersion VersionComponent -component) +component) (PoseidonPackage -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PoseidonPackage -pac) +pac) } , posPacLastModified :: Maybe Day posPacLastModified = Day -> Maybe Day forall a. a -> Maybe a Just Day -today +today } PoseidonPackage -> PoseidonIO PoseidonPackage forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -outPac +outPac writeOrUpdateChangelogFile :: Maybe String -> PoseidonPackage -> PoseidonIO PoseidonPackage writeOrUpdateChangelogFile :: Maybe [Char] -> PoseidonPackage -> PoseidonIO PoseidonPackage writeOrUpdateChangelogFile Maybe [Char] -Nothing PoseidonPackage -pac = PoseidonPackage -> PoseidonIO PoseidonPackage +Nothing PoseidonPackage +pac = PoseidonPackage -> PoseidonIO PoseidonPackage forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -pac -writeOrUpdateChangelogFile (Just [Char] -logText) PoseidonPackage -pac = do +pac +writeOrUpdateChangelogFile (Just [Char] +logText) PoseidonPackage +pac = do case PoseidonPackage -> Maybe [Char] posPacChangelogFile PoseidonPackage -pac of +pac of Maybe [Char] Nothing -> do [Char] -> PoseidonIO () @@ -689,7 +689,7 @@ $ [Char] -> [Char] -> IO () writeFile (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> [Char] -> [Char] +pac [Char] -> [Char] -> [Char] </> [Char] "CHANGELOG.md") ([Char] -> IO ()) -> [Char] -> IO () forall a b. (a -> b) -> a -> b @@ -705,14 +705,14 @@ $ PoseidonPackage -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PoseidonPackage -pac) [Char] -> [Char] -> [Char] +pac) [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] ": " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -logText [Char] -> [Char] -> [Char] +logText [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "\n" @@ -720,18 +720,18 @@ forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -pac { posPacChangelogFile :: Maybe [Char] +pac { posPacChangelogFile :: Maybe [Char] posPacChangelogFile = [Char] -> Maybe [Char] forall a. a -> Maybe a Just [Char] "CHANGELOG.md" } - Just [Char] -x -> do + Just [Char] +x -> do [Char] -> PoseidonIO () logDebug [Char] "Updating CHANGELOG.md" - [Char] -changelogFile <- IO [Char] -> ReaderT Env IO [Char] + [Char] +changelogFile <- IO [Char] -> ReaderT Env IO [Char] forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO [Char] -> ReaderT Env IO [Char]) @@ -740,9 +740,9 @@ $ [Char] -> IO [Char] readFile (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> [Char] -> [Char] +pac [Char] -> [Char] -> [Char] </> [Char] -x) +x) IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -751,9 +751,9 @@ $ [Char] -> IO () removeFile (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> [Char] -> [Char] +pac [Char] -> [Char] -> [Char] </> [Char] -x) +x) IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -762,9 +762,9 @@ $ [Char] -> [Char] -> IO () writeFile (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> [Char] -> [Char] +pac [Char] -> [Char] -> [Char] </> [Char] -x) ([Char] -> IO ()) -> [Char] -> IO () +x) ([Char] -> IO ()) -> [Char] -> IO () forall a b. (a -> b) -> a -> b $ [Char] @@ -778,23 +778,23 @@ $ PoseidonPackage -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PoseidonPackage -pac) [Char] -> [Char] -> [Char] +pac) [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] ": " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -logText [Char] -> [Char] -> [Char] +logText [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "\n" [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -changelogFile +changelogFile PoseidonPackage -> PoseidonIO PoseidonPackage forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -pac +pac \ No newline at end of file diff --git a/src/Poseidon.CLI.Serve.html b/src/Poseidon.CLI.Serve.html index d993e631..747878ae 100644 --- a/src/Poseidon.CLI.Serve.html +++ b/src/Poseidon.CLI.Serve.html @@ -64,7 +64,7 @@ , ServeOptions -> Maybe ([Char], [[Char]], [Char]) cliCertFiles :: Maybe (FilePath, [FilePath], FilePath) } - deriving (Int -> ServeOptions -> ShowS + deriving (Int -> ServeOptions -> ShowS [ServeOptions] -> ShowS ServeOptions -> [Char] (Int -> ServeOptions -> ShowS) @@ -85,17 +85,17 @@ type ArchiveName = String -type ArchiveStore a = [(ArchiveName, a)] -- a generic lookup table from an archive name to an item +type ArchiveStore a = [(ArchiveName, a)] -- a generic lookup table from an archive name to an item -- we have two concrete ones: ArchiveStore [PoseidonPackage] and ArchiveStore ZipStore runServerMainThread :: ServeOptions -> PoseidonIO () runServerMainThread :: ServeOptions -> PoseidonIO () -runServerMainThread ServeOptions -opts = do +runServerMainThread ServeOptions +opts = do -- the MVar is used as a signal from the server to the calling thread that it is ready. -- It is used for testing. Here we just use it as a dummy. - MVar () -dummy <- IO (MVar ()) -> ReaderT Env IO (MVar ()) + MVar () +dummy <- IO (MVar ()) -> ReaderT Env IO (MVar ()) forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO (MVar ()) @@ -103,41 +103,41 @@ newEmptyMVar ServeOptions -> MVar () -> PoseidonIO () runServer ServeOptions -opts MVar () -dummy +opts MVar () +dummy runServer :: ServeOptions -> MVar () -> PoseidonIO () runServer :: ServeOptions -> MVar () -> PoseidonIO () -runServer (ServeOptions [([Char], [Char])] -archBaseDirs Maybe [Char] -maybeZipPath Int -port Bool -ignoreChecksums Maybe ([Char], [[Char]], [Char]) -certFiles) MVar () -serverReady = do - let pacReadOpts :: PackageReadOptions -pacReadOpts = PackageReadOptions +runServer (ServeOptions [([Char], [Char])] +archBaseDirs Maybe [Char] +maybeZipPath Int +port Bool +ignoreChecksums Maybe ([Char], [[Char]], [Char]) +certFiles) MVar () +serverReady = do + let pacReadOpts :: PackageReadOptions +pacReadOpts = PackageReadOptions defaultPackageReadOptions { _readOptIgnoreChecksums :: Bool _readOptIgnoreChecksums = Bool -ignoreChecksums +ignoreChecksums , _readOptGenoCheck :: Bool _readOptGenoCheck = Maybe [Char] -> Bool forall a. Maybe a -> Bool isJust Maybe [Char] -maybeZipPath +maybeZipPath } [Char] -> PoseidonIO () logInfo [Char] "Server starting up. Loading packages..." - ArchiveStore [PoseidonPackage] -archiveStore <- [([Char], [Char])] + ArchiveStore [PoseidonPackage] +archiveStore <- [([Char], [Char])] -> PackageReadOptions -> PoseidonIO (ArchiveStore [PoseidonPackage]) readArchiveStore [([Char], [Char])] -archBaseDirs PackageReadOptions -pacReadOpts +archBaseDirs PackageReadOptions +pacReadOpts [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -155,38 +155,38 @@ . ArchiveStore [PoseidonPackage] -> ([Char], [PoseidonPackage]) forall a. HasCallStack => [a] -> a head) ArchiveStore [PoseidonPackage] -archiveStore [Char] -> ShowS +archiveStore [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] " as the default archive" - [([Char], ZipStore)] -zipArchiveStore <- case Maybe [Char] -maybeZipPath of + [([Char], ZipStore)] +zipArchiveStore <- case Maybe [Char] +maybeZipPath of Maybe [Char] Nothing -> [([Char], ZipStore)] -> ReaderT Env IO [([Char], ZipStore)] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return [] - Just [Char] -z -> ArchiveStore [PoseidonPackage] + Just [Char] +z -> ArchiveStore [PoseidonPackage] -> [Char] -> ReaderT Env IO [([Char], ZipStore)] createZipArchiveStore ArchiveStore [PoseidonPackage] -archiveStore [Char] -z +archiveStore [Char] +z - let runScotty :: ScottyM () -> PoseidonIO () -runScotty = case Maybe ([Char], [[Char]], [Char]) -certFiles of + let runScotty :: ScottyM () -> PoseidonIO () +runScotty = case Maybe ([Char], [[Char]], [Char]) +certFiles of Maybe ([Char], [[Char]], [Char]) Nothing -> MVar () -> Int -> ScottyM () -> PoseidonIO () scottyHTTP MVar () -serverReady Int -port - Just ([Char] -certFile, [[Char]] -chainFiles, [Char] -keyFile) -> MVar () +serverReady Int +port + Just ([Char] +certFile, [[Char]] +chainFiles, [Char] +keyFile) -> MVar () -> Int -> [Char] -> [[Char]] @@ -194,17 +194,17 @@ -> ScottyM () -> PoseidonIO () scottyHTTPS MVar () -serverReady Int -port [Char] -certFile [[Char]] -chainFiles [Char] -keyFile +serverReady Int +port [Char] +certFile [[Char]] +chainFiles [Char] +keyFile - LogA -logA <- PoseidonIO LogA + LogA +logA <- PoseidonIO LogA envLogAction ScottyM () -> PoseidonIO () -runScotty (ScottyM () -> PoseidonIO ()) -> ScottyM () -> PoseidonIO () +runScotty (ScottyM () -> PoseidonIO ()) -> ScottyM () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do Middleware -> ScottyM () @@ -218,7 +218,7 @@ $ do LogA -> ActionM () logRequest LogA -logA +logA Text -> ActionM () text (Text -> ActionM ()) -> (Version -> Text) -> Version -> ActionM () forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -245,23 +245,23 @@ $ do LogA -> ActionM () logRequest LogA -logA - [PoseidonPackage] -pacs <- ArchiveStore [PoseidonPackage] -> ActionM [PoseidonPackage] +logA + [PoseidonPackage] +pacs <- ArchiveStore [PoseidonPackage] -> ActionM [PoseidonPackage] forall a. ArchiveStore a -> ActionM a getItemFromArchiveStore ArchiveStore [PoseidonPackage] -archiveStore - [PackageInfo] -pacInfos <- [PoseidonPackage] -> ActionT Text IO [PackageInfo] +archiveStore + [PackageInfo] +pacInfos <- [PoseidonPackage] -> ActionT Text IO [PackageInfo] forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> m [PackageInfo] packagesToPackageInfos [PoseidonPackage] -pacs - let retData :: ApiReturnData -retData = [PackageInfo] -> ApiReturnData +pacs + let retData :: ApiReturnData +retData = [PackageInfo] -> ApiReturnData ApiReturnPackageInfo [PackageInfo] -pacInfos +pacInfos ServerApiReturnType -> ActionM ServerApiReturnType forall a. a -> ActionT Text IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -272,7 +272,7 @@ ServerApiReturnType [] (ApiReturnData -> Maybe ApiReturnData forall a. a -> Maybe a Just ApiReturnData -retData) +retData) RoutePattern -> ActionM () -> ScottyM () get RoutePattern @@ -288,23 +288,23 @@ $ do LogA -> ActionM () logRequest LogA -logA - [PoseidonPackage] -pacs <- ArchiveStore [PoseidonPackage] -> ActionM [PoseidonPackage] +logA + [PoseidonPackage] +pacs <- ArchiveStore [PoseidonPackage] -> ActionM [PoseidonPackage] forall a. ArchiveStore a -> ActionM a getItemFromArchiveStore ArchiveStore [PoseidonPackage] -archiveStore - [GroupInfo] -groupInfos <- [PoseidonPackage] -> ActionT Text IO [GroupInfo] +archiveStore + [GroupInfo] +groupInfos <- [PoseidonPackage] -> ActionT Text IO [GroupInfo] forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> m [GroupInfo] getAllGroupInfo [PoseidonPackage] -pacs - let retData :: ApiReturnData -retData = [GroupInfo] -> ApiReturnData +pacs + let retData :: ApiReturnData +retData = [GroupInfo] -> ApiReturnData ApiReturnGroupInfo [GroupInfo] -groupInfos +groupInfos ServerApiReturnType -> ActionM ServerApiReturnType forall a. a -> ActionT Text IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -315,7 +315,7 @@ ServerApiReturnType [] (ApiReturnData -> Maybe ApiReturnData forall a. a -> Maybe a Just ApiReturnData -retData) +retData) RoutePattern -> ActionM () -> ScottyM () get RoutePattern @@ -331,14 +331,14 @@ $ do LogA -> ActionM () logRequest LogA -logA - [PoseidonPackage] -pacs <- ArchiveStore [PoseidonPackage] -> ActionM [PoseidonPackage] +logA + [PoseidonPackage] +pacs <- ArchiveStore [PoseidonPackage] -> ActionM [PoseidonPackage] forall a. ArchiveStore a -> ActionM a getItemFromArchiveStore ArchiveStore [PoseidonPackage] -archiveStore - Maybe [Char] -maybeAdditionalColumnsString <- ([Char] -> Maybe [Char] +archiveStore + Maybe [Char] +maybeAdditionalColumnsString <- ([Char] -> Maybe [Char] forall a. a -> Maybe a Just ([Char] -> Maybe [Char]) -> ActionT Text IO [Char] -> ActionT Text IO (Maybe [Char]) @@ -357,9 +357,9 @@ return Maybe [Char] forall a. Maybe a Nothing) - [ExtendedIndividualInfo] -indInfo <- case Maybe [Char] -maybeAdditionalColumnsString of + [ExtendedIndividualInfo] +indInfo <- case Maybe [Char] +maybeAdditionalColumnsString of Just [Char] "ALL" -> [PoseidonPackage] -> AddJannoColSpec -> ActionT Text IO [ExtendedIndividualInfo] @@ -367,25 +367,25 @@ MonadThrow m => [PoseidonPackage] -> AddJannoColSpec -> m [ExtendedIndividualInfo] getExtendedIndividualInfo [PoseidonPackage] -pacs AddJannoColSpec +pacs AddJannoColSpec AddJannoColAll -- Nothing means all Janno Columns - Just [Char] -additionalColumnsString -> - let additionalColumnNames :: [[Char]] -additionalColumnNames = [Char] -> [Char] -> [[Char]] + Just [Char] +additionalColumnsString -> + let additionalColumnNames :: [[Char]] +additionalColumnNames = [Char] -> [Char] -> [[Char]] forall a. Eq a => [a] -> [a] -> [[a]] splitOn [Char] "," [Char] -additionalColumnsString +additionalColumnsString in [PoseidonPackage] -> AddJannoColSpec -> ActionT Text IO [ExtendedIndividualInfo] forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> AddJannoColSpec -> m [ExtendedIndividualInfo] getExtendedIndividualInfo [PoseidonPackage] -pacs ([[Char]] -> AddJannoColSpec +pacs ([[Char]] -> AddJannoColSpec AddJannoColList [[Char]] -additionalColumnNames) +additionalColumnNames) Maybe [Char] Nothing -> [PoseidonPackage] -> AddJannoColSpec -> ActionT Text IO [ExtendedIndividualInfo] @@ -393,12 +393,12 @@ MonadThrow m => [PoseidonPackage] -> AddJannoColSpec -> m [ExtendedIndividualInfo] getExtendedIndividualInfo [PoseidonPackage] -pacs ([[Char]] -> AddJannoColSpec +pacs ([[Char]] -> AddJannoColSpec AddJannoColList []) - let retData :: ApiReturnData -retData = [ExtendedIndividualInfo] -> ApiReturnData + let retData :: ApiReturnData +retData = [ExtendedIndividualInfo] -> ApiReturnData ApiReturnExtIndividualInfo [ExtendedIndividualInfo] -indInfo +indInfo ServerApiReturnType -> ActionM ServerApiReturnType forall a. a -> ActionT Text IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -409,7 +409,7 @@ ServerApiReturnType [] (ApiReturnData -> Maybe ApiReturnData forall a. a -> Maybe a Just ApiReturnData -retData) +retData) -- API for retreiving package zip files Bool -> ScottyM () -> ScottyM () @@ -417,7 +417,7 @@ when (Maybe [Char] -> Bool forall a. Maybe a -> Bool isJust Maybe [Char] -maybeZipPath) (ScottyM () -> ScottyM ()) +maybeZipPath) (ScottyM () -> ScottyM ()) -> (ActionM () -> ScottyM ()) -> ActionM () -> ScottyM () forall b c a. (b -> c) -> (a -> b) -> a -> c . RoutePattern -> ActionM () -> ScottyM () @@ -427,19 +427,19 @@ $ do LogA -> ActionM () logRequest LogA -logA - ZipStore -zipStore <- [([Char], ZipStore)] -> ActionM ZipStore +logA + ZipStore +zipStore <- [([Char], ZipStore)] -> ActionM ZipStore forall a. ArchiveStore a -> ActionM a getItemFromArchiveStore [([Char], ZipStore)] -zipArchiveStore - [Char] -packageName <- Text -> ActionT Text IO [Char] +zipArchiveStore + [Char] +packageName <- Text -> ActionT Text IO [Char] forall a. Parsable a => Text -> ActionM a param Text "package_name" - Maybe [Char] -maybeVersionString <- ([Char] -> Maybe [Char] + Maybe [Char] +maybeVersionString <- ([Char] -> Maybe [Char] forall a. a -> Maybe a Just ([Char] -> Maybe [Char]) -> ActionT Text IO [Char] -> ActionT Text IO (Maybe [Char]) @@ -458,9 +458,9 @@ return Maybe [Char] forall a. Maybe a Nothing) - Maybe Version -maybeVersion <- case Maybe [Char] -maybeVersionString of + Maybe Version +maybeVersion <- case Maybe [Char] +maybeVersionString of Maybe [Char] Nothing -> Maybe Version -> ActionT Text IO (Maybe Version) forall a. a -> ActionT Text IO a @@ -468,10 +468,10 @@ return Maybe Version forall a. Maybe a Nothing - Just [Char] -versionStr -> case [Char] -> Maybe Version + Just [Char] +versionStr -> case [Char] -> Maybe Version parseVersionString [Char] -versionStr of +versionStr of Maybe Version Nothing -> Text -> ActionT Text IO (Maybe Version) forall a. Text -> ActionM a @@ -486,9 +486,9 @@ "Could not parse package version string " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] -versionStr - Just Version -v -> Maybe Version -> ActionT Text IO (Maybe Version) +versionStr + Just Version +v -> Maybe Version -> ActionT Text IO (Maybe Version) forall a. a -> ActionT Text IO a forall (m :: * -> *) a. Monad m => a -> m a return (Maybe Version -> ActionT Text IO (Maybe Version)) @@ -497,7 +497,7 @@ $ Version -> Maybe Version forall a. a -> Maybe a Just Version -v +v case ((PacNameAndVersion, [Char]) -> Down PacNameAndVersion) -> ZipStore -> ZipStore forall b a. Ord b => (a -> b) -> [a] -> [a] @@ -518,7 +518,7 @@ filter (([Char] -> [Char] -> Bool forall a. Eq a => a -> a -> Bool ==[Char] -packageName) ([Char] -> Bool) +packageName) ([Char] -> Bool) -> ((PacNameAndVersion, [Char]) -> [Char]) -> (PacNameAndVersion, [Char]) -> Bool @@ -535,7 +535,7 @@ fst) (ZipStore -> ZipStore) -> ZipStore -> ZipStore forall a b. (a -> b) -> a -> b $ ZipStore -zipStore of +zipStore of [] -> Text -> ActionM () forall a. Text -> ActionM a raise (Text -> ActionM ()) -> ([Char] -> Text) -> [Char] -> ActionM () @@ -547,27 +547,27 @@ "unknown package " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] -packageName -- no version found - [(PacNameAndVersion -pacNameAndVersion, [Char] -fn)] -> case Maybe Version -maybeVersion of -- exactly one version found +packageName -- no version found + [(PacNameAndVersion +pacNameAndVersion, [Char] +fn)] -> case Maybe Version +maybeVersion of -- exactly one version found Maybe Version Nothing -> [Char] -> ActionM () file [Char] -fn - Just Version -v -> if PacNameAndVersion -> Maybe Version +fn + Just Version +v -> if PacNameAndVersion -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PacNameAndVersion -pacNameAndVersion Maybe Version -> Maybe Version -> Bool +pacNameAndVersion Maybe Version -> Maybe Version -> Bool forall a. Eq a => a -> a -> Bool == Version -> Maybe Version forall a. a -> Maybe a Just Version -v then [Char] -> ActionM () +v then [Char] -> ActionM () file [Char] -fn else Text -> ActionM () +fn else Text -> ActionM () forall a. Text -> ActionM a raise (Text -> ActionM ()) -> ([Char] -> Text) -> [Char] -> ActionM () forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -578,33 +578,33 @@ "Package " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] -packageName [Char] -> ShowS +packageName [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] " is not available for version " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ Version -> [Char] showVersion Version -v - pl :: ZipStore -pl@((PacNameAndVersion -_, [Char] -fnLatest) : ZipStore +v + pl :: ZipStore +pl@((PacNameAndVersion +_, [Char] +fnLatest) : ZipStore _) -> case Maybe Version -maybeVersion of +maybeVersion of Maybe Version Nothing -> [Char] -> ActionM () file [Char] -fnLatest - Just Version -v -> case ((PacNameAndVersion, [Char]) -> Bool) -> ZipStore -> ZipStore +fnLatest + Just Version +v -> case ((PacNameAndVersion, [Char]) -> Bool) -> ZipStore -> ZipStore forall a. (a -> Bool) -> [a] -> [a] filter ((Maybe Version -> Maybe Version -> Bool forall a. Eq a => a -> a -> Bool ==Version -> Maybe Version forall a. a -> Maybe a Just Version -v) (Maybe Version -> Bool) +v) (Maybe Version -> Bool) -> ((PacNameAndVersion, [Char]) -> Maybe Version) -> (PacNameAndVersion, [Char]) -> Bool @@ -619,7 +619,7 @@ . (PacNameAndVersion, [Char]) -> PacNameAndVersion forall a b. (a, b) -> a fst) ZipStore -pl of +pl of [] -> Text -> ActionM () forall a. Text -> ActionM a raise (Text -> ActionM ()) -> ([Char] -> Text) -> [Char] -> ActionM () @@ -631,19 +631,19 @@ "Package " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] -packageName [Char] -> ShowS +packageName [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] "is not available for version " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ Version -> [Char] showVersion Version -v +v [(PacNameAndVersion -_, [Char] -fn)] -> [Char] -> ActionM () +_, [Char] +fn)] -> [Char] -> ActionM () file [Char] -fn +fn ZipStore _ -> [Char] -> ActionM () forall a. HasCallStack => [Char] -> a @@ -662,11 +662,11 @@ readArchiveStore :: [([Char], [Char])] -> PackageReadOptions -> PoseidonIO (ArchiveStore [PoseidonPackage]) -readArchiveStore [([Char], [Char])] -archBaseDirs PackageReadOptions -pacReadOpts = do - let archiveNames :: [[Char]] -archiveNames = [[Char]] -> [[Char]] +readArchiveStore [([Char], [Char])] +archBaseDirs PackageReadOptions +pacReadOpts = do + let archiveNames :: [[Char]] +archiveNames = [[Char]] -> [[Char]] forall a. Eq a => [a] -> [a] nub ([[Char]] -> [[Char]]) -> ([([Char], [Char])] -> [[Char]]) @@ -680,7 +680,7 @@ fst ([([Char], [Char])] -> [[Char]]) -> [([Char], [Char])] -> [[Char]] forall a b. (a -> b) -> a -> b $ [([Char], [Char])] -archBaseDirs +archBaseDirs [[Char]] -> ([Char] -> ReaderT Env IO ([Char], [PoseidonPackage])) -> PoseidonIO (ArchiveStore [PoseidonPackage]) @@ -688,13 +688,13 @@ (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM [[Char]] -archiveNames (([Char] -> ReaderT Env IO ([Char], [PoseidonPackage])) +archiveNames (([Char] -> ReaderT Env IO ([Char], [PoseidonPackage])) -> PoseidonIO (ArchiveStore [PoseidonPackage])) -> ([Char] -> ReaderT Env IO ([Char], [PoseidonPackage])) -> PoseidonIO (ArchiveStore [PoseidonPackage]) forall a b. (a -> b) -> a -> b -$ \[Char] -archiveName -> do +$ \[Char] +archiveName -> do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -702,9 +702,9 @@ "Loading packages for archive " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] -archiveName - let relevantDirs :: [[Char]] -relevantDirs = (([Char], [Char]) -> [Char]) -> [([Char], [Char])] -> [[Char]] +archiveName + let relevantDirs :: [[Char]] +relevantDirs = (([Char], [Char]) -> [Char]) -> [([Char], [Char])] -> [[Char]] forall a b. (a -> b) -> [a] -> [b] map ([Char], [Char]) -> [Char] forall a b. (a, b) -> b @@ -719,7 +719,7 @@ filter (([Char] -> [Char] -> Bool forall a. Eq a => a -> a -> Bool ==[Char] -archiveName) ([Char] -> Bool) +archiveName) ([Char] -> Bool) -> (([Char], [Char]) -> [Char]) -> ([Char], [Char]) -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . ([Char], [Char]) -> [Char] @@ -727,26 +727,26 @@ fst) ([([Char], [Char])] -> [[Char]]) -> [([Char], [Char])] -> [[Char]] forall a b. (a -> b) -> a -> b $ [([Char], [Char])] -archBaseDirs - [PoseidonPackage] -pacs <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] +archBaseDirs + [PoseidonPackage] +pacs <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions -pacReadOpts [[Char]] -relevantDirs +pacReadOpts [[Char]] +relevantDirs ([Char], [PoseidonPackage]) -> ReaderT Env IO ([Char], [PoseidonPackage]) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return ([Char] -archiveName, [PoseidonPackage] -pacs) +archiveName, [PoseidonPackage] +pacs) createZipArchiveStore :: ArchiveStore [PoseidonPackage] -> FilePath -> PoseidonIO (ArchiveStore ZipStore) createZipArchiveStore :: ArchiveStore [PoseidonPackage] -> [Char] -> ReaderT Env IO [([Char], ZipStore)] -createZipArchiveStore ArchiveStore [PoseidonPackage] -archiveStore [Char] -zipPath = +createZipArchiveStore ArchiveStore [PoseidonPackage] +archiveStore [Char] +zipPath = ArchiveStore [PoseidonPackage] -> (([Char], [PoseidonPackage]) -> ReaderT Env IO ([Char], ZipStore)) @@ -755,15 +755,15 @@ (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM ArchiveStore [PoseidonPackage] -archiveStore ((([Char], [PoseidonPackage]) -> ReaderT Env IO ([Char], ZipStore)) +archiveStore ((([Char], [PoseidonPackage]) -> ReaderT Env IO ([Char], ZipStore)) -> ReaderT Env IO [([Char], ZipStore)]) -> (([Char], [PoseidonPackage]) -> ReaderT Env IO ([Char], ZipStore)) -> ReaderT Env IO [([Char], ZipStore)] forall a b. (a -> b) -> a -> b -$ \([Char] -archiveName, [PoseidonPackage] -packages) -> do +$ \([Char] +archiveName, [PoseidonPackage] +packages) -> do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -771,9 +771,9 @@ "Zipping packages in archive " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] -archiveName +archiveName ([Char] -archiveName,) (ZipStore -> ([Char], ZipStore)) +archiveName,) (ZipStore -> ([Char], ZipStore)) -> ReaderT Env IO ZipStore -> ReaderT Env IO ([Char], ZipStore) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [PoseidonPackage] @@ -783,8 +783,8 @@ (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM [PoseidonPackage] -packages (\PoseidonPackage -pac -> do +packages (\PoseidonPackage +pac -> do [Char] -> PoseidonIO () logInfo [Char] "Checking whether zip files are missing or outdated" @@ -796,37 +796,37 @@ $ Bool -> [Char] -> IO () createDirectoryIfMissing Bool True ([Char] -zipPath [Char] -> ShowS +zipPath [Char] -> ShowS </> [Char] -archiveName) - let combinedPackageVersionTitle :: [Char] -combinedPackageVersionTitle = PoseidonPackage -> [Char] +archiveName) + let combinedPackageVersionTitle :: [Char] +combinedPackageVersionTitle = PoseidonPackage -> [Char] forall a. HasNameAndVersion a => a -> [Char] renderNameWithVersion PoseidonPackage -pac - let fn :: [Char] -fn = [Char] -zipPath [Char] -> ShowS +pac + let fn :: [Char] +fn = [Char] +zipPath [Char] -> ShowS </> [Char] -archiveName [Char] -> ShowS +archiveName [Char] -> ShowS </> [Char] -combinedPackageVersionTitle [Char] -> ShowS +combinedPackageVersionTitle [Char] -> ShowS <.> [Char] "zip" - Bool -zipFileOutdated <- IO Bool -> ReaderT Env IO Bool + Bool +zipFileOutdated <- IO Bool -> ReaderT Env IO Bool forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Bool -> ReaderT Env IO Bool) -> IO Bool -> ReaderT Env IO Bool forall a b. (a -> b) -> a -> b $ PoseidonPackage -> [Char] -> IO Bool checkZipFileOutdated PoseidonPackage -pac [Char] -fn +pac [Char] +fn Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -zipFileOutdated (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +zipFileOutdated (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do [Char] -> PoseidonIO () @@ -834,12 +834,12 @@ "Zip Archive for package " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] -combinedPackageVersionTitle [Char] -> ShowS +combinedPackageVersionTitle [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] " missing or outdated. Zipping now") - Archive -zip_ <- IO Archive -> ReaderT Env IO Archive + Archive +zip_ <- IO Archive -> ReaderT Env IO Archive forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Archive -> ReaderT Env IO Archive) @@ -847,11 +847,11 @@ forall a b. (a -> b) -> a -> b $ PoseidonPackage -> IO Archive makeZipArchive PoseidonPackage -pac - let zip_raw :: ByteString -zip_raw = Archive -> ByteString +pac + let zip_raw :: ByteString +zip_raw = Archive -> ByteString fromArchive Archive -zip_ +zip_ IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -859,16 +859,16 @@ forall a b. (a -> b) -> a -> b $ [Char] -> ByteString -> IO () B.writeFile [Char] -fn ByteString -zip_raw +fn ByteString +zip_raw (PacNameAndVersion, [Char]) -> ReaderT Env IO (PacNameAndVersion, [Char]) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return (PoseidonPackage -> PacNameAndVersion posPacNameAndVersion PoseidonPackage -pac, [Char] -fn)) +pac, [Char] +fn)) -- this serves as a point to broadcast messages to clients. Adapt in the future as necessary. genericServerMessages :: [String] @@ -882,8 +882,8 @@ parseVersionString :: String -> Maybe Version parseVersionString :: [Char] -> Maybe Version -parseVersionString [Char] -vStr = case ((Version, [Char]) -> Bool) +parseVersionString [Char] +vStr = case ((Version, [Char]) -> Bool) -> [(Version, [Char])] -> [(Version, [Char])] forall a. (a -> Bool) -> [a] -> [a] filter (([Char] -> [Char] -> Bool @@ -901,13 +901,13 @@ forall a. ReadP a -> ReadS a readP_to_S ReadP Version parseVersion [Char] -vStr of - [(Version -v', [Char] +vStr of + [(Version +v', [Char] "")] -> Version -> Maybe Version forall a. a -> Maybe a Just Version -v' +v' [(Version, [Char])] _ -> Maybe Version forall a. Maybe a @@ -915,10 +915,10 @@ conditionOnClientVersion :: ActionM ServerApiReturnType -> ActionM () conditionOnClientVersion :: ActionM ServerApiReturnType -> ActionM () -conditionOnClientVersion ActionM ServerApiReturnType -contentAction = do - Maybe [Char] -maybeClientVersion <- ([Char] -> Maybe [Char] +conditionOnClientVersion ActionM ServerApiReturnType +contentAction = do + Maybe [Char] +maybeClientVersion <- ([Char] -> Maybe [Char] forall a. a -> Maybe a Just ([Char] -> Maybe [Char]) -> ActionT Text IO [Char] -> ActionT Text IO (Maybe [Char]) @@ -937,10 +937,10 @@ return Maybe [Char] forall a. Maybe a Nothing) - (Version -clientVersion, [[Char]] -versionWarnings) <- case Maybe [Char] -maybeClientVersion of + (Version +clientVersion, [[Char]] +versionWarnings) <- case Maybe [Char] +maybeClientVersion of Maybe [Char] Nothing -> (Version, [[Char]]) -> ActionT Text IO (Version, [[Char]]) forall a. a -> ActionT Text IO a @@ -952,16 +952,16 @@ ++ Version -> [Char] showVersion Version version]) - Just [Char] -versionString -> case [Char] -> Maybe Version + Just [Char] +versionString -> case [Char] -> Maybe Version parseVersionString [Char] -versionString of - Just Version -v -> (Version, [[Char]]) -> ActionT Text IO (Version, [[Char]]) +versionString of + Just Version +v -> (Version, [[Char]]) -> ActionT Text IO (Version, [[Char]]) forall a. a -> ActionT Text IO a forall (m :: * -> *) a. Monad m => a -> m a return (Version -v, []) +v, []) Maybe Version Nothing -> (Version, [[Char]]) -> ActionT Text IO (Version, [[Char]]) forall a. a -> ActionT Text IO a @@ -971,7 +971,7 @@ "Could not parse Client Version string " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] -versionString [Char] -> ShowS +versionString [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] ", assuming latest version " [Char] -> ShowS @@ -980,12 +980,12 @@ showVersion Version version]) if Version -clientVersion Version -> Version -> Bool +clientVersion Version -> Version -> Bool forall a. Ord a => a -> a -> Bool < Version minimalRequiredClientVersion then do - let msg :: [Char] -msg = [Char] + let msg :: [Char] +msg = [Char] "This Server API requires trident version at least " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ Version -> [Char] @@ -1006,17 +1006,17 @@ genericServerMessages [[Char]] -> [[Char]] -> [[Char]] forall a. [a] -> [a] -> [a] ++ [[Char]] -versionWarnings [[Char]] -> [[Char]] -> [[Char]] +versionWarnings [[Char]] -> [[Char]] -> [[Char]] forall a. [a] -> [a] -> [a] ++ [[Char] -msg]) Maybe ApiReturnData +msg]) Maybe ApiReturnData forall a. Maybe a Nothing else do - ServerApiReturnType [[Char]] -messages Maybe ApiReturnData -content <- ActionM ServerApiReturnType -contentAction + ServerApiReturnType [[Char]] +messages Maybe ApiReturnData +content <- ActionM ServerApiReturnType +contentAction ServerApiReturnType -> ActionM () forall a. ToJSON a => a -> ActionM () json (ServerApiReturnType -> ActionM ()) @@ -1027,157 +1027,157 @@ genericServerMessages [[Char]] -> [[Char]] -> [[Char]] forall a. [a] -> [a] -> [a] ++ [[Char]] -versionWarnings [[Char]] -> [[Char]] -> [[Char]] +versionWarnings [[Char]] -> [[Char]] -> [[Char]] forall a. [a] -> [a] -> [a] ++ [[Char]] -messages) Maybe ApiReturnData -content +messages) Maybe ApiReturnData +content checkZipFileOutdated :: PoseidonPackage -> FilePath -> IO Bool checkZipFileOutdated :: PoseidonPackage -> [Char] -> IO Bool -checkZipFileOutdated PoseidonPackage -pac [Char] -fn = do - Bool -zipFileExists <- [Char] -> IO Bool +checkZipFileOutdated PoseidonPackage +pac [Char] +fn = do + Bool +zipFileExists <- [Char] -> IO Bool doesFileExist [Char] -fn +fn if Bool -zipFileExists +zipFileExists then do - UTCTime -zipModTime <- [Char] -> IO UTCTime + UTCTime +zipModTime <- [Char] -> IO UTCTime getModificationTime [Char] -fn - Bool -yamlOutdated <- UTCTime -> [Char] -> IO Bool -checkOutdated UTCTime -zipModTime (PoseidonPackage -> [Char] +fn + Bool +yamlOutdated <- UTCTime -> [Char] -> IO Bool +checkOutdated UTCTime +zipModTime (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> ShowS +pac [Char] -> ShowS </> [Char] "POSEIDON.yml") - Bool -bibOutdated <- case PoseidonPackage -> Maybe [Char] + Bool +bibOutdated <- case PoseidonPackage -> Maybe [Char] posPacBibFile PoseidonPackage -pac of - Just [Char] -fn_ -> UTCTime -> [Char] -> IO Bool -checkOutdated UTCTime -zipModTime (PoseidonPackage -> [Char] +pac of + Just [Char] +fn_ -> UTCTime -> [Char] -> IO Bool +checkOutdated UTCTime +zipModTime (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> ShowS +pac [Char] -> ShowS </> [Char] -fn_) +fn_) Maybe [Char] Nothing -> Bool -> IO Bool forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return Bool False - Bool -jannoOutdated <- case PoseidonPackage -> Maybe [Char] + Bool +jannoOutdated <- case PoseidonPackage -> Maybe [Char] posPacJannoFile PoseidonPackage -pac of - Just [Char] -fn_ -> UTCTime -> [Char] -> IO Bool -checkOutdated UTCTime -zipModTime (PoseidonPackage -> [Char] +pac of + Just [Char] +fn_ -> UTCTime -> [Char] -> IO Bool +checkOutdated UTCTime +zipModTime (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> ShowS +pac [Char] -> ShowS </> [Char] -fn_) +fn_) Maybe [Char] Nothing -> Bool -> IO Bool forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return Bool False - Bool -readmeOutdated <- case PoseidonPackage -> Maybe [Char] + Bool +readmeOutdated <- case PoseidonPackage -> Maybe [Char] posPacReadmeFile PoseidonPackage -pac of - Just [Char] -fn_ -> UTCTime -> [Char] -> IO Bool -checkOutdated UTCTime -zipModTime (PoseidonPackage -> [Char] +pac of + Just [Char] +fn_ -> UTCTime -> [Char] -> IO Bool +checkOutdated UTCTime +zipModTime (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> ShowS +pac [Char] -> ShowS </> [Char] -fn_) +fn_) Maybe [Char] Nothing -> Bool -> IO Bool forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return Bool False - Bool -changelogOutdated <- case PoseidonPackage -> Maybe [Char] + Bool +changelogOutdated <- case PoseidonPackage -> Maybe [Char] posPacChangelogFile PoseidonPackage -pac of - Just [Char] -fn_ -> UTCTime -> [Char] -> IO Bool -checkOutdated UTCTime -zipModTime (PoseidonPackage -> [Char] +pac of + Just [Char] +fn_ -> UTCTime -> [Char] -> IO Bool +checkOutdated UTCTime +zipModTime (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> ShowS +pac [Char] -> ShowS </> [Char] -fn_) +fn_) Maybe [Char] Nothing -> Bool -> IO Bool forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return Bool False - Bool -ssfOutdated <- case PoseidonPackage -> Maybe [Char] + Bool +ssfOutdated <- case PoseidonPackage -> Maybe [Char] posPacSeqSourceFile PoseidonPackage -pac of - Just [Char] -fn_ -> UTCTime -> [Char] -> IO Bool -checkOutdated UTCTime -zipModTime (PoseidonPackage -> [Char] +pac of + Just [Char] +fn_ -> UTCTime -> [Char] -> IO Bool +checkOutdated UTCTime +zipModTime (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> ShowS +pac [Char] -> ShowS </> [Char] -fn_) +fn_) Maybe [Char] Nothing -> Bool -> IO Bool forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return Bool False - let gd :: GenotypeDataSpec -gd = PoseidonPackage -> GenotypeDataSpec + let gd :: GenotypeDataSpec +gd = PoseidonPackage -> GenotypeDataSpec posPacGenotypeData PoseidonPackage -pac - Bool -genoOutdated <- UTCTime -> [Char] -> IO Bool -checkOutdated UTCTime -zipModTime (PoseidonPackage -> [Char] +pac + Bool +genoOutdated <- UTCTime -> [Char] -> IO Bool +checkOutdated UTCTime +zipModTime (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> ShowS +pac [Char] -> ShowS </> GenotypeDataSpec -> [Char] genoFile GenotypeDataSpec -gd) - Bool -snpOutdated <- UTCTime -> [Char] -> IO Bool -checkOutdated UTCTime -zipModTime (PoseidonPackage -> [Char] +gd) + Bool +snpOutdated <- UTCTime -> [Char] -> IO Bool +checkOutdated UTCTime +zipModTime (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> ShowS +pac [Char] -> ShowS </> GenotypeDataSpec -> [Char] snpFile GenotypeDataSpec -gd) - Bool -indOutdated <- UTCTime -> [Char] -> IO Bool -checkOutdated UTCTime -zipModTime (PoseidonPackage -> [Char] +gd) + Bool +indOutdated <- UTCTime -> [Char] -> IO Bool +checkOutdated UTCTime +zipModTime (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> ShowS +pac [Char] -> ShowS </> GenotypeDataSpec -> [Char] indFile GenotypeDataSpec -gd) +gd) Bool -> IO Bool forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -1186,17 +1186,17 @@ $ [Bool] -> Bool forall (t :: * -> *). Foldable t => t Bool -> Bool or [Bool -yamlOutdated, Bool -bibOutdated, Bool -jannoOutdated, Bool -readmeOutdated, +yamlOutdated, Bool +bibOutdated, Bool +jannoOutdated, Bool +readmeOutdated, Bool -changelogOutdated, Bool -genoOutdated, Bool -snpOutdated, Bool -indOutdated, +changelogOutdated, Bool +genoOutdated, Bool +snpOutdated, Bool +indOutdated, Bool -ssfOutdated] +ssfOutdated] else Bool -> IO Bool forall a. a -> IO a @@ -1204,142 +1204,142 @@ return Bool True where - checkOutdated :: UTCTime -> [Char] -> IO Bool -checkOutdated UTCTime -zipModTime [Char] -fn_ = (UTCTime -> UTCTime -> Bool + checkOutdated :: UTCTime -> [Char] -> IO Bool +checkOutdated UTCTime +zipModTime [Char] +fn_ = (UTCTime -> UTCTime -> Bool forall a. Ord a => a -> a -> Bool > UTCTime -zipModTime) (UTCTime -> Bool) -> IO UTCTime -> IO Bool +zipModTime) (UTCTime -> Bool) -> IO UTCTime -> IO Bool forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [Char] -> IO UTCTime getModificationTime [Char] -fn_ +fn_ makeZipArchive :: PoseidonPackage -> IO Archive makeZipArchive :: PoseidonPackage -> IO Archive -makeZipArchive PoseidonPackage -pac = +makeZipArchive PoseidonPackage +pac = Archive -> IO Archive -addYaml Archive +addYaml Archive emptyArchive IO Archive -> (Archive -> IO Archive) -> IO Archive forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addJanno IO Archive -> (Archive -> IO Archive) -> IO Archive +addJanno IO Archive -> (Archive -> IO Archive) -> IO Archive forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addBib IO Archive -> (Archive -> IO Archive) -> IO Archive +addBib IO Archive -> (Archive -> IO Archive) -> IO Archive forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addReadme IO Archive -> (Archive -> IO Archive) -> IO Archive +addReadme IO Archive -> (Archive -> IO Archive) -> IO Archive forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addChangelog IO Archive -> (Archive -> IO Archive) -> IO Archive +addChangelog IO Archive -> (Archive -> IO Archive) -> IO Archive forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addInd IO Archive -> (Archive -> IO Archive) -> IO Archive +addInd IO Archive -> (Archive -> IO Archive) -> IO Archive forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addSnp IO Archive -> (Archive -> IO Archive) -> IO Archive +addSnp IO Archive -> (Archive -> IO Archive) -> IO Archive forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addGeno IO Archive -> (Archive -> IO Archive) -> IO Archive +addGeno IO Archive -> (Archive -> IO Archive) -> IO Archive forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addSSF +addSSF where - addYaml :: Archive -> IO Archive -addYaml = [Char] -> [Char] -> Archive -> IO Archive -addFN [Char] + addYaml :: Archive -> IO Archive +addYaml = [Char] -> [Char] -> Archive -> IO Archive +addFN [Char] "POSEIDON.yml" (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac) - addJanno :: Archive -> IO Archive -addJanno = case PoseidonPackage -> Maybe [Char] +pac) + addJanno :: Archive -> IO Archive +addJanno = case PoseidonPackage -> Maybe [Char] posPacJannoFile PoseidonPackage -pac of +pac of Maybe [Char] Nothing -> Archive -> IO Archive forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return - Just [Char] -fn -> [Char] -> [Char] -> Archive -> IO Archive -addFN [Char] -fn (PoseidonPackage -> [Char] + Just [Char] +fn -> [Char] -> [Char] -> Archive -> IO Archive +addFN [Char] +fn (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac) - addBib :: Archive -> IO Archive -addBib = case PoseidonPackage -> Maybe [Char] +pac) + addBib :: Archive -> IO Archive +addBib = case PoseidonPackage -> Maybe [Char] posPacBibFile PoseidonPackage -pac of +pac of Maybe [Char] Nothing -> Archive -> IO Archive forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return - Just [Char] -fn -> [Char] -> [Char] -> Archive -> IO Archive -addFN [Char] -fn (PoseidonPackage -> [Char] + Just [Char] +fn -> [Char] -> [Char] -> Archive -> IO Archive +addFN [Char] +fn (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac) - addReadme :: Archive -> IO Archive -addReadme = case PoseidonPackage -> Maybe [Char] +pac) + addReadme :: Archive -> IO Archive +addReadme = case PoseidonPackage -> Maybe [Char] posPacReadmeFile PoseidonPackage -pac of +pac of Maybe [Char] Nothing -> Archive -> IO Archive forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return - Just [Char] -fn -> [Char] -> [Char] -> Archive -> IO Archive -addFN [Char] -fn (PoseidonPackage -> [Char] + Just [Char] +fn -> [Char] -> [Char] -> Archive -> IO Archive +addFN [Char] +fn (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac) - addChangelog :: Archive -> IO Archive -addChangelog = case PoseidonPackage -> Maybe [Char] +pac) + addChangelog :: Archive -> IO Archive +addChangelog = case PoseidonPackage -> Maybe [Char] posPacChangelogFile PoseidonPackage -pac of +pac of Maybe [Char] Nothing -> Archive -> IO Archive forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return - Just [Char] -fn -> [Char] -> [Char] -> Archive -> IO Archive -addFN [Char] -fn (PoseidonPackage -> [Char] + Just [Char] +fn -> [Char] -> [Char] -> Archive -> IO Archive +addFN [Char] +fn (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac) - addSSF :: Archive -> IO Archive -addSSF = case PoseidonPackage -> Maybe [Char] +pac) + addSSF :: Archive -> IO Archive +addSSF = case PoseidonPackage -> Maybe [Char] posPacSeqSourceFile PoseidonPackage -pac of +pac of Maybe [Char] Nothing -> Archive -> IO Archive forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return - Just [Char] -fn -> [Char] -> [Char] -> Archive -> IO Archive -addFN [Char] -fn (PoseidonPackage -> [Char] + Just [Char] +fn -> [Char] -> [Char] -> Archive -> IO Archive +addFN [Char] +fn (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac) - addInd :: Archive -> IO Archive -addInd = [Char] -> [Char] -> Archive -> IO Archive -addFN (GenotypeDataSpec -> [Char] +pac) + addInd :: Archive -> IO Archive +addInd = [Char] -> [Char] -> Archive -> IO Archive +addFN (GenotypeDataSpec -> [Char] indFile (GenotypeDataSpec -> [Char]) -> (PoseidonPackage -> GenotypeDataSpec) -> PoseidonPackage @@ -1349,12 +1349,12 @@ posPacGenotypeData (PoseidonPackage -> [Char]) -> PoseidonPackage -> [Char] forall a b. (a -> b) -> a -> b $ PoseidonPackage -pac) (PoseidonPackage -> [Char] +pac) (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac) - addSnp :: Archive -> IO Archive -addSnp = [Char] -> [Char] -> Archive -> IO Archive -addFN (GenotypeDataSpec -> [Char] +pac) + addSnp :: Archive -> IO Archive +addSnp = [Char] -> [Char] -> Archive -> IO Archive +addFN (GenotypeDataSpec -> [Char] snpFile (GenotypeDataSpec -> [Char]) -> (PoseidonPackage -> GenotypeDataSpec) -> PoseidonPackage @@ -1364,12 +1364,12 @@ posPacGenotypeData (PoseidonPackage -> [Char]) -> PoseidonPackage -> [Char] forall a b. (a -> b) -> a -> b $ PoseidonPackage -pac) (PoseidonPackage -> [Char] +pac) (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac) - addGeno :: Archive -> IO Archive -addGeno = [Char] -> [Char] -> Archive -> IO Archive -addFN (GenotypeDataSpec -> [Char] +pac) + addGeno :: Archive -> IO Archive +addGeno = [Char] -> [Char] -> Archive -> IO Archive +addFN (GenotypeDataSpec -> [Char] genoFile (GenotypeDataSpec -> [Char]) -> (PoseidonPackage -> GenotypeDataSpec) -> PoseidonPackage @@ -1379,26 +1379,26 @@ posPacGenotypeData (PoseidonPackage -> [Char]) -> PoseidonPackage -> [Char] forall a b. (a -> b) -> a -> b $ PoseidonPackage -pac) (PoseidonPackage -> [Char] +pac) (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac) - addFN :: FilePath -> FilePath -> Archive -> IO Archive - addFN :: [Char] -> [Char] -> Archive -> IO Archive -addFN [Char] -fn [Char] -baseDir Archive -a = do - let fullFN :: [Char] -fullFN = [Char] -baseDir [Char] -> ShowS +pac) + addFN :: FilePath -> FilePath -> Archive -> IO Archive + addFN :: [Char] -> [Char] -> Archive -> IO Archive +addFN [Char] +fn [Char] +baseDir Archive +a = do + let fullFN :: [Char] +fullFN = [Char] +baseDir [Char] -> ShowS </> [Char] -fn - ByteString -raw <- [Char] -> IO ByteString +fn + ByteString +raw <- [Char] -> IO ByteString B.readFile [Char] -fullFN - Integer -modTime <- POSIXTime -> Integer +fullFN + Integer +modTime <- POSIXTime -> Integer forall b. Integral b => POSIXTime -> b forall a b. (RealFrac a, Integral b) => a -> b round (POSIXTime -> Integer) @@ -1409,20 +1409,20 @@ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [Char] -> IO UTCTime getModificationTime [Char] -fullFN - let zipEntry :: Entry -zipEntry = [Char] -> Integer -> ByteString -> Entry +fullFN + let zipEntry :: Entry +zipEntry = [Char] -> Integer -> ByteString -> Entry toEntry [Char] -fn Integer -modTime ByteString -raw +fn Integer +modTime ByteString +raw Archive -> IO Archive forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return (Entry -> Archive -> Archive addEntryToArchive Entry -zipEntry Archive -a) +zipEntry Archive +a) scottyHTTPS :: MVar () -> Int -> FilePath -> [FilePath] -> FilePath -> ScottyM () -> PoseidonIO () scottyHTTPS :: MVar () @@ -1432,13 +1432,13 @@ -> [Char] -> ScottyM () -> PoseidonIO () -scottyHTTPS MVar () -serverReady Int -port [Char] -cert [[Char]] -chains [Char] -key ScottyM () -s = do +scottyHTTPS MVar () +serverReady Int +port [Char] +cert [[Char]] +chains [Char] +key ScottyM () +s = do -- this is just the same output as with scotty, to make it consistent whether or not using https [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -1449,31 +1449,31 @@ ++ Int -> [Char] forall a. Show a => a -> [Char] show Int -port - let tsls :: TLSSettings -tsls = case [[Char]] -chains of +port + let tsls :: TLSSettings +tsls = case [[Char]] +chains of [] -> [Char] -> [Char] -> TLSSettings tlsSettings [Char] -cert [Char] -key - [[Char]] -c -> [Char] -> [[Char]] -> [Char] -> TLSSettings +cert [Char] +key + [[Char]] +c -> [Char] -> [[Char]] -> [Char] -> TLSSettings tlsSettingsChain [Char] -cert [[Char]] -c [Char] -key - settings :: Settings -settings = Int -> Settings -> Settings +cert [[Char]] +c [Char] +key + settings :: Settings +settings = Int -> Settings -> Settings setPort Int -port (Settings -> Settings) +port (Settings -> Settings) -> (Settings -> Settings) -> Settings -> Settings forall b c a. (b -> c) -> (a -> b) -> a -> c . IO () -> Settings -> Settings setBeforeMainLoop (MVar () -> () -> IO () forall a. MVar a -> a -> IO () putMVar MVar () -serverReady ()) (Settings -> Settings) -> Settings -> Settings +serverReady ()) (Settings -> Settings) -> Settings -> Settings forall a b. (a -> b) -> a -> b $ Settings defaultSettings @@ -1483,8 +1483,8 @@ liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do - Application -app <- IO Application -> IO Application + Application +app <- IO Application -> IO Application forall a. IO a -> IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Application -> IO Application) @@ -1492,19 +1492,19 @@ forall a b. (a -> b) -> a -> b $ ScottyM () -> IO Application scottyApp ScottyM () -s +s TLSSettings -> Settings -> Application -> IO () runTLS TLSSettings -tsls Settings -settings Application -app +tsls Settings +settings Application +app scottyHTTP :: MVar () -> Int -> ScottyM () -> PoseidonIO () scottyHTTP :: MVar () -> Int -> ScottyM () -> PoseidonIO () -scottyHTTP MVar () -serverReady Int -port ScottyM () -s = do +scottyHTTP MVar () +serverReady Int +port ScottyM () +s = do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -1514,18 +1514,18 @@ ++ Int -> [Char] forall a. Show a => a -> [Char] show Int -port - let settings :: Settings -settings = Int -> Settings -> Settings +port + let settings :: Settings +settings = Int -> Settings -> Settings setPort Int -port (Settings -> Settings) +port (Settings -> Settings) -> (Settings -> Settings) -> Settings -> Settings forall b c a. (b -> c) -> (a -> b) -> a -> c . IO () -> Settings -> Settings setBeforeMainLoop (MVar () -> () -> IO () forall a. MVar a -> a -> IO () putMVar MVar () -serverReady ()) (Settings -> Settings) -> Settings -> Settings +serverReady ()) (Settings -> Settings) -> Settings -> Settings forall a b. (a -> b) -> a -> b $ Settings defaultSettings @@ -1535,30 +1535,30 @@ liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do - Application -app <- ScottyM () -> IO Application + Application +app <- ScottyM () -> IO Application scottyApp ScottyM () -s +s Settings -> Application -> IO () runSettings Settings -settings Application -app +settings Application +app logRequest :: LogA -> ActionM () logRequest :: LogA -> ActionM () -logRequest LogA -logA = do - Request -req <- ActionM Request +logRequest LogA +logA = do + Request +req <- ActionM Request request - let p :: [Text] -p = Request -> [Text] + let p :: [Text] +p = Request -> [Text] pathInfo Request -req - q :: Query -q = Request -> Query +req + q :: Query +q = Request -> Query queryString Request -req +req IO () -> ActionM () forall a. IO a -> ActionT Text IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -1567,7 +1567,7 @@ . LogA -> PoseidonIO () -> IO () forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () logWithEnv LogA -logA (PoseidonIO () -> IO ()) +logA (PoseidonIO () -> IO ()) -> ([Char] -> PoseidonIO ()) -> [Char] -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> PoseidonIO () @@ -1579,7 +1579,7 @@ ++ [Text] -> [Char] forall a. Show a => a -> [Char] show [Text] -p [Char] -> ShowS +p [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] ", qstring=" [Char] -> ShowS @@ -1587,14 +1587,14 @@ ++ Query -> [Char] forall a. Show a => a -> [Char] show Query -q +q -getItemFromArchiveStore :: ArchiveStore a -> ActionM a +getItemFromArchiveStore :: ArchiveStore a -> ActionM a getItemFromArchiveStore :: forall a. ArchiveStore a -> ActionM a -getItemFromArchiveStore ArchiveStore a -store = do - Maybe [Char] -maybeArchiveName <- ([Char] -> Maybe [Char] +getItemFromArchiveStore ArchiveStore a +store = do + Maybe [Char] +maybeArchiveName <- ([Char] -> Maybe [Char] forall a. a -> Maybe a Just ([Char] -> Maybe [Char]) -> ActionT Text IO [Char] -> ActionT Text IO (Maybe [Char]) @@ -1614,7 +1614,7 @@ forall a. Maybe a Nothing) case Maybe [Char] -maybeArchiveName of +maybeArchiveName of Maybe [Char] Nothing -> a -> ActionM a forall a. a -> ActionT Text IO a @@ -1632,13 +1632,13 @@ head (ArchiveStore a -> ActionM a) -> ArchiveStore a -> ActionM a forall a b. (a -> b) -> a -> b $ ArchiveStore a -store - Just [Char] -a -> case [Char] -> ArchiveStore a -> Maybe a +store + Just [Char] +a -> case [Char] -> ArchiveStore a -> Maybe a forall a b. Eq a => a -> [(a, b)] -> Maybe b lookup [Char] -a ArchiveStore a -store of +a ArchiveStore a +store of Maybe a Nothing -> Text -> ActionM a forall a. Text -> ActionM a @@ -1652,7 +1652,7 @@ "The requested archive named " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] -a [Char] -> ShowS +a [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] " does not exist. Possible archives are " [Char] -> ShowS @@ -1665,12 +1665,12 @@ map ([Char], a) -> [Char] forall a b. (a, b) -> a fst ArchiveStore a -store) - Just a -pacs -> a -> ActionM a +store) + Just a +pacs -> a -> ActionM a forall a. a -> ActionT Text IO a forall (m :: * -> *) a. Monad m => a -> m a return a -pacs +pacs \ No newline at end of file diff --git a/src/Poseidon.CLI.Summarise.html b/src/Poseidon.CLI.Summarise.html index f9ef6879..17519ae3 100644 --- a/src/Poseidon.CLI.Summarise.html +++ b/src/Poseidon.CLI.Summarise.html @@ -1,8 +1,8 @@

module Poseidon.CLI.Summarise where
 
-import           Poseidon.Janno         (BCADAge (..), JannoList (..),
+import           Poseidon.Janno         (JannoDateBCADMedian (..),
                                          JannoRow (..), JannoRows (..),
-                                         Percent (..))
+                                         ListColumn (..))
 import           Poseidon.MathHelpers   (meanAndSdInteger, meanAndSdRoundTo)
 import           Poseidon.Package       (PackageReadOptions (..),
                                          PoseidonPackage (..),
@@ -13,56 +13,59 @@
 import           Control.Monad.IO.Class (liftIO)
 import           Data.List              (group, intercalate, sort, sortBy)
 import           Data.Maybe             (mapMaybe)
-import           Text.Layout.Table      (asciiRoundS, column, def, expandUntil,
-                                         rowsG, tableString, titlesH)
-
--- | A datatype representing command line options for the summarise command
-data SummariseOptions = SummariseOptions
-    { SummariseOptions -> [String]
+import           Poseidon.ColumnTypes   (JannoCoverageOnTargets (..),
+                                         JannoEndogenous (JannoEndogenous),
+                                         JannoNrSNPs (..))
+import           Text.Layout.Table      (asciiRoundS, column, def, expandUntil,
+                                         rowsG, tableString, titlesH)
+
+-- | A datatype representing command line options for the summarise command
+data SummariseOptions = SummariseOptions
+    { SummariseOptions -> [String]
 _summariseBaseDirs  :: [FilePath]
-    , SummariseOptions -> Bool
+    , SummariseOptions -> Bool
 _summariseRawOutput :: Bool
-    }
-
-pacReadOpts :: PackageReadOptions
-pacReadOpts :: PackageReadOptions
+    }
+
+pacReadOpts :: PackageReadOptions
+pacReadOpts :: PackageReadOptions
 pacReadOpts = PackageReadOptions
 defaultPackageReadOptions {
-      _readOptIgnoreChecksums :: Bool
+      _readOptIgnoreChecksums :: Bool
 _readOptIgnoreChecksums      = Bool
 True
-    , _readOptIgnoreGeno :: Bool
+    , _readOptIgnoreGeno :: Bool
 _readOptIgnoreGeno           = Bool
 True
-    , _readOptGenoCheck :: Bool
+    , _readOptGenoCheck :: Bool
 _readOptGenoCheck            = Bool
 False
-    , _readOptOnlyLatest :: Bool
+    , _readOptOnlyLatest :: Bool
 _readOptOnlyLatest           = Bool
 True
-    }
-
--- | The main function running the janno command
-runSummarise :: SummariseOptions -> PoseidonIO ()
-runSummarise :: SummariseOptions -> PoseidonIO ()
-runSummarise (SummariseOptions [String]
-baseDirs Bool
-rawOutput) = do
-    [PoseidonPackage]
-allPackages <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage]
+    }
+
+-- | The main function running the janno command
+runSummarise :: SummariseOptions -> PoseidonIO ()
+runSummarise :: SummariseOptions -> PoseidonIO ()
+runSummarise (SummariseOptions [String]
+baseDirs Bool
+rawOutput) = do
+    [PoseidonPackage]
+allPackages <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage]
 readPoseidonPackageCollection PackageReadOptions
 pacReadOpts [String]
-baseDirs
-    let jannos :: [JannoRows]
-jannos = (PoseidonPackage -> JannoRows) -> [PoseidonPackage] -> [JannoRows]
+baseDirs
+    let jannos :: [JannoRows]
+jannos = (PoseidonPackage -> JannoRows) -> [PoseidonPackage] -> [JannoRows]
 forall a b. (a -> b) -> [a] -> [b]
 map PoseidonPackage -> JannoRows
 posPacJanno [PoseidonPackage]
-allPackages
-    String -> PoseidonIO ()
+allPackages
+    String -> PoseidonIO ()
 logInfo String
 "Note that only the latest versions of packages are included in the summary"
-    IO () -> PoseidonIO ()
+    IO () -> PoseidonIO ()
 forall a. IO a -> ReaderT Env IO a
 forall (m :: * -> *) a. MonadIO m => IO a -> m a
 liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO ()
@@ -71,36 +74,36 @@
 summariseJannoRows ([JannoRows] -> JannoRows
 forall a. Monoid a => [a] -> a
 mconcat [JannoRows]
-jannos) Bool
-rawOutput
-
--- | A function to print meaningful summary information for a list of poseidon samples
-summariseJannoRows :: JannoRows -> Bool -> IO ()
-summariseJannoRows :: JannoRows -> Bool -> IO ()
-summariseJannoRows (JannoRows [JannoRow]
-rows) Bool
-rawOutput = do
-    ([String]
-tableH, [[String]]
-tableB) <- do
-        let tableH :: [String]
-tableH = [String
+jannos) Bool
+rawOutput
+
+-- | A function to print meaningful summary information for a list of poseidon samples
+summariseJannoRows :: JannoRows -> Bool -> IO ()
+summariseJannoRows :: JannoRows -> Bool -> IO ()
+summariseJannoRows (JannoRows [JannoRow]
+rows) Bool
+rawOutput = do
+    ([String]
+tableH, [[String]]
+tableB) <- do
+        let tableH :: [String]
+tableH = [String
 "Summary", String
 "Value"]
-            tableB :: [[String]]
-tableB = [
-                [String
+            tableB :: [[String]]
+tableB = [
+                [String
 "Nr Samples"
-                , Int -> String
+                , Int -> String
 forall a. Show a => a -> String
 show ([JannoRow] -> Int
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
 length [JannoRow]
-rows)],
-                [String
+rows)],
+                [String
 "Samples"
-                , [String] -> String
+                , [String] -> String
 paste ([String] -> String)
 -> ([JannoRow] -> [String]) -> [JannoRow] -> String
 forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -115,34 +118,34 @@
 jPoseidonID ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "Nr Primary Groups"
-                , [String] -> String
+                , [GroupName] -> String
 forall a. Ord a => [a] -> String
-uniqueNumber ([String] -> String)
--> ([JannoRow] -> [String]) -> [JannoRow] -> String
+uniqueNumber ([GroupName] -> String)
+-> ([JannoRow] -> [GroupName]) -> [JannoRow] -> String
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. (JannoRow -> String) -> [JannoRow] -> [String]
+. (JannoRow -> GroupName) -> [JannoRow] -> [GroupName]
 forall a b. (a -> b) -> [a] -> [b]
-map ([String] -> String
+map ([GroupName] -> GroupName
 forall a. HasCallStack => [a] -> a
-head ([String] -> String)
--> (JannoRow -> [String]) -> JannoRow -> String
+head ([GroupName] -> GroupName)
+-> (JannoRow -> [GroupName]) -> JannoRow -> GroupName
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. JannoList String -> [String]
-forall a. JannoList a -> [a]
-getJannoList (JannoList String -> [String])
--> (JannoRow -> JannoList String) -> JannoRow -> [String]
+. ListColumn GroupName -> [GroupName]
+forall a. ListColumn a -> [a]
+getListColumn (ListColumn GroupName -> [GroupName])
+-> (JannoRow -> ListColumn GroupName) -> JannoRow -> [GroupName]
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. JannoRow -> JannoList String
+. JannoRow -> ListColumn GroupName
 jGroupName) ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "Primary Groups"
-                , String -> [(String, Int)] -> String
+                , String -> [(String, Int)] -> String
 printFrequencyString String
 ", " ([(String, Int)] -> String)
 -> ([JannoRow] -> [(String, Int)]) -> [JannoRow] -> String
@@ -154,86 +157,106 @@
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . (JannoRow -> String) -> [JannoRow] -> [String]
 forall a b. (a -> b) -> [a] -> [b]
-map ([String] -> String
+map (GroupName -> String
+forall a. Show a => a -> String
+show (GroupName -> String)
+-> (JannoRow -> GroupName) -> JannoRow -> String
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+. [GroupName] -> GroupName
 forall a. HasCallStack => [a] -> a
-head ([String] -> String)
--> (JannoRow -> [String]) -> JannoRow -> String
+head ([GroupName] -> GroupName)
+-> (JannoRow -> [GroupName]) -> JannoRow -> GroupName
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. JannoList String -> [String]
-forall a. JannoList a -> [a]
-getJannoList (JannoList String -> [String])
--> (JannoRow -> JannoList String) -> JannoRow -> [String]
+. ListColumn GroupName -> [GroupName]
+forall a. ListColumn a -> [a]
+getListColumn (ListColumn GroupName -> [GroupName])
+-> (JannoRow -> ListColumn GroupName) -> JannoRow -> [GroupName]
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. JannoRow -> JannoList String
+. JannoRow -> ListColumn GroupName
 jGroupName) ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "Nr Publications"
-                , [String] -> String
+                , [JannoPublication] -> String
 forall a. Ord a => [a] -> String
-uniqueNumber ([String] -> String)
--> ([JannoRow] -> [String]) -> [JannoRow] -> String
+uniqueNumber ([JannoPublication] -> String)
+-> ([JannoRow] -> [JannoPublication]) -> [JannoRow] -> String
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. (JannoList String -> [String]) -> [JannoList String] -> [String]
+. (ListColumn JannoPublication -> [JannoPublication])
+-> [ListColumn JannoPublication] -> [JannoPublication]
 forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
-concatMap JannoList String -> [String]
-forall a. JannoList a -> [a]
-getJannoList ([JannoList String] -> [String])
--> ([JannoRow] -> [JannoList String]) -> [JannoRow] -> [String]
+concatMap ListColumn JannoPublication -> [JannoPublication]
+forall a. ListColumn a -> [a]
+getListColumn ([ListColumn JannoPublication] -> [JannoPublication])
+-> ([JannoRow] -> [ListColumn JannoPublication])
+-> [JannoRow]
+-> [JannoPublication]
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. (JannoRow -> Maybe (JannoList String))
--> [JannoRow] -> [JannoList String]
+. (JannoRow -> Maybe (ListColumn JannoPublication))
+-> [JannoRow] -> [ListColumn JannoPublication]
 forall a b. (a -> Maybe b) -> [a] -> [b]
-mapMaybe JannoRow -> Maybe (JannoList String)
+mapMaybe JannoRow -> Maybe (ListColumn JannoPublication)
 jPublication ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "Publications"
-                , [String] -> String
+                , [String] -> String
 paste ([String] -> String)
 -> ([JannoRow] -> [String]) -> [JannoRow] -> String
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. [String] -> [String]
+. (JannoPublication -> String) -> [JannoPublication] -> [String]
+forall a b. (a -> b) -> [a] -> [b]
+map JannoPublication -> String
+forall a. Show a => a -> String
+show ([JannoPublication] -> [String])
+-> ([JannoRow] -> [JannoPublication]) -> [JannoRow] -> [String]
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+. [JannoPublication] -> [JannoPublication]
 forall a. Ord a => [a] -> [a]
-uniquePO ([String] -> [String])
--> ([JannoRow] -> [String]) -> [JannoRow] -> [String]
+uniquePO ([JannoPublication] -> [JannoPublication])
+-> ([JannoRow] -> [JannoPublication])
+-> [JannoRow]
+-> [JannoPublication]
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. (JannoList String -> [String]) -> [JannoList String] -> [String]
+. (ListColumn JannoPublication -> [JannoPublication])
+-> [ListColumn JannoPublication] -> [JannoPublication]
 forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
-concatMap JannoList String -> [String]
-forall a. JannoList a -> [a]
-getJannoList ([JannoList String] -> [String])
--> ([JannoRow] -> [JannoList String]) -> [JannoRow] -> [String]
+concatMap ListColumn JannoPublication -> [JannoPublication]
+forall a. ListColumn a -> [a]
+getListColumn ([ListColumn JannoPublication] -> [JannoPublication])
+-> ([JannoRow] -> [ListColumn JannoPublication])
+-> [JannoRow]
+-> [JannoPublication]
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. (JannoRow -> Maybe (JannoList String))
--> [JannoRow] -> [JannoList String]
+. (JannoRow -> Maybe (ListColumn JannoPublication))
+-> [JannoRow] -> [ListColumn JannoPublication]
 forall a b. (a -> Maybe b) -> [a] -> [b]
-mapMaybe JannoRow -> Maybe (JannoList String)
+mapMaybe JannoRow -> Maybe (ListColumn JannoPublication)
 jPublication ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "Nr Countries"
-                , [String] -> String
+                , [JannoCountry] -> String
 forall a. Ord a => [a] -> String
-uniqueNumber ([String] -> String)
--> ([JannoRow] -> [String]) -> [JannoRow] -> String
+uniqueNumber ([JannoCountry] -> String)
+-> ([JannoRow] -> [JannoCountry]) -> [JannoRow] -> String
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. (JannoRow -> Maybe String) -> [JannoRow] -> [String]
+. (JannoRow -> Maybe JannoCountry) -> [JannoRow] -> [JannoCountry]
 forall a b. (a -> Maybe b) -> [a] -> [b]
-mapMaybe JannoRow -> Maybe String
+mapMaybe JannoRow -> Maybe JannoCountry
 jCountry ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "Countries"
-                , String -> [(Maybe String, Int)] -> String
+                , String -> [(Maybe String, Int)] -> String
 printFrequencyMaybeString String
 ", " ([(Maybe String, Int)] -> String)
 -> ([JannoRow] -> [(Maybe String, Int)]) -> [JannoRow] -> String
@@ -247,36 +270,47 @@
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . (JannoRow -> Maybe String) -> [JannoRow] -> [Maybe String]
 forall a b. (a -> b) -> [a] -> [b]
-map JannoRow -> Maybe String
-jCountry ([JannoRow] -> String) -> [JannoRow] -> String
+map ((JannoCountry -> String) -> Maybe JannoCountry -> Maybe String
+forall a b. (a -> b) -> Maybe a -> Maybe b
+forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
+fmap JannoCountry -> String
+forall a. Show a => a -> String
+show (Maybe JannoCountry -> Maybe String)
+-> (JannoRow -> Maybe JannoCountry) -> JannoRow -> Maybe String
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+. JannoRow -> Maybe JannoCountry
+jCountry) ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows
+                ],
+                [String
 "Mean age BC/AD"
-                , [Double] -> String
+                , [Double] -> String
 meanAndSdInteger ([Double] -> String)
 -> ([JannoRow] -> [Double]) -> [JannoRow] -> String
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. (BCADAge -> Double) -> [BCADAge] -> [Double]
+. (JannoDateBCADMedian -> Double)
+-> [JannoDateBCADMedian] -> [Double]
 forall a b. (a -> b) -> [a] -> [b]
-map (\(BCADAge Int
-x) -> Int -> Double
+map (\(JannoDateBCADMedian Int
+x) -> Int -> Double
 forall a b. (Integral a, Num b) => a -> b
 fromIntegral Int
-x) ([BCADAge] -> [Double])
--> ([JannoRow] -> [BCADAge]) -> [JannoRow] -> [Double]
+x) ([JannoDateBCADMedian] -> [Double])
+-> ([JannoRow] -> [JannoDateBCADMedian]) -> [JannoRow] -> [Double]
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. (JannoRow -> Maybe BCADAge) -> [JannoRow] -> [BCADAge]
+. (JannoRow -> Maybe JannoDateBCADMedian)
+-> [JannoRow] -> [JannoDateBCADMedian]
 forall a b. (a -> Maybe b) -> [a] -> [b]
-mapMaybe JannoRow -> Maybe BCADAge
+mapMaybe JannoRow -> Maybe JannoDateBCADMedian
 jDateBCADMedian ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "Dating type"
-                , String -> [(Maybe JannoDateType, Int)] -> String
+                , String -> [(Maybe JannoDateType, Int)] -> String
 forall a. Show a => String -> [(Maybe a, Int)] -> String
 printFrequencyMaybe String
 ", " ([(Maybe JannoDateType, Int)] -> String)
@@ -298,30 +332,32 @@
 jDateType ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "Sex distribution"
-                , String -> [(JannoSex, Int)] -> String
+                , String -> [(GeneticSex, Int)] -> String
 forall a. Show a => String -> [(a, Int)] -> String
 printFrequency String
-", " ([(JannoSex, Int)] -> String)
--> ([JannoRow] -> [(JannoSex, Int)]) -> [JannoRow] -> String
+", " ([(GeneticSex, Int)] -> String)
+-> ([JannoRow] -> [(GeneticSex, Int)]) -> [JannoRow] -> String
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. [JannoSex] -> [(JannoSex, Int)]
+. [GeneticSex] -> [(GeneticSex, Int)]
 forall a. Ord a => [a] -> [(a, Int)]
-frequency ([JannoSex] -> [(JannoSex, Int)])
--> ([JannoRow] -> [JannoSex]) -> [JannoRow] -> [(JannoSex, Int)]
+frequency ([GeneticSex] -> [(GeneticSex, Int)])
+-> ([JannoRow] -> [GeneticSex])
+-> [JannoRow]
+-> [(GeneticSex, Int)]
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. (JannoRow -> JannoSex) -> [JannoRow] -> [JannoSex]
+. (JannoRow -> GeneticSex) -> [JannoRow] -> [GeneticSex]
 forall a b. (a -> b) -> [a] -> [b]
-map JannoRow -> JannoSex
+map JannoRow -> GeneticSex
 jGeneticSex ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "MT haplogroups"
-                , String -> [(Maybe String, Int)] -> String
+                , String -> [(Maybe String, Int)] -> String
 printFrequencyMaybeString String
 ", " ([(Maybe String, Int)] -> String)
 -> ([JannoRow] -> [(Maybe String, Int)]) -> [JannoRow] -> String
@@ -335,14 +371,25 @@
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . (JannoRow -> Maybe String) -> [JannoRow] -> [Maybe String]
 forall a b. (a -> b) -> [a] -> [b]
-map JannoRow -> Maybe String
-jMTHaplogroup ([JannoRow] -> String) -> [JannoRow] -> String
+map ((JannoMTHaplogroup -> String)
+-> Maybe JannoMTHaplogroup -> Maybe String
+forall a b. (a -> b) -> Maybe a -> Maybe b
+forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
+fmap JannoMTHaplogroup -> String
+forall a. Show a => a -> String
+show (Maybe JannoMTHaplogroup -> Maybe String)
+-> (JannoRow -> Maybe JannoMTHaplogroup)
+-> JannoRow
+-> Maybe String
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+. JannoRow -> Maybe JannoMTHaplogroup
+jMTHaplogroup) ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "Y haplogroups"
-                , String -> [(Maybe String, Int)] -> String
+                , String -> [(Maybe String, Int)] -> String
 printFrequencyMaybeString String
 ", " ([(Maybe String, Int)] -> String)
 -> ([JannoRow] -> [(Maybe String, Int)]) -> [JannoRow] -> String
@@ -356,35 +403,45 @@
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . (JannoRow -> Maybe String) -> [JannoRow] -> [Maybe String]
 forall a b. (a -> b) -> [a] -> [b]
-map JannoRow -> Maybe String
-jYHaplogroup ([JannoRow] -> String) -> [JannoRow] -> String
+map ((JannoYHaplogroup -> String)
+-> Maybe JannoYHaplogroup -> Maybe String
+forall a b. (a -> b) -> Maybe a -> Maybe b
+forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
+fmap JannoYHaplogroup -> String
+forall a. Show a => a -> String
+show (Maybe JannoYHaplogroup -> Maybe String)
+-> (JannoRow -> Maybe JannoYHaplogroup) -> JannoRow -> Maybe String
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+. JannoRow -> Maybe JannoYHaplogroup
+jYHaplogroup) ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "% endogenous DNA"
-                , Int -> [Double] -> String
+                , Int -> [Double] -> String
 meanAndSdRoundTo Int
 2 ([Double] -> String)
 -> ([JannoRow] -> [Double]) -> [JannoRow] -> String
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. (Percent -> Double) -> [Percent] -> [Double]
+. (JannoEndogenous -> Double) -> [JannoEndogenous] -> [Double]
 forall a b. (a -> b) -> [a] -> [b]
-map (\(Percent Double
-x) -> Double
-x) ([Percent] -> [Double])
--> ([JannoRow] -> [Percent]) -> [JannoRow] -> [Double]
+map (\(JannoEndogenous Double
+x) -> Double
+x) ([JannoEndogenous] -> [Double])
+-> ([JannoRow] -> [JannoEndogenous]) -> [JannoRow] -> [Double]
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. (JannoRow -> Maybe Percent) -> [JannoRow] -> [Percent]
+. (JannoRow -> Maybe JannoEndogenous)
+-> [JannoRow] -> [JannoEndogenous]
 forall a b. (a -> Maybe b) -> [a] -> [b]
-mapMaybe JannoRow -> Maybe Percent
+mapMaybe JannoRow -> Maybe JannoEndogenous
 jEndogenous ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "Nr of SNPs"
-                , [Double] -> String
+                , [Double] -> String
 meanAndSdInteger ([Double] -> String)
 -> ([JannoRow] -> [Double]) -> [JannoRow] -> String
 forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -397,28 +454,47 @@
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . (JannoRow -> Maybe Int) -> [JannoRow] -> [Int]
 forall a b. (a -> Maybe b) -> [a] -> [b]
-mapMaybe JannoRow -> Maybe Int
-jNrSNPs ([JannoRow] -> String) -> [JannoRow] -> String
+mapMaybe ((JannoNrSNPs -> Int) -> Maybe JannoNrSNPs -> Maybe Int
+forall a b. (a -> b) -> Maybe a -> Maybe b
+forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
+fmap (\(JannoNrSNPs Int
+x) -> Int
+x) (Maybe JannoNrSNPs -> Maybe Int)
+-> (JannoRow -> Maybe JannoNrSNPs) -> JannoRow -> Maybe Int
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+. JannoRow -> Maybe JannoNrSNPs
+jNrSNPs) ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "Coverage on target"
-                , Int -> [Double] -> String
+                , Int -> [Double] -> String
 meanAndSdRoundTo Int
 2 ([Double] -> String)
 -> ([JannoRow] -> [Double]) -> [JannoRow] -> String
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . (JannoRow -> Maybe Double) -> [JannoRow] -> [Double]
 forall a b. (a -> Maybe b) -> [a] -> [b]
-mapMaybe JannoRow -> Maybe Double
-jCoverageOnTargets ([JannoRow] -> String) -> [JannoRow] -> String
+mapMaybe ((JannoCoverageOnTargets -> Double)
+-> Maybe JannoCoverageOnTargets -> Maybe Double
+forall a b. (a -> b) -> Maybe a -> Maybe b
+forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
+fmap (\(JannoCoverageOnTargets Double
+x) -> Double
+x) (Maybe JannoCoverageOnTargets -> Maybe Double)
+-> (JannoRow -> Maybe JannoCoverageOnTargets)
+-> JannoRow
+-> Maybe Double
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+.  JannoRow -> Maybe JannoCoverageOnTargets
+jCoverageOnTargets) ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "Library type"
-                , String -> [(Maybe JannoLibraryBuilt, Int)] -> String
+                , String -> [(Maybe JannoLibraryBuilt, Int)] -> String
 forall a. Show a => String -> [(Maybe a, Int)] -> String
 printFrequencyMaybe String
 ", " ([(Maybe JannoLibraryBuilt, Int)] -> String)
@@ -440,10 +516,10 @@
 jLibraryBuilt ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows],
-                [String
+rows],
+                [String
 "UDG treatment"
-                , String -> [(Maybe JannoUDG, Int)] -> String
+                , String -> [(Maybe JannoUDG, Int)] -> String
 forall a. Show a => String -> [(Maybe a, Int)] -> String
 printFrequencyMaybe String
 ", " ([(Maybe JannoUDG, Int)] -> String)
@@ -462,16 +538,16 @@
 jUDG ([JannoRow] -> String) -> [JannoRow] -> String
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-rows]
-                ]
-        ([String], [[String]]) -> IO ([String], [[String]])
+rows]
+                ]
+        ([String], [[String]]) -> IO ([String], [[String]])
 forall a. a -> IO a
 forall (m :: * -> *) a. Monad m => a -> m a
 return ([String]
-tableH, [[String]]
-tableB)
-    let colSpecs :: [ColSpec]
-colSpecs = Int -> ColSpec -> [ColSpec]
+tableH, [[String]]
+tableB)
+    let colSpecs :: [ColSpec]
+colSpecs = Int -> ColSpec -> [ColSpec]
 forall a. Int -> a -> [a]
 replicate Int
 2 (LenSpec -> Position H -> AlignSpec -> CutMark -> ColSpec
@@ -484,9 +560,9 @@
 def CutMark
 forall a. Default a => a
 def)
-    if Bool
-rawOutput
-    then String -> IO ()
+    if Bool
+rawOutput
+    then String -> IO ()
 putStrLn (String -> IO ()) -> String -> IO ()
 forall a b. (a -> b) -> a -> b
 $ String -> [String] -> String
@@ -496,10 +572,10 @@
 forall a. [a] -> [[a]] -> [a]
 intercalate String
 "\t" [String]
-row | [String]
-row <- [[String]]
-tableB]
-    else String -> IO ()
+row | [String]
+row <- [[String]]
+tableB]
+    else String -> IO ()
 putStrLn (String -> IO ()) -> String -> IO ()
 forall a b. (a -> b) -> a -> b
 $ [ColSpec]
@@ -508,28 +584,28 @@
 Cell a =>
 [ColSpec] -> TableStyle -> HeaderSpec -> [RowGroup a] -> String
 tableString [ColSpec]
-colSpecs TableStyle
+colSpecs TableStyle
 asciiRoundS ([String] -> HeaderSpec
 titlesH [String]
-tableH) [[[String]] -> RowGroup String
+tableH) [[[String]] -> RowGroup String
 forall a. [Row a] -> RowGroup a
 rowsG [[String]]
-tableB]
-
--- | A helper function to concat the first N elements of a string list in a nice way
-paste :: [String] -> String
-paste :: [String] -> String
+tableB]
+
+-- | A helper function to concat the first N elements of a string list in a nice way
+paste :: [String] -> String
+paste :: [String] -> String
 paste [] = String
 "no values"
-paste [String]
-xs = String -> [String] -> String
+paste [String]
+xs = String -> [String] -> String
 forall a. [a] -> [[a]] -> [a]
 intercalate String
 ", " [String]
-xs
-
-uniqueNumber :: Ord a => [a] -> String
-uniqueNumber :: forall a. Ord a => [a] -> String
+xs
+
+uniqueNumber :: Ord a => [a] -> String
+uniqueNumber :: forall a. Ord a => [a] -> String
 uniqueNumber = Int -> String
 forall a. Show a => a -> String
 show (Int -> String) -> ([a] -> Int) -> [a] -> String
@@ -542,13 +618,13 @@
 . [a] -> [a]
 forall a. Ord a => [a] -> [a]
 uniquePO
-
--- | A helper function to determine the frequency of objects in a list
--- (similar to the table function in R)
-frequency :: Ord a => [a] -> [(a,Int)]
-frequency :: forall a. Ord a => [a] -> [(a, Int)]
-frequency [a]
-list = ((a, Int) -> (a, Int) -> Ordering) -> [(a, Int)] -> [(a, Int)]
+
+-- | A helper function to determine the frequency of objects in a list
+-- (similar to the table function in R)
+frequency :: Ord a => [a] -> [(a,Int)]
+frequency :: forall a. Ord a => [a] -> [(a, Int)]
+frequency [a]
+list = ((a, Int) -> (a, Int) -> Ordering) -> [(a, Int)] -> [(a, Int)]
 forall a. (a -> a -> Ordering) -> [a] -> [a]
 sortBy (a, Int) -> (a, Int) -> Ordering
 forall a b. (Ord a, Ord b) => (a, b) -> (a, b) -> Ordering
@@ -556,69 +632,69 @@
 forall a b. (a -> b) -> a -> b
 $ ([a] -> (a, Int)) -> [[a]] -> [(a, Int)]
 forall a b. (a -> b) -> [a] -> [b]
-map (\[a]
-l -> ([a] -> a
+map (\[a]
+l -> ([a] -> a
 forall a. HasCallStack => [a] -> a
 head [a]
-l, [a] -> Int
+l, [a] -> Int
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
 length [a]
-l)) ([a] -> [[a]]
+l)) ([a] -> [[a]]
 forall a. Eq a => [a] -> [[a]]
 group ([a] -> [a]
 forall a. Ord a => [a] -> [a]
 sort [a]
-list))
-
-sortTupelsBySndDesc :: (Ord a, Ord b) => (a, b) -> (a, b) -> Ordering
-sortTupelsBySndDesc :: forall a b. (Ord a, Ord b) => (a, b) -> (a, b) -> Ordering
-sortTupelsBySndDesc (a
-a1, b
-b1) (a
-a2, b
-b2)
-  | b
-b1 b -> b -> Bool
+list))
+
+sortTupelsBySndDesc :: (Ord a, Ord b) => (a, b) -> (a, b) -> Ordering
+sortTupelsBySndDesc :: forall a b. (Ord a, Ord b) => (a, b) -> (a, b) -> Ordering
+sortTupelsBySndDesc (a
+a1, b
+b1) (a
+a2, b
+b2)
+  | b
+b1 b -> b -> Bool
 forall a. Ord a => a -> a -> Bool
 < b
-b2   = Ordering
+b2   = Ordering
 GT
-  | b
-b1 b -> b -> Bool
+  | b
+b1 b -> b -> Bool
 forall a. Ord a => a -> a -> Bool
 > b
-b2   = Ordering
+b2   = Ordering
 LT
-  | b
-b1 b -> b -> Bool
+  | b
+b1 b -> b -> Bool
 forall a. Eq a => a -> a -> Bool
 == b
-b2  = a -> a -> Ordering
+b2  = a -> a -> Ordering
 forall a. Ord a => a -> a -> Ordering
 compare a
-a1 a
-a2
-  | Bool
+a1 a
+a2
+  | Bool
 otherwise = String -> Ordering
 forall a. HasCallStack => String -> a
 error String
 "sortTuplesBySndDesc: should never happen"
-
--- | A helper function to print the output of frequency nicely
-printFrequency :: Show a => String -> [(a,Int)] -> String
-printFrequency :: forall a. Show a => String -> [(a, Int)] -> String
+
+-- | A helper function to print the output of frequency nicely
+printFrequency :: Show a => String -> [(a,Int)] -> String
+printFrequency :: forall a. Show a => String -> [(a, Int)] -> String
 printFrequency String
 _ [] = String
 "no values"
-printFrequency String
-_ [(a, Int)
-x] = a -> String
+printFrequency String
+_ [(a, Int)
+x] = a -> String
 forall a. Show a => a -> String
 show ((a, Int) -> a
 forall a b. (a, b) -> a
 fst (a, Int)
-x) String -> String -> String
+x) String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String
 ": " String -> String -> String
@@ -628,16 +704,16 @@
 show ((a, Int) -> Int
 forall a b. (a, b) -> b
 snd (a, Int)
-x)
-printFrequency String
-sep ((a, Int)
-x:[(a, Int)]
-xs) = a -> String
+x)
+printFrequency String
+sep ((a, Int)
+x:[(a, Int)]
+xs) = a -> String
 forall a. Show a => a -> String
 show ((a, Int) -> a
 forall a b. (a, b) -> a
 fst (a, Int)
-x) String -> String -> String
+x) String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String
 ": " String -> String -> String
@@ -647,31 +723,31 @@
 show ((a, Int) -> Int
 forall a b. (a, b) -> b
 snd (a, Int)
-x) String -> String -> String
+x) String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String
-sep String -> String -> String
+sep String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String -> [(a, Int)] -> String
 forall a. Show a => String -> [(a, Int)] -> String
 printFrequency String
-sep [(a, Int)]
-xs
-
--- | A helper function to print the output of frequency over Maybe values nicely
-printFrequencyMaybe :: Show a => String -> [(Maybe a,Int)] -> String
-printFrequencyMaybe :: forall a. Show a => String -> [(Maybe a, Int)] -> String
+sep [(a, Int)]
+xs
+
+-- | A helper function to print the output of frequency over Maybe values nicely
+printFrequencyMaybe :: Show a => String -> [(Maybe a,Int)] -> String
+printFrequencyMaybe :: forall a. Show a => String -> [(Maybe a, Int)] -> String
 printFrequencyMaybe String
 _ [] = String
 "no values"
-printFrequencyMaybe String
-_ [(Maybe a, Int)
-x] = Maybe a -> String
+printFrequencyMaybe String
+_ [(Maybe a, Int)
+x] = Maybe a -> String
 forall a. Show a => Maybe a -> String
 maybeShow ((Maybe a, Int) -> Maybe a
 forall a b. (a, b) -> a
 fst (Maybe a, Int)
-x) String -> String -> String
+x) String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String
 ": " String -> String -> String
@@ -681,16 +757,16 @@
 show ((Maybe a, Int) -> Int
 forall a b. (a, b) -> b
 snd (Maybe a, Int)
-x)
-printFrequencyMaybe String
-sep ((Maybe a, Int)
-x:[(Maybe a, Int)]
-xs) = Maybe a -> String
+x)
+printFrequencyMaybe String
+sep ((Maybe a, Int)
+x:[(Maybe a, Int)]
+xs) = Maybe a -> String
 forall a. Show a => Maybe a -> String
 maybeShow ((Maybe a, Int) -> Maybe a
 forall a b. (a, b) -> a
 fst (Maybe a, Int)
-x) String -> String -> String
+x) String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String
 ": " String -> String -> String
@@ -700,41 +776,41 @@
 show ((Maybe a, Int) -> Int
 forall a b. (a, b) -> b
 snd (Maybe a, Int)
-x) String -> String -> String
+x) String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String
-sep String -> String -> String
+sep String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String -> [(Maybe a, Int)] -> String
 forall a. Show a => String -> [(Maybe a, Int)] -> String
 printFrequencyMaybe String
-sep [(Maybe a, Int)]
-xs
-
--- | A helper function to unwrap a maybe
-maybeShow :: Show a => Maybe a -> String
-maybeShow :: forall a. Show a => Maybe a -> String
-maybeShow (Just a
-x) = a -> String
+sep [(Maybe a, Int)]
+xs
+
+-- | A helper function to unwrap a maybe
+maybeShow :: Show a => Maybe a -> String
+maybeShow :: forall a. Show a => Maybe a -> String
+maybeShow (Just a
+x) = a -> String
 forall a. Show a => a -> String
 show a
-x
-maybeShow Maybe a
+x
+maybeShow Maybe a
 Nothing  = String
 "n/a"
-
--- | As printFrequency, but without additional quoting of strings
-printFrequencyString :: String -> [(String,Int)] -> String
-printFrequencyString :: String -> [(String, Int)] -> String
+
+-- | As printFrequency, but without additional quoting of strings
+printFrequencyString :: String -> [(String,Int)] -> String
+printFrequencyString :: String -> [(String, Int)] -> String
 printFrequencyString String
 _ [] = String
 "no values"
-printFrequencyString String
-_ [(String, Int)
-x] = (String, Int) -> String
+printFrequencyString String
+_ [(String, Int)
+x] = (String, Int) -> String
 forall a b. (a, b) -> a
 fst (String, Int)
-x String -> String -> String
+x String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String
 ": " String -> String -> String
@@ -744,14 +820,14 @@
 show ((String, Int) -> Int
 forall a b. (a, b) -> b
 snd (String, Int)
-x)
-printFrequencyString String
-sep ((String, Int)
-x:[(String, Int)]
-xs) = (String, Int) -> String
+x)
+printFrequencyString String
+sep ((String, Int)
+x:[(String, Int)]
+xs) = (String, Int) -> String
 forall a b. (a, b) -> a
 fst (String, Int)
-x String -> String -> String
+x String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String
 ": " String -> String -> String
@@ -761,29 +837,29 @@
 show ((String, Int) -> Int
 forall a b. (a, b) -> b
 snd (String, Int)
-x) String -> String -> String
+x) String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String
-sep String -> String -> String
+sep String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String -> [(String, Int)] -> String
 printFrequencyString String
-sep [(String, Int)]
-xs
-
--- | As printFrequencyMaybe, but without additional quoting of strings
-printFrequencyMaybeString :: String -> [(Maybe String,Int)] -> String
-printFrequencyMaybeString :: String -> [(Maybe String, Int)] -> String
+sep [(String, Int)]
+xs
+
+-- | As printFrequencyMaybe, but without additional quoting of strings
+printFrequencyMaybeString :: String -> [(Maybe String,Int)] -> String
+printFrequencyMaybeString :: String -> [(Maybe String, Int)] -> String
 printFrequencyMaybeString String
 _ [] = String
 "no values"
-printFrequencyMaybeString String
-_ [(Maybe String, Int)
-x] = Maybe String -> String
+printFrequencyMaybeString String
+_ [(Maybe String, Int)
+x] = Maybe String -> String
 maybeShowString ((Maybe String, Int) -> Maybe String
 forall a b. (a, b) -> a
 fst (Maybe String, Int)
-x) String -> String -> String
+x) String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String
 ": " String -> String -> String
@@ -793,15 +869,15 @@
 show ((Maybe String, Int) -> Int
 forall a b. (a, b) -> b
 snd (Maybe String, Int)
-x)
-printFrequencyMaybeString String
-sep ((Maybe String, Int)
-x:[(Maybe String, Int)]
-xs) = Maybe String -> String
+x)
+printFrequencyMaybeString String
+sep ((Maybe String, Int)
+x:[(Maybe String, Int)]
+xs) = Maybe String -> String
 maybeShowString ((Maybe String, Int) -> Maybe String
 forall a b. (a, b) -> a
 fst (Maybe String, Int)
-x) String -> String -> String
+x) String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String
 ": " String -> String -> String
@@ -811,23 +887,23 @@
 show ((Maybe String, Int) -> Int
 forall a b. (a, b) -> b
 snd (Maybe String, Int)
-x) String -> String -> String
+x) String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String
-sep String -> String -> String
+sep String -> String -> String
 forall a. [a] -> [a] -> [a]
 ++ String -> [(Maybe String, Int)] -> String
 printFrequencyMaybeString String
-sep [(Maybe String, Int)]
-xs
-
--- | As maybeShow, but without additional quoting of strings
-maybeShowString :: Maybe String -> String
-maybeShowString :: Maybe String -> String
-maybeShowString (Just String
-x) = String
-x
-maybeShowString Maybe String
+sep [(Maybe String, Int)]
+xs
+
+-- | As maybeShow, but without additional quoting of strings
+maybeShowString :: Maybe String -> String
+maybeShowString :: Maybe String -> String
+maybeShowString (Just String
+x) = String
+x
+maybeShowString Maybe String
 Nothing  = String
 "n/a"
-
\ No newline at end of file + \ No newline at end of file diff --git a/src/Poseidon.CLI.Survey.html b/src/Poseidon.CLI.Survey.html index 55033972..fe3e13a0 100644 --- a/src/Poseidon.CLI.Survey.html +++ b/src/Poseidon.CLI.Survey.html @@ -9,8 +9,8 @@ import Poseidon.BibFile (BibTeX) import Poseidon.GenotypeData (GenotypeDataSpec (..)) -import Poseidon.Janno (CsvNamedRecord, JannoRows (..), - JannoSex, JannoStringList) +import Poseidon.Janno (CsvNamedRecord, GeneticSex, + JannoRows (..), ListColumn (..)) import Poseidon.Package (PackageReadOptions (..), PoseidonPackage (..), defaultPackageReadOptions, @@ -46,50 +46,50 @@ -- | The main function running the janno command runSurvey :: SurveyOptions -> PoseidonIO () runSurvey :: SurveyOptions -> PoseidonIO () -runSurvey (SurveyOptions [String] -baseDirs Bool -rawOutput Bool -onlyLatest) = do - let pacReadOpts :: PackageReadOptions -pacReadOpts = PackageReadOptions +runSurvey (SurveyOptions [String] +baseDirs Bool +rawOutput Bool +onlyLatest) = do + let pacReadOpts :: PackageReadOptions +pacReadOpts = PackageReadOptions defaultPackageReadOptions { _readOptIgnoreChecksums :: Bool -_readOptIgnoreChecksums = Bool +_readOptIgnoreChecksums = Bool True , _readOptIgnoreGeno :: Bool -_readOptIgnoreGeno = Bool +_readOptIgnoreGeno = Bool True , _readOptGenoCheck :: Bool -_readOptGenoCheck = Bool +_readOptGenoCheck = Bool False , _readOptOnlyLatest :: Bool -_readOptOnlyLatest = Bool -onlyLatest +_readOptOnlyLatest = Bool +onlyLatest } - [PoseidonPackage] -allPackages <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage] + [PoseidonPackage] +allPackages <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions -pacReadOpts [String] -baseDirs +pacReadOpts [String] +baseDirs -- collect information - let packageNames :: [PacNameAndVersion] -packageNames = (PoseidonPackage -> PacNameAndVersion) + let packageNames :: [PacNameAndVersion] +packageNames = (PoseidonPackage -> PacNameAndVersion) -> [PoseidonPackage] -> [PacNameAndVersion] forall a b. (a -> b) -> [a] -> [b] map PoseidonPackage -> PacNameAndVersion posPacNameAndVersion [PoseidonPackage] -allPackages +allPackages -- geno - let genotypeDataTuples :: [(String, GenotypeDataSpec)] -genotypeDataTuples = [(PoseidonPackage -> String + let genotypeDataTuples :: [(String, GenotypeDataSpec)] +genotypeDataTuples = [(PoseidonPackage -> String posPacBaseDir PoseidonPackage -pac, PoseidonPackage -> GenotypeDataSpec +pac, PoseidonPackage -> GenotypeDataSpec posPacGenotypeData PoseidonPackage -pac) | PoseidonPackage -pac <- [PoseidonPackage] -allPackages] - [Bool] -genoFilesExist <- IO [Bool] -> ReaderT Env IO [Bool] +pac) | PoseidonPackage +pac <- [PoseidonPackage] +allPackages] + [Bool] +genoFilesExist <- IO [Bool] -> ReaderT Env IO [Bool] forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO [Bool] -> ReaderT Env IO [Bool]) @@ -102,15 +102,15 @@ forall (m :: * -> *) a. Monad m => [m a] -> m [a] sequence [String -> IO Bool doesFileExist (String -d String -> String -> String +d String -> String -> String </> GenotypeDataSpec -> String genoFile GenotypeDataSpec -gd) | (String -d, GenotypeDataSpec -gd) <- [(String, GenotypeDataSpec)] -genotypeDataTuples] - [Bool] -snpFilesExist <- IO [Bool] -> ReaderT Env IO [Bool] +gd) | (String +d, GenotypeDataSpec +gd) <- [(String, GenotypeDataSpec)] +genotypeDataTuples] + [Bool] +snpFilesExist <- IO [Bool] -> ReaderT Env IO [Bool] forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO [Bool] -> ReaderT Env IO [Bool]) @@ -123,15 +123,15 @@ forall (m :: * -> *) a. Monad m => [m a] -> m [a] sequence [String -> IO Bool doesFileExist (String -d String -> String -> String +d String -> String -> String </> GenotypeDataSpec -> String snpFile GenotypeDataSpec -gd) | (String -d, GenotypeDataSpec -gd) <- [(String, GenotypeDataSpec)] -genotypeDataTuples] - [Bool] -indFilesExist <- IO [Bool] -> ReaderT Env IO [Bool] +gd) | (String +d, GenotypeDataSpec +gd) <- [(String, GenotypeDataSpec)] +genotypeDataTuples] + [Bool] +indFilesExist <- IO [Bool] -> ReaderT Env IO [Bool] forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO [Bool] -> ReaderT Env IO [Bool]) @@ -144,64 +144,64 @@ forall (m :: * -> *) a. Monad m => [m a] -> m [a] sequence [String -> IO Bool doesFileExist (String -d String -> String -> String +d String -> String -> String </> GenotypeDataSpec -> String indFile GenotypeDataSpec -gd) | (String -d, GenotypeDataSpec -gd) <- [(String, GenotypeDataSpec)] -genotypeDataTuples] - let genoTypeDataExists :: [Bool] -genoTypeDataExists = ((Bool, Bool, Bool) -> Bool) -> [(Bool, Bool, Bool)] -> [Bool] +gd) | (String +d, GenotypeDataSpec +gd) <- [(String, GenotypeDataSpec)] +genotypeDataTuples] + let genoTypeDataExists :: [Bool] +genoTypeDataExists = ((Bool, Bool, Bool) -> Bool) -> [(Bool, Bool, Bool)] -> [Bool] forall a b. (a -> b) -> [a] -> [b] -map (\(Bool -a,Bool -b,Bool -c) -> Bool -a Bool -> Bool -> Bool +map (\(Bool +a,Bool +b,Bool +c) -> Bool +a Bool -> Bool -> Bool && Bool -b Bool -> Bool -> Bool +b Bool -> Bool -> Bool && Bool -c) ([(Bool, Bool, Bool)] -> [Bool]) -> [(Bool, Bool, Bool)] -> [Bool] +c) ([(Bool, Bool, Bool)] -> [Bool]) -> [(Bool, Bool, Bool)] -> [Bool] forall a b. (a -> b) -> a -> b $ [Bool] -> [Bool] -> [Bool] -> [(Bool, Bool, Bool)] forall a b c. [a] -> [b] -> [c] -> [(a, b, c)] zip3 [Bool] -genoFilesExist [Bool] -snpFilesExist [Bool] -indFilesExist +genoFilesExist [Bool] +snpFilesExist [Bool] +indFilesExist -- janno - let jannos :: [JannoRows] -jannos = (PoseidonPackage -> JannoRows) -> [PoseidonPackage] -> [JannoRows] + let jannos :: [JannoRows] +jannos = (PoseidonPackage -> JannoRows) -> [PoseidonPackage] -> [JannoRows] forall a b. (a -> b) -> [a] -> [b] map PoseidonPackage -> JannoRows posPacJanno [PoseidonPackage] -allPackages +allPackages -- ssf - let ssfs :: [SeqSourceRows] -ssfs = (PoseidonPackage -> SeqSourceRows) + let ssfs :: [SeqSourceRows] +ssfs = (PoseidonPackage -> SeqSourceRows) -> [PoseidonPackage] -> [SeqSourceRows] forall a b. (a -> b) -> [a] -> [b] map PoseidonPackage -> SeqSourceRows posPacSeqSource [PoseidonPackage] -allPackages +allPackages -- bib - let bibs :: [BibTeX] -bibs = (PoseidonPackage -> BibTeX) -> [PoseidonPackage] -> [BibTeX] + let bibs :: [BibTeX] +bibs = (PoseidonPackage -> BibTeX) -> [PoseidonPackage] -> [BibTeX] forall a b. (a -> b) -> [a] -> [b] map PoseidonPackage -> BibTeX posPacBib [PoseidonPackage] -allPackages +allPackages -- print information - ([String] -tableH, [[String]] -tableB) <- do - let tableH :: [String] -tableH = [String + ([String] +tableH, [[String]] +tableB) <- do + let tableH :: [String] +tableH = [String "Package", String "Survey"] - [[String]] -tableB <- [(PacNameAndVersion, Bool, JannoRows, SeqSourceRows, BibTeX)] + [[String]] +tableB <- [(PacNameAndVersion, Bool, JannoRows, SeqSourceRows, BibTeX)] -> ((PacNameAndVersion, Bool, JannoRows, SeqSourceRows, BibTeX) -> ReaderT Env IO [String]) -> ReaderT Env IO [[String]] @@ -217,43 +217,43 @@ forall a b c d e. [a] -> [b] -> [c] -> [d] -> [e] -> [(a, b, c, d, e)] zip5 [PacNameAndVersion] -packageNames [Bool] -genoTypeDataExists [JannoRows] -jannos [SeqSourceRows] -ssfs [BibTeX] -bibs) (((PacNameAndVersion, Bool, JannoRows, SeqSourceRows, BibTeX) +packageNames [Bool] +genoTypeDataExists [JannoRows] +jannos [SeqSourceRows] +ssfs [BibTeX] +bibs) (((PacNameAndVersion, Bool, JannoRows, SeqSourceRows, BibTeX) -> ReaderT Env IO [String]) -> ReaderT Env IO [[String]]) -> ((PacNameAndVersion, Bool, JannoRows, SeqSourceRows, BibTeX) -> ReaderT Env IO [String]) -> ReaderT Env IO [[String]] forall a b. (a -> b) -> a -> b -$ \(PacNameAndVersion -p, Bool -g, JannoRows -j, SeqSourceRows -s, BibTeX -b) -> do +$ \(PacNameAndVersion +p, Bool +g, JannoRows +j, SeqSourceRows +s, BibTeX +b) -> do [String] -> ReaderT Env IO [String] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return [PacNameAndVersion -> String forall a. Show a => a -> String show PacNameAndVersion -p, Bool -> JannoRows -> SeqSourceRows -> BibTeX -> String +p, Bool -> JannoRows -> SeqSourceRows -> BibTeX -> String renderPackageWithCompleteness Bool -g JannoRows -j SeqSourceRows -s BibTeX -b] +g JannoRows +j SeqSourceRows +s BibTeX +b] ([String], [[String]]) -> ReaderT Env IO ([String], [[String]]) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return ([String] -tableH, [[String]] -tableB) - let colSpecs :: [ColSpec] -colSpecs = Int -> ColSpec -> [ColSpec] +tableH, [[String]] +tableB) + let colSpecs :: [ColSpec] +colSpecs = Int -> ColSpec -> [ColSpec] forall a. Int -> a -> [a] replicate Int 2 (LenSpec -> Position H -> AlignSpec -> CutMark -> ColSpec @@ -267,7 +267,7 @@ forall a. Default a => a def) if Bool -rawOutput +rawOutput then IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -283,9 +283,9 @@ forall a. [a] -> [[a]] -> [a] intercalate String "\t" [String] -row | [String] -row <- [[String]] -tableB] +row | [String] +row <- [[String]] +tableB] else IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -300,13 +300,13 @@ Cell a => [ColSpec] -> TableStyle -> HeaderSpec -> [RowGroup a] -> String tableString [ColSpec] -colSpecs TableStyle +colSpecs TableStyle asciiRoundS ([String] -> HeaderSpec titlesH [String] -tableH) [[[String]] -> RowGroup String +tableH) [[[String]] -> RowGroup String forall a. [Row a] -> RowGroup a rowsG [[String]] -tableB] +tableB] -- print help String -> PoseidonIO () logInfo String @@ -314,13 +314,13 @@ renderPackageWithCompleteness :: Bool -> JannoRows -> SeqSourceRows -> BibTeX -> String renderPackageWithCompleteness :: Bool -> JannoRows -> SeqSourceRows -> BibTeX -> String -renderPackageWithCompleteness Bool -genoTypeDataExists JannoRows -janno (SeqSourceRows [SeqSourceRow] -seqSource) BibTeX -bib = +renderPackageWithCompleteness Bool +genoTypeDataExists JannoRows +janno (SeqSourceRows [SeqSourceRow] +seqSource) BibTeX +bib = (if Bool -genoTypeDataExists then String +genoTypeDataExists then String "G" else String ".") String -> String -> String @@ -330,7 +330,7 @@ forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [SeqSourceRow] -seqSource) then String +seqSource) then String "S" else String ".") String -> String -> String @@ -340,7 +340,7 @@ forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null BibTeX -bib) then String +bib) then String "B" else String ".") String -> String -> String @@ -351,34 +351,34 @@ forall a. [a] -> [a] -> [a] ++ Int -> Char -> String -> String forall a. Int -> a -> [a] -> [a] -insertEveryN Int +insertEveryN Int 5 Char '|' (JannoRows -> String renderJannoCompleteness JannoRows -janno) +janno) where -- https://stackoverflow.com/questions/12659562/insert-specific-element-y-after-every-n-elements-in-a-list - insertEveryN :: Int -> a -> [a] -> [a] - insertEveryN :: forall a. Int -> a -> [a] -> [a] -insertEveryN Int -n a -y [a] -xs = [a] -> [[a]] -> [a] + insertEveryN :: Int -> a -> [a] -> [a] + insertEveryN :: forall a. Int -> a -> [a] -> [a] +insertEveryN Int +n a +y [a] +xs = [a] -> [[a]] -> [a] forall a. [a] -> [[a]] -> [a] intercalate [a -y] ([[a]] -> [a]) -> ([a] -> [[a]]) -> [a] -> [a] +y] ([[a]] -> [a]) -> ([a] -> [[a]]) -> [a] -> [a] forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> [a] -> [[a]] forall {a}. Int -> [a] -> [[a]] -groups Int -n ([a] -> [a]) -> [a] -> [a] +groups Int +n ([a] -> [a]) -> [a] -> [a] forall a b. (a -> b) -> a -> b $ [a] -xs - where groups :: Int -> [a] -> [[a]] -groups Int -n_ [a] -xs_ = ([a] -> Bool) -> [[a]] -> [[a]] +xs + where groups :: Int -> [a] -> [[a]] +groups Int +n_ [a] +xs_ = ([a] -> Bool) -> [[a]] -> [[a]] forall a. (a -> Bool) -> [a] -> [a] takeWhile (Bool -> Bool not (Bool -> Bool) -> ([a] -> Bool) -> [a] -> Bool @@ -398,38 +398,38 @@ . Int -> [a] -> ([a], [a]) forall a. Int -> [a] -> ([a], [a]) splitAt Int -n_) ([a] -> [[a]]) -> [a] -> [[a]] +n_) ([a] -> [[a]]) -> [a] -> [[a]] forall a b. (a -> b) -> a -> b $ [a] -xs_ +xs_ renderJannoCompleteness :: JannoRows -> String renderJannoCompleteness :: JannoRows -> String -renderJannoCompleteness (JannoRows [JannoRow] -rows) = - let ratioString :: String -ratioString = (Ratio Int -> Char) -> [Ratio Int] -> String +renderJannoCompleteness (JannoRows [JannoRow] +rows) = + let ratioString :: String +ratioString = (Ratio Int -> Char) -> [Ratio Int] -> String forall a b. (a -> b) -> [a] -> [b] map Ratio Int -> Char -prop2Char ([Ratio Int] -> String) -> [Ratio Int] -> String +prop2Char ([Ratio Int] -> String) -> [Ratio Int] -> String forall a b. (a -> b) -> a -> b $ [JannoRow] -> [Ratio Int] forall a (xs :: [*]). (Generic a, Code a ~ '[xs], All PresenceCountable xs) => [a] -> [Ratio Int] -getRatiosForEachField [JannoRow] -rows +getRatiosForEachField [JannoRow] +rows in String -> String forall a. HasCallStack => [a] -> [a] init String -ratioString -- remove last entry covering the additional columns (CsvNamedRecord) +ratioString -- remove last entry covering the additional columns (CsvNamedRecord) where -- the following magic was heavily inspired by https://stackoverflow.com/a/41524511/3216883 - getRatiosForEachField :: (Generics.SOP.Generic a, Code a ~ '[ xs ], All PresenceCountable xs) => [a] -> [Ratio Int] - getRatiosForEachField :: forall a (xs :: [*]). + getRatiosForEachField :: (Generics.SOP.Generic a, Code a ~ '[ xs ], All PresenceCountable xs) => [a] -> [Ratio Int] + getRatiosForEachField :: forall a (xs :: [*]). (Generic a, Code a ~ '[xs], All PresenceCountable xs) => [a] -> [Ratio Int] -getRatiosForEachField = +getRatiosForEachField = NP (K (Ratio Int)) xs -> [Ratio Int] NP (K (Ratio Int)) xs -> CollapseTo NP (Ratio Int) forall (xs :: [*]) a. @@ -461,13 +461,13 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . [a] -> Ratio Int forall a. PresenceCountable a => [a] -> Ratio Int -measureFillState) +measureFillState) (NP [] xs -> NP (K (Ratio Int)) xs) -> ([a] -> NP [] xs) -> [a] -> NP (K (Ratio Int)) xs forall b c a. (b -> c) -> (a -> b) -> a -> c . [NP I xs] -> NP [] xs forall (xs :: [*]). SListI xs => [NP I xs] -> NP [] xs -hunzip +hunzip ([NP I xs] -> NP [] xs) -> ([a] -> [NP I xs]) -> [a] -> NP [] xs forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> NP I xs) -> [a] -> [NP I xs] @@ -486,9 +486,9 @@ a -> Rep a forall a. Generic a => a -> Rep a from) - hunzip :: SListI xs => [NP I xs] -> NP [] xs - hunzip :: forall (xs :: [*]). SListI xs => [NP I xs] -> NP [] xs -hunzip = (NP I xs -> NP [] xs -> NP [] xs) + hunzip :: SListI xs => [NP I xs] -> NP [] xs + hunzip :: forall (xs :: [*]). SListI xs => [NP I xs] -> NP [] xs +hunzip = (NP I xs -> NP [] xs -> NP [] xs) -> NP [] xs -> [NP I xs] -> NP [] xs forall a b. (a -> b -> b) -> b -> [a] -> b forall (t :: * -> *) a b. @@ -513,18 +513,18 @@ (HPure h, SListIN h xs) => (forall (a :: k). f a) -> h f xs hpure []) - measureFillState :: PresenceCountable a => [a] -> Ratio Int - measureFillState :: forall a. PresenceCountable a => [a] -> Ratio Int -measureFillState [a] -vals = - let nrValues :: Int -nrValues = [a] -> Int + measureFillState :: PresenceCountable a => [a] -> Ratio Int + measureFillState :: forall a. PresenceCountable a => [a] -> Ratio Int +measureFillState [a] +vals = + let nrValues :: Int +nrValues = [a] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [a] -vals - nrFilledValues :: Int -nrFilledValues = [Int] -> Int +vals + nrFilledValues :: Int +nrFilledValues = [Int] -> Int forall a. Num a => [a] -> a forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum ([Int] -> Int) -> [Int] -> Int @@ -534,42 +534,42 @@ map a -> Int forall a. PresenceCountable a => a -> Int countPresence [a] -vals +vals in Int -nrFilledValues Int -> Int -> Ratio Int +nrFilledValues Int -> Int -> Ratio Int forall a. Integral a => a -> a -> Ratio a % Int -nrValues - prop2Char :: Ratio Int -> Char - prop2Char :: Ratio Int -> Char -prop2Char Ratio Int -r +nrValues + prop2Char :: Ratio Int -> Char + prop2Char :: Ratio Int -> Char +prop2Char Ratio Int +r | Ratio Int -r Ratio Int -> Ratio Int -> Bool +r Ratio Int -> Ratio Int -> Bool forall a. Eq a => a -> a -> Bool == Ratio Int 0 = Char '.' | Ratio Int -r Ratio Int -> Ratio Int -> Bool +r Ratio Int -> Ratio Int -> Bool forall a. Ord a => a -> a -> Bool < Ratio Int 0.25 = Char '░' | Ratio Int -r Ratio Int -> Ratio Int -> Bool +r Ratio Int -> Ratio Int -> Bool forall a. Ord a => a -> a -> Bool < Ratio Int 0.5 = Char '▒' | Ratio Int -r Ratio Int -> Ratio Int -> Bool +r Ratio Int -> Ratio Int -> Bool forall a. Ord a => a -> a -> Bool < Ratio Int 1 = Char '▓' | Ratio Int -r Ratio Int -> Ratio Int -> Bool +r Ratio Int -> Ratio Int -> Bool forall a. Eq a => a -> a -> Bool == Ratio Int 1 = Char @@ -579,10 +579,10 @@ '?' -- A typeclass to determine if a field in a .janno row is filled -class PresenceCountable a where - countPresence :: a -> Int -instance PresenceCountable (Maybe a) where - countPresence :: Maybe a -> Int +class PresenceCountable a where + countPresence :: a -> Int +instance PresenceCountable (Maybe a) where + countPresence :: Maybe a -> Int countPresence Maybe a Nothing = Int 0 @@ -590,22 +590,22 @@ _) = Int 1 instance PresenceCountable String where - countPresence :: String -> Int + countPresence :: String -> Int countPresence String _ = Int 1 -instance PresenceCountable JannoSex where - countPresence :: JannoSex -> Int -countPresence JannoSex +instance PresenceCountable GeneticSex where + countPresence :: GeneticSex -> Int +countPresence GeneticSex _ = Int 1 -instance PresenceCountable JannoStringList where - countPresence :: JannoStringList -> Int -countPresence JannoStringList +instance PresenceCountable (ListColumn a) where + countPresence :: ListColumn a -> Int +countPresence ListColumn a _ = Int 1 instance PresenceCountable CsvNamedRecord where - countPresence :: CsvNamedRecord -> Int + countPresence :: CsvNamedRecord -> Int countPresence CsvNamedRecord _ = Int 0 diff --git a/src/Poseidon.CLI.Timetravel.html b/src/Poseidon.CLI.Timetravel.html index bed06b3c..f7aef8e0 100644 --- a/src/Poseidon.CLI.Timetravel.html +++ b/src/Poseidon.CLI.Timetravel.html @@ -51,28 +51,28 @@ runTimetravel :: TimetravelOptions -> PoseidonIO () runTimetravel :: TimetravelOptions -> PoseidonIO () -runTimetravel (TimetravelOptions [String] -baseDirs String -srcDir String -chroniclePath) = do - [PoseidonPackage] -allPackages <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage] +runTimetravel (TimetravelOptions [String] +baseDirs String +srcDir String +chroniclePath) = do + [PoseidonPackage] +allPackages <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions pacReadOpts [String] -baseDirs - Set PackageIteration -pacsInBaseDirs <- String -> [PoseidonPackage] -> PoseidonIO (Set PackageIteration) +baseDirs + Set PackageIteration +pacsInBaseDirs <- String -> [PoseidonPackage] -> PoseidonIO (Set PackageIteration) chroniclePackages String -chroniclePath [PoseidonPackage] -allPackages - PoseidonPackageChronicle -chronicle <- String -> PoseidonIO PoseidonPackageChronicle +chroniclePath [PoseidonPackage] +allPackages + PoseidonPackageChronicle +chronicle <- String -> PoseidonIO PoseidonPackageChronicle readChronicle String -chroniclePath - let pacsInChronicle :: Set PackageIteration -pacsInChronicle = PoseidonPackageChronicle -> Set PackageIteration +chroniclePath + let pacsInChronicle :: Set PackageIteration +pacsInChronicle = PoseidonPackageChronicle -> Set PackageIteration snapYamlPackages PoseidonPackageChronicle -chronicle +chronicle case Set PackageIteration -> [PackageIteration] forall a. Set a -> [a] S.toList (Set PackageIteration -> [PackageIteration]) @@ -82,15 +82,15 @@ -> Set PackageIteration -> Set PackageIteration forall a. Ord a => Set a -> Set a -> Set a S.difference Set PackageIteration -pacsInChronicle Set PackageIteration -pacsInBaseDirs of +pacsInChronicle Set PackageIteration +pacsInBaseDirs of [] -> do String -> PoseidonIO () logInfo String "All packages already there, nothing to add" - [PackageIteration] -pacStatesToAdd -> do - Either GitHashException GitInfo -eitherGit <- IO (Either GitHashException GitInfo) + [PackageIteration] +pacStatesToAdd -> do + Either GitHashException GitInfo +eitherGit <- IO (Either GitHashException GitInfo) -> ReaderT Env IO (Either GitHashException GitInfo) forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -101,11 +101,11 @@ forall a b. (a -> b) -> a -> b $ String -> IO (Either GitHashException GitInfo) getGitInfo String -srcDir +srcDir case Either GitHashException GitInfo -eitherGit of - Left GitHashException -e -> do PoseidonException -> PoseidonIO () +eitherGit of + Left GitHashException +e -> do PoseidonException -> PoseidonIO () forall e a. Exception e => e -> ReaderT Env IO a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (PoseidonException -> PoseidonIO ()) @@ -113,16 +113,16 @@ forall a b. (a -> b) -> a -> b $ String -> String -> PoseidonException PoseidonGitException String -srcDir (GitHashException -> String +srcDir (GitHashException -> String forall a. Show a => a -> String show GitHashException -e) - Right GitInfo -gitRef -> do - let currentBranch :: String -currentBranch = GitInfo -> String +e) + Right GitInfo +gitRef -> do + let currentBranch :: String +currentBranch = GitInfo -> String giBranch GitInfo -gitRef +gitRef String -> PoseidonIO () logInfo (String -> PoseidonIO ()) -> String -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -130,15 +130,15 @@ "Starting at branch " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -currentBranch String -> String -> String +currentBranch String -> String -> String forall a. [a] -> [a] -> [a] ++ String " in " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -srcDir - LogA -logAction <- PoseidonIO LogA +srcDir + LogA +logAction <- PoseidonIO LogA envLogAction IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a @@ -149,27 +149,27 @@ forall a b. IO a -> IO b -> IO a finally (LogA -> [PackageIteration] -> IO () -recoverPacsIO LogA -logAction [PackageIteration] -pacStatesToAdd) +recoverPacsIO LogA +logAction [PackageIteration] +pacStatesToAdd) (LogA -> String -> IO () -gitCheckoutIO LogA -logAction String -currentBranch) +gitCheckoutIO LogA +logAction String +currentBranch) String -> PoseidonIO () logInfo String "Done" where -- these IO actions are only necessary to wrap the computation -- in Control.Exception.finally, which runs in IO, not PoseidonIO - recoverPacsIO :: LogA -> [PackageIteration] -> IO () - recoverPacsIO :: LogA -> [PackageIteration] -> IO () -recoverPacsIO LogA -logA [PackageIteration] -pacIters = LogA -> PoseidonIO () -> IO () + recoverPacsIO :: LogA -> [PackageIteration] -> IO () + recoverPacsIO :: LogA -> [PackageIteration] -> IO () +recoverPacsIO LogA +logA [PackageIteration] +pacIters = LogA -> PoseidonIO () -> IO () forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () logWithEnv LogA -logA (PoseidonIO () -> IO ()) -> PoseidonIO () -> IO () +logA (PoseidonIO () -> IO ()) -> PoseidonIO () -> IO () forall a b. (a -> b) -> a -> b $ (PackageIteration -> PoseidonIO ()) -> [PackageIteration] -> PoseidonIO () @@ -177,34 +177,34 @@ (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ PackageIteration -> PoseidonIO () -recoverPacIter [PackageIteration] -pacIters - gitCheckoutIO :: LogA -> String -> IO () - gitCheckoutIO :: LogA -> String -> IO () -gitCheckoutIO LogA -logA String -s = LogA -> PoseidonIO () -> IO () +recoverPacIter [PackageIteration] +pacIters + gitCheckoutIO :: LogA -> String -> IO () + gitCheckoutIO :: LogA -> String -> IO () +gitCheckoutIO LogA +logA String +s = LogA -> PoseidonIO () -> IO () forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () logWithEnv LogA -logA (PoseidonIO () -> IO ()) -> PoseidonIO () -> IO () +logA (PoseidonIO () -> IO ()) -> PoseidonIO () -> IO () forall a b. (a -> b) -> a -> b $ String -> String -> PoseidonIO () gitCheckout String -srcDir String -s - recoverPacIter :: PackageIteration -> PoseidonIO () - recoverPacIter :: PackageIteration -> PoseidonIO () -recoverPacIter pacIter :: PackageIteration -pacIter@(PackageIteration String +srcDir String +s + recoverPacIter :: PackageIteration -> PoseidonIO () + recoverPacIter :: PackageIteration -> PoseidonIO () +recoverPacIter pacIter :: PackageIteration +pacIter@(PackageIteration String _ Version -_ String -commit String -path) = do - let pacIterName :: String -pacIterName = PackageIteration -> String +_ String +commit String +path) = do + let pacIterName :: String +pacIterName = PackageIteration -> String forall a. HasNameAndVersion a => a -> String renderNameWithVersion PackageIteration -pacIter +pacIter String -> PoseidonIO () logInfo (String -> PoseidonIO ()) -> String -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -212,10 +212,10 @@ "Recovering package " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -pacIterName +pacIterName -- this exists to reduce the number of checkouts - Either GitHashException GitInfo -eitherGit <- IO (Either GitHashException GitInfo) + Either GitHashException GitInfo +eitherGit <- IO (Either GitHashException GitInfo) -> ReaderT Env IO (Either GitHashException GitInfo) forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -226,11 +226,11 @@ forall a b. (a -> b) -> a -> b $ String -> IO (Either GitHashException GitInfo) getGitInfo String -srcDir +srcDir case Either GitHashException GitInfo -eitherGit of - Left GitHashException -e -> do PoseidonException -> PoseidonIO () +eitherGit of + Left GitHashException +e -> do PoseidonException -> PoseidonIO () forall e a. Exception e => e -> ReaderT Env IO a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (PoseidonException -> PoseidonIO ()) @@ -238,21 +238,21 @@ forall a b. (a -> b) -> a -> b $ String -> String -> PoseidonException PoseidonGitException String -srcDir (GitHashException -> String +srcDir (GitHashException -> String forall a. Show a => a -> String show GitHashException -e) - Right GitInfo -gitRef -> do - let currentCommit :: String -currentCommit = GitInfo -> String +e) + Right GitInfo +gitRef -> do + let currentCommit :: String +currentCommit = GitInfo -> String giHash GitInfo -gitRef +gitRef if String -currentCommit String -> String -> Bool +currentCommit String -> String -> Bool forall a. Eq a => a -> a -> Bool == String -commit +commit then do String -> PoseidonIO () logInfo (String -> PoseidonIO ()) -> String -> PoseidonIO () @@ -261,44 +261,44 @@ "Already at the right commit " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -commit String -> String -> String +commit String -> String -> String forall a. [a] -> [a] -> [a] ++ String " in " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -srcDir +srcDir String -> String -> PoseidonIO () copyDirectory (String -srcDir String -> String -> String +srcDir String -> String -> String </> String -path) ([String] -> String +path) ([String] -> String forall a. HasCallStack => [a] -> a head [String] -baseDirs String -> String -> String +baseDirs String -> String -> String </> String -pacIterName) +pacIterName) else do String -> String -> PoseidonIO () gitCheckout String -srcDir String -commit +srcDir String +commit String -> String -> PoseidonIO () copyDirectory (String -srcDir String -> String -> String +srcDir String -> String -> String </> String -path) ([String] -> String +path) ([String] -> String forall a. HasCallStack => [a] -> a head [String] -baseDirs String -> String -> String +baseDirs String -> String -> String </> String -pacIterName) +pacIterName) gitCheckout :: FilePath -> String -> PoseidonIO () gitCheckout :: String -> String -> PoseidonIO () -gitCheckout String -srcDir String -commit = do +gitCheckout String +srcDir String +commit = do String -> PoseidonIO () logInfo (String -> PoseidonIO ()) -> String -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -306,13 +306,13 @@ "Checking out " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -commit String -> String -> String +commit String -> String -> String forall a. [a] -> [a] -> [a] ++ String " in " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -srcDir +srcDir IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -323,13 +323,13 @@ "git -C " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -srcDir String -> String -> String +srcDir String -> String -> String forall a. [a] -> [a] -> [a] ++ String " checkout " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -commit String -> String -> String +commit String -> String -> String forall a. [a] -> [a] -> [a] ++ String " --quiet") @@ -341,9 +341,9 @@ copyDirectory :: FilePath -> FilePath -> PoseidonIO () copyDirectory :: String -> String -> PoseidonIO () -copyDirectory String -srcDir String -destDir = do +copyDirectory String +srcDir String +destDir = do String -> PoseidonIO () logInfo (String -> PoseidonIO ()) -> String -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -351,13 +351,13 @@ "Copying dir " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -srcDir String -> String -> String +srcDir String -> String -> String forall a. [a] -> [a] -> [a] ++ String " to " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -destDir +destDir IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -366,9 +366,9 @@ $ Bool -> String -> IO () createDirectoryIfMissing Bool True String -destDir - [String] -files <- IO [String] -> ReaderT Env IO [String] +destDir + [String] +files <- IO [String] -> ReaderT Env IO [String] forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO [String] -> ReaderT Env IO [String]) @@ -376,27 +376,27 @@ forall a b. (a -> b) -> a -> b $ String -> IO [String] listDirectory String -srcDir +srcDir [String] -> (String -> PoseidonIO ()) -> PoseidonIO () forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [String] -files ((String -> PoseidonIO ()) -> PoseidonIO ()) +files ((String -> PoseidonIO ()) -> PoseidonIO ()) -> (String -> PoseidonIO ()) -> PoseidonIO () forall a b. (a -> b) -> a -> b -$ \String -file -> do - let srcFile :: String -srcFile = String -srcDir String -> String -> String +$ \String +file -> do + let srcFile :: String +srcFile = String +srcDir String -> String -> String </> String -file - destFile :: String -destFile = String -destDir String -> String -> String +file + destFile :: String +destFile = String +destDir String -> String -> String </> String -file +file String -> PoseidonIO () logDebug (String -> PoseidonIO ()) -> String -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -404,13 +404,13 @@ "Copying: " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -srcFile String -> String -> String +srcFile String -> String -> String forall a. [a] -> [a] -> [a] ++ String " -> " String -> String -> String forall a. [a] -> [a] -> [a] ++ String -destFile +destFile IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -418,6 +418,6 @@ forall a b. (a -> b) -> a -> b $ String -> String -> IO () copyFile String -srcFile String -destFile +srcFile String +destFile \ No newline at end of file diff --git a/src/Poseidon.CLI.Validate.html b/src/Poseidon.CLI.Validate.html index 2a7d8ed5..72266462 100644 --- a/src/Poseidon.CLI.Validate.html +++ b/src/Poseidon.CLI.Validate.html @@ -62,16 +62,16 @@ runValidate :: ValidateOptions -> PoseidonIO () runValidate :: ValidateOptions -> PoseidonIO () runValidate (ValidateOptions - (ValPlanBaseDirs [[Char]] -baseDirs Bool -ignoreGeno Bool -fullGeno Bool -ignoreDup Bool -ignoreChecksums Bool -ignorePosVersion) - Bool -noExitCode Bool -onlyLatest) = do + (ValPlanBaseDirs [[Char]] +baseDirs Bool +ignoreGeno Bool +fullGeno Bool +ignoreDup Bool +ignoreChecksums Bool +ignorePosVersion) + Bool +noExitCode Bool +onlyLatest) = do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -82,54 +82,54 @@ forall a. [a] -> [[a]] -> [a] intercalate [Char] ", " [[Char]] -baseDirs - let pacReadOpts :: PackageReadOptions -pacReadOpts = PackageReadOptions +baseDirs + let pacReadOpts :: PackageReadOptions +pacReadOpts = PackageReadOptions defaultPackageReadOptions { _readOptIgnoreChecksums :: Bool _readOptIgnoreChecksums = Bool -ignoreChecksums +ignoreChecksums , _readOptGenoCheck :: Bool _readOptGenoCheck = Bool True , _readOptIgnoreGeno :: Bool _readOptIgnoreGeno = Bool -ignoreGeno +ignoreGeno , _readOptFullGeno :: Bool _readOptFullGeno = Bool -fullGeno +fullGeno , _readOptIgnorePosVersion :: Bool _readOptIgnorePosVersion = Bool -ignorePosVersion +ignorePosVersion , _readOptOnlyLatest :: Bool _readOptOnlyLatest = Bool -onlyLatest +onlyLatest } -- load all packages - ([PoseidonPackage] -allPackages, Bool -packagesSkipped) <- PackageReadOptions + ([PoseidonPackage] +allPackages, Bool +packagesSkipped) <- PackageReadOptions -> [[Char]] -> PoseidonIO ([PoseidonPackage], Bool) readPoseidonPackageCollectionWithSkipIndicator PackageReadOptions -pacReadOpts [[Char]] -baseDirs +pacReadOpts [[Char]] +baseDirs -- stop on duplicates Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -ignoreDup (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +ignoreDup (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do - ([IndividualInfo] -allInds, [Bool] + ([IndividualInfo] +allInds, [Bool] _) <- [PoseidonPackage] -> ReaderT Env IO ([IndividualInfo], [Bool]) forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> m ([IndividualInfo], [Bool]) getJointIndividualInfo [PoseidonPackage] -allPackages - let duplicateGroups :: [[IndividualInfo]] -duplicateGroups = ([IndividualInfo] -> Bool) +allPackages + let duplicateGroups :: [[IndividualInfo]] +duplicateGroups = ([IndividualInfo] -> Bool) -> [[IndividualInfo]] -> [[IndividualInfo]] forall a. (a -> Bool) -> [a] -> [a] filter ((Int -> Int -> Bool @@ -150,15 +150,15 @@ . (IndividualInfo -> IndividualInfo -> Bool) -> [IndividualInfo] -> [[IndividualInfo]] forall a. (a -> a -> Bool) -> [a] -> [[a]] -groupBy (\IndividualInfo -a IndividualInfo -b -> IndividualInfo -> [Char] +groupBy (\IndividualInfo +a IndividualInfo +b -> IndividualInfo -> [Char] indInfoName IndividualInfo -a [Char] -> [Char] -> Bool +a [Char] -> [Char] -> Bool forall a. Eq a => a -> a -> Bool == IndividualInfo -> [Char] indInfoName IndividualInfo -b) +b) ([IndividualInfo] -> [[IndividualInfo]]) -> ([IndividualInfo] -> [IndividualInfo]) -> [IndividualInfo] @@ -171,14 +171,14 @@ -> [IndividualInfo] -> [[IndividualInfo]] forall a b. (a -> b) -> a -> b $ [IndividualInfo] -allInds +allInds Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless ([[IndividualInfo]] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [[IndividualInfo]] -duplicateGroups) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +duplicateGroups) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do [Char] -> PoseidonIO () @@ -191,11 +191,11 @@ (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [[IndividualInfo]] -duplicateGroups (([IndividualInfo] -> PoseidonIO ()) -> PoseidonIO ()) +duplicateGroups (([IndividualInfo] -> PoseidonIO ()) -> PoseidonIO ()) -> ([IndividualInfo] -> PoseidonIO ()) -> PoseidonIO () forall a b. (a -> b) -> a -> b -$ \[IndividualInfo] -xs -> do +$ \[IndividualInfo] +xs -> do [Char] -> PoseidonIO () logError ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -210,18 +210,18 @@ $ [IndividualInfo] -> IndividualInfo forall a. HasCallStack => [a] -> a head [IndividualInfo] -xs) +xs) [IndividualInfo] -> (IndividualInfo -> PoseidonIO ()) -> PoseidonIO () forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [IndividualInfo] -xs ((IndividualInfo -> PoseidonIO ()) -> PoseidonIO ()) +xs ((IndividualInfo -> PoseidonIO ()) -> PoseidonIO ()) -> (IndividualInfo -> PoseidonIO ()) -> PoseidonIO () forall a b. (a -> b) -> a -> b -$ \IndividualInfo -x -> do +$ \IndividualInfo +x -> do [Char] -> PoseidonIO () logError ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -231,7 +231,7 @@ ++ IndividualInfo -> [Char] forall a. Show a => a -> [Char] show IndividualInfo -x +x PoseidonException -> PoseidonIO () forall e a. Exception e => e -> ReaderT Env IO a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a @@ -247,11 +247,11 @@ Bool -> Bool -> PoseidonIO () conclude (Bool -> Bool not Bool -packagesSkipped) Bool -noExitCode -runValidate (ValidateOptions (ValPlanPoseidonYaml [Char] -path) Bool -noExitCode Bool +packagesSkipped) Bool +noExitCode +runValidate (ValidateOptions (ValPlanPoseidonYaml [Char] +path) Bool +noExitCode Bool _) = do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -260,9 +260,9 @@ "Validating: " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -path - ByteString -bs <- IO ByteString -> ReaderT Env IO ByteString +path + ByteString +bs <- IO ByteString -> ReaderT Env IO ByteString forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO ByteString -> ReaderT Env IO ByteString) @@ -270,14 +270,14 @@ forall a b. (a -> b) -> a -> b $ [Char] -> IO ByteString B.readFile [Char] -path - PoseidonYamlStruct -yml <- case ByteString -> Either ParseException PoseidonYamlStruct +path + PoseidonYamlStruct +yml <- case ByteString -> Either ParseException PoseidonYamlStruct forall a. FromJSON a => ByteString -> Either ParseException a decodeEither' ByteString -bs of - Left ParseException -err -> PoseidonException -> ReaderT Env IO PoseidonYamlStruct +bs of + Left ParseException +err -> PoseidonException -> ReaderT Env IO PoseidonYamlStruct forall e a. Exception e => e -> ReaderT Env IO a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (PoseidonException -> ReaderT Env IO PoseidonYamlStruct) @@ -285,14 +285,14 @@ forall a b. (a -> b) -> a -> b $ [Char] -> ParseException -> PoseidonException PoseidonYamlParseException [Char] -path ParseException -err - Right PoseidonYamlStruct -pac -> PoseidonYamlStruct -> ReaderT Env IO PoseidonYamlStruct +path ParseException +err + Right PoseidonYamlStruct +pac -> PoseidonYamlStruct -> ReaderT Env IO PoseidonYamlStruct forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return (PoseidonYamlStruct -pac :: PoseidonYamlStruct) +pac :: PoseidonYamlStruct) [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -301,14 +301,14 @@ forall a. [a] -> [a] -> [a] ++ PoseidonYamlStruct -> [Char] _posYamlTitle PoseidonYamlStruct -yml +yml Bool -> Bool -> PoseidonIO () conclude Bool True Bool -noExitCode -runValidate (ValidateOptions (ValPlanGeno GenotypeDataSpec -geno) Bool -noExitCode Bool +noExitCode +runValidate (ValidateOptions (ValPlanGeno GenotypeDataSpec +geno) Bool +noExitCode Bool _) = do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -318,22 +318,22 @@ forall a. [a] -> [a] -> [a] ++ GenotypeDataSpec -> [Char] genoFile GenotypeDataSpec -geno - PoseidonPackage -pac <- GenotypeDataSpec -> PoseidonIO PoseidonPackage +geno + PoseidonPackage +pac <- GenotypeDataSpec -> PoseidonIO PoseidonPackage makePseudoPackageFromGenotypeData GenotypeDataSpec -geno +geno PoseidonPackage -> Bool -> PoseidonIO () validateGeno PoseidonPackage -pac Bool +pac Bool True Bool -> Bool -> PoseidonIO () conclude Bool True Bool -noExitCode -runValidate (ValidateOptions (ValPlanJanno [Char] -path) Bool -noExitCode Bool +noExitCode +runValidate (ValidateOptions (ValPlanJanno [Char] +path) Bool +noExitCode Bool _) = do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -342,11 +342,11 @@ "Validating: " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -path - (JannoRows [JannoRow] -entries) <- [Char] -> PoseidonIO JannoRows +path + (JannoRows [JannoRow] +entries) <- [Char] -> PoseidonIO JannoRows readJannoFile [Char] -path +path [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -359,17 +359,17 @@ forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [JannoRow] -entries) [Char] -> [Char] -> [Char] +entries) [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " entries are valid" Bool -> Bool -> PoseidonIO () conclude Bool True Bool -noExitCode -runValidate (ValidateOptions (ValPlanSSF [Char] -path) Bool -noExitCode Bool +noExitCode +runValidate (ValidateOptions (ValPlanSSF [Char] +path) Bool +noExitCode Bool _) = do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -378,11 +378,11 @@ "Validating: " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -path - (SeqSourceRows [SeqSourceRow] -entries) <- [Char] -> PoseidonIO SeqSourceRows +path + (SeqSourceRows [SeqSourceRow] +entries) <- [Char] -> PoseidonIO SeqSourceRows readSeqSourceFile [Char] -path +path [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -395,17 +395,17 @@ forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [SeqSourceRow] -entries) [Char] -> [Char] -> [Char] +entries) [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " entries are valid" Bool -> Bool -> PoseidonIO () conclude Bool True Bool -noExitCode -runValidate (ValidateOptions (ValPlanBib [Char] -path) Bool -noExitCode Bool +noExitCode +runValidate (ValidateOptions (ValPlanBib [Char] +path) Bool +noExitCode Bool _) = do [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () @@ -414,9 +414,9 @@ "Validating: " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -path - BibTeX -entries <- IO BibTeX -> ReaderT Env IO BibTeX +path + BibTeX +entries <- IO BibTeX -> ReaderT Env IO BibTeX forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO BibTeX -> ReaderT Env IO BibTeX) @@ -424,7 +424,7 @@ forall a b. (a -> b) -> a -> b $ [Char] -> IO BibTeX readBibTeXFile [Char] -path +path [Char] -> PoseidonIO () logInfo ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO () forall a b. (a -> b) -> a -> b @@ -437,27 +437,27 @@ forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length BibTeX -entries) [Char] -> [Char] -> [Char] +entries) [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " entries are valid" Bool -> Bool -> PoseidonIO () conclude Bool True Bool -noExitCode +noExitCode conclude :: Bool -> Bool -> PoseidonIO () conclude :: Bool -> Bool -> PoseidonIO () conclude Bool -True Bool -noExitCode = do +True Bool +noExitCode = do [Char] -> PoseidonIO () logInfo [Char] "Validation passed" Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -noExitCode (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +noExitCode (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a @@ -466,15 +466,15 @@ forall a. IO a exitSuccess conclude Bool -False Bool -noExitCode = do +False Bool +noExitCode = do [Char] -> PoseidonIO () logError [Char] "Validation failed" Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -noExitCode (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +noExitCode (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a diff --git a/src/Poseidon.Chronicle.html b/src/Poseidon.Chronicle.html index a6468c82..492c63e8 100644 --- a/src/Poseidon.Chronicle.html +++ b/src/Poseidon.Chronicle.html @@ -41,7 +41,7 @@ , PoseidonPackageChronicle -> Set PackageIteration snapYamlPackages :: S.Set PackageIteration } - deriving (Int -> PoseidonPackageChronicle -> ShowS + deriving (Int -> PoseidonPackageChronicle -> ShowS [PoseidonPackageChronicle] -> ShowS PoseidonPackageChronicle -> String (Int -> PoseidonPackageChronicle -> ShowS) @@ -56,7 +56,7 @@ show :: PoseidonPackageChronicle -> String $cshowList :: [PoseidonPackageChronicle] -> ShowS showList :: [PoseidonPackageChronicle] -> ShowS -Show, PoseidonPackageChronicle -> PoseidonPackageChronicle -> Bool +Show, PoseidonPackageChronicle -> PoseidonPackageChronicle -> Bool (PoseidonPackageChronicle -> PoseidonPackageChronicle -> Bool) -> (PoseidonPackageChronicle -> PoseidonPackageChronicle -> Bool) -> Eq PoseidonPackageChronicle @@ -67,8 +67,8 @@ /= :: PoseidonPackageChronicle -> PoseidonPackageChronicle -> Bool Eq) -instance FromJSON PoseidonPackageChronicle where - parseJSON :: Value -> Parser PoseidonPackageChronicle +instance FromJSON PoseidonPackageChronicle where + parseJSON :: Value -> Parser PoseidonPackageChronicle parseJSON = String -> (Object -> Parser PoseidonPackageChronicle) -> Value @@ -81,8 +81,8 @@ -> Value -> Parser PoseidonPackageChronicle forall a b. (a -> b) -> a -> b -$ \Object -v -> String +$ \Object +v -> String -> Maybe String -> Version -> Day @@ -104,7 +104,7 @@ -> PoseidonPackageChronicle) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v Object -> Key -> Parser String +v Object -> Key -> Parser String forall a. FromJSON a => Object -> Key -> Parser a .: Key "title" @@ -121,7 +121,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe String) +v Object -> Key -> Parser (Maybe String) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "description" @@ -133,7 +133,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser Version +v Object -> Key -> Parser Version forall a. FromJSON a => Object -> Key -> Parser a .: Key "chronicleVersion" @@ -143,7 +143,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser Day +v Object -> Key -> Parser Day forall a. FromJSON a => Object -> Key -> Parser a .: Key "lastModified" @@ -152,7 +152,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe (Set PackageIteration)) +v Object -> Key -> Parser (Maybe (Set PackageIteration)) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "packages" Parser (Maybe (Set PackageIteration)) @@ -162,41 +162,41 @@ forall a. Set a S.empty -instance ToJSON PoseidonPackageChronicle where - toJSON :: PoseidonPackageChronicle -> Value -toJSON PoseidonPackageChronicle -x = [Pair] -> Value +instance ToJSON PoseidonPackageChronicle where + toJSON :: PoseidonPackageChronicle -> Value +toJSON PoseidonPackageChronicle +x = [Pair] -> Value object ([Pair] -> Value) -> [Pair] -> Value forall a b. (a -> b) -> a -> b $ [ Key "title" Key -> String -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonPackageChronicle -> String snapYamlTitle PoseidonPackageChronicle -x, +x, Key "description" Key -> Maybe String -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonPackageChronicle -> Maybe String snapYamlDescription PoseidonPackageChronicle -x, +x, Key "chronicleVersion" Key -> Version -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonPackageChronicle -> Version snapYamlChronicleVersion PoseidonPackageChronicle -x, +x, Key "lastModified" Key -> Day -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonPackageChronicle -> Day snapYamlLastModified PoseidonPackageChronicle -x] [Pair] -> [Pair] -> [Pair] +x] [Pair] -> [Pair] -> [Pair] forall a. [a] -> [a] -> [a] ++ if Bool -> Bool @@ -207,13 +207,13 @@ forall (t :: * -> *) a. Foldable t => t a -> Bool null (PoseidonPackageChronicle -> Set PackageIteration snapYamlPackages PoseidonPackageChronicle -x) then [Key +x) then [Key "packages" Key -> Set PackageIteration -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonPackageChronicle -> Set PackageIteration snapYamlPackages PoseidonPackageChronicle -x] else [] +x] else [] -- | A data type to represent a package state data PackageIteration = PackageIteration @@ -226,7 +226,7 @@ , PackageIteration -> String pacStatePath :: FilePath -- ^ the file path where the POSEIDON.yml file is stored } - deriving (Int -> PackageIteration -> ShowS + deriving (Int -> PackageIteration -> ShowS [PackageIteration] -> ShowS PackageIteration -> String (Int -> PackageIteration -> ShowS) @@ -243,47 +243,47 @@ showList :: [PackageIteration] -> ShowS Show) -instance Eq PackageIteration where - (PackageIteration String -t1 Version -v1 String +instance Eq PackageIteration where + (PackageIteration String +t1 Version +v1 String _ String -_) == :: PackageIteration -> PackageIteration -> Bool -== (PackageIteration String -t2 Version -v2 String +_) == :: PackageIteration -> PackageIteration -> Bool +== (PackageIteration String +t2 Version +v2 String _ String _) = (String -t1 String -> String -> Bool +t1 String -> String -> Bool forall a. Eq a => a -> a -> Bool == String -t2) Bool -> Bool -> Bool +t2) Bool -> Bool -> Bool && (Version -v1 Version -> Version -> Bool +v1 Version -> Version -> Bool forall a. Eq a => a -> a -> Bool == Version -v2) +v2) -instance Ord PackageIteration where - (PackageIteration String -t1 Version -v1 String +instance Ord PackageIteration where + (PackageIteration String +t1 Version +v1 String _ String -_) compare :: PackageIteration -> PackageIteration -> Ordering -`compare` (PackageIteration String -t2 Version -v2 String +_) compare :: PackageIteration -> PackageIteration -> Ordering +`compare` (PackageIteration String +t2 Version +v2 String _ String _) = (String -t1,Version -v1) (String, Version) -> (String, Version) -> Ordering +t1,Version +v1) (String, Version) -> (String, Version) -> Ordering forall a. Ord a => a -> a -> Ordering `compare` (String -t2,Version -v2) +t2,Version +v2) -instance FromJSON PackageIteration where - parseJSON :: Value -> Parser PackageIteration +instance FromJSON PackageIteration where + parseJSON :: Value -> Parser PackageIteration parseJSON = String -> (Object -> Parser PackageIteration) -> Value @@ -296,15 +296,15 @@ -> Value -> Parser PackageIteration forall a b. (a -> b) -> a -> b -$ \Object -v -> String -> Version -> String -> String -> PackageIteration +$ \Object +v -> String -> Version -> String -> String -> PackageIteration PackageIteration (String -> Version -> String -> String -> PackageIteration) -> Parser String -> Parser (Version -> String -> String -> PackageIteration) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v Object -> Key -> Parser String +v Object -> Key -> Parser String forall a. FromJSON a => Object -> Key -> Parser a .: Key "title" @@ -313,7 +313,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser Version +v Object -> Key -> Parser Version forall a. FromJSON a => Object -> Key -> Parser a .: Key "version" @@ -322,7 +322,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser String +v Object -> Key -> Parser String forall a. FromJSON a => Object -> Key -> Parser a .: Key "commit" @@ -331,126 +331,126 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser String +v Object -> Key -> Parser String forall a. FromJSON a => Object -> Key -> Parser a .: Key "path" -instance ToJSON PackageIteration where - toJSON :: PackageIteration -> Value -toJSON PackageIteration -x = [Pair] -> Value +instance ToJSON PackageIteration where + toJSON :: PackageIteration -> Value +toJSON PackageIteration +x = [Pair] -> Value object [ Key "title" Key -> String -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PackageIteration -> String pacStateTitle PackageIteration -x +x , Key "version" Key -> Version -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PackageIteration -> Version pacStateVersion PackageIteration -x +x , Key "commit" Key -> String -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PackageIteration -> String pacStateCommit PackageIteration -x +x , Key "path" Key -> String -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PackageIteration -> String pacStatePath PackageIteration -x +x ] instance HasNameAndVersion PackageIteration where - getPacName :: PackageIteration -> String -getPacName (PackageIteration String -t Version + getPacName :: PackageIteration -> String +getPacName (PackageIteration String +t Version _ String _ String _) = String -t - getPacVersion :: PackageIteration -> Maybe Version -getPacVersion (PackageIteration String -_ Version -v String +t + getPacVersion :: PackageIteration -> Maybe Version +getPacVersion (PackageIteration String +_ Version +v String _ String _) = Version -> Maybe Version forall a. a -> Maybe a Just Version -v +v updateChronicle :: PoseidonPackageChronicle -> PoseidonPackageChronicle -> PoseidonPackageChronicle updateChronicle :: PoseidonPackageChronicle -> PoseidonPackageChronicle -> PoseidonPackageChronicle -updateChronicle PoseidonPackageChronicle -oldChronicle PoseidonPackageChronicle -newChronicle = - let oldPackageSet :: Set PackageIteration -oldPackageSet = PoseidonPackageChronicle -> Set PackageIteration +updateChronicle PoseidonPackageChronicle +oldChronicle PoseidonPackageChronicle +newChronicle = + let oldPackageSet :: Set PackageIteration +oldPackageSet = PoseidonPackageChronicle -> Set PackageIteration snapYamlPackages PoseidonPackageChronicle -oldChronicle - newPackageSet :: Set PackageIteration -newPackageSet = PoseidonPackageChronicle -> Set PackageIteration +oldChronicle + newPackageSet :: Set PackageIteration +newPackageSet = PoseidonPackageChronicle -> Set PackageIteration snapYamlPackages PoseidonPackageChronicle -newChronicle - mergedPacSet :: Set PackageIteration -mergedPacSet = Set PackageIteration +newChronicle + mergedPacSet :: Set PackageIteration +mergedPacSet = Set PackageIteration -> Set PackageIteration -> Set PackageIteration forall a. Ord a => Set a -> Set a -> Set a S.union Set PackageIteration -oldPackageSet Set PackageIteration -newPackageSet - oldChronicleVersion :: Version -oldChronicleVersion = PoseidonPackageChronicle -> Version +oldPackageSet Set PackageIteration +newPackageSet + oldChronicleVersion :: Version +oldChronicleVersion = PoseidonPackageChronicle -> Version snapYamlChronicleVersion PoseidonPackageChronicle -oldChronicle +oldChronicle in if Set PackageIteration -mergedPacSet Set PackageIteration -> Set PackageIteration -> Bool +mergedPacSet Set PackageIteration -> Set PackageIteration -> Bool forall a. Eq a => a -> a -> Bool == Set PackageIteration -oldPackageSet +oldPackageSet then PoseidonPackageChronicle -oldChronicle +oldChronicle else PoseidonPackageChronicle { snapYamlTitle :: String snapYamlTitle = PoseidonPackageChronicle -> String snapYamlTitle PoseidonPackageChronicle -oldChronicle +oldChronicle , snapYamlDescription :: Maybe String snapYamlDescription = PoseidonPackageChronicle -> Maybe String snapYamlDescription PoseidonPackageChronicle -oldChronicle +oldChronicle , snapYamlChronicleVersion :: Version snapYamlChronicleVersion = VersionComponent -> Version -> Version updateThreeComponentVersion VersionComponent Minor Version -oldChronicleVersion +oldChronicleVersion , snapYamlLastModified :: Day snapYamlLastModified = PoseidonPackageChronicle -> Day snapYamlLastModified PoseidonPackageChronicle -newChronicle +newChronicle , snapYamlPackages :: Set PackageIteration snapYamlPackages = Set PackageIteration -mergedPacSet +mergedPacSet } readChronicle :: FilePath -> PoseidonIO PoseidonPackageChronicle readChronicle :: String -> PoseidonIO PoseidonPackageChronicle -readChronicle String -p = do - ByteString -bs <- IO ByteString -> ReaderT Env IO ByteString +readChronicle String +p = do + ByteString +bs <- IO ByteString -> ReaderT Env IO ByteString forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO ByteString -> ReaderT Env IO ByteString) @@ -458,13 +458,13 @@ forall a b. (a -> b) -> a -> b $ String -> IO ByteString B.readFile String -p +p case ByteString -> Either ParseException PoseidonPackageChronicle forall a. FromJSON a => ByteString -> Either ParseException a decodeEither' ByteString -bs of - Left ParseException -err -> PoseidonException -> PoseidonIO PoseidonPackageChronicle +bs of + Left ParseException +err -> PoseidonException -> PoseidonIO PoseidonPackageChronicle forall e a. Exception e => e -> ReaderT Env IO a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (PoseidonException -> PoseidonIO PoseidonPackageChronicle) @@ -472,20 +472,20 @@ forall a b. (a -> b) -> a -> b $ String -> ParseException -> PoseidonException PoseidonYamlParseException String -p ParseException -err - Right PoseidonPackageChronicle -snap -> PoseidonPackageChronicle -> PoseidonIO PoseidonPackageChronicle +p ParseException +err + Right PoseidonPackageChronicle +snap -> PoseidonPackageChronicle -> PoseidonIO PoseidonPackageChronicle forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackageChronicle -snap +snap writeChronicle :: FilePath -> PoseidonPackageChronicle -> PoseidonIO () writeChronicle :: String -> PoseidonPackageChronicle -> PoseidonIO () -writeChronicle String -p PoseidonPackageChronicle -snapShot = do +writeChronicle String +p PoseidonPackageChronicle +snapShot = do IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -497,7 +497,7 @@ forall a b. (a -> b) -> a -> b $ ShowS takeDirectory String -p +p IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -505,14 +505,14 @@ forall a b. (a -> b) -> a -> b $ String -> ByteString -> IO () B.writeFile String -p (Config -> PoseidonPackageChronicle -> ByteString +p (Config -> PoseidonPackageChronicle -> ByteString forall a. ToJSON a => Config -> a -> ByteString encodePretty Config -opts PoseidonPackageChronicle -snapShot) +opts PoseidonPackageChronicle +snapShot) where - opts :: Config -opts = Bool -> Config -> Config + opts :: Config +opts = Bool -> Config -> Config setConfDropNull Bool True (Config -> Config) -> Config -> Config forall a b. (a -> b) -> a -> b @@ -523,25 +523,25 @@ -> (Text -> Int) -> Text -> Text -> Ordering forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c `on` Text -> Int -fieldIndex) Config +fieldIndex) Config defConfig - fieldIndex :: Text -> Int -fieldIndex Text -s = Int -> Maybe Int -> Int + fieldIndex :: Text -> Int +fieldIndex Text +s = Int -> Maybe Int -> Int forall a. a -> Maybe a -> a fromMaybe ([Text] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [Text] -fields) (Maybe Int -> Int) -> Maybe Int -> Int +fields) (Maybe Int -> Int) -> Maybe Int -> Int forall a b. (a -> b) -> a -> b $ Text -s Text -> [Text] -> Maybe Int +s Text -> [Text] -> Maybe Int forall a. Eq a => a -> [a] -> Maybe Int `elemIndex` [Text] -fields - fields :: [Text] -fields = [ +fields + fields :: [Text] +fields = [ Text "title", Text @@ -564,16 +564,16 @@ makeChronicle :: FilePath -> [PoseidonPackage] -> PoseidonIO PoseidonPackageChronicle makeChronicle :: String -> [PoseidonPackage] -> PoseidonIO PoseidonPackageChronicle -makeChronicle String -pathToChronicleFile [PoseidonPackage] -pacs = do - Set PackageIteration -pacChronicles <- String -> [PoseidonPackage] -> PoseidonIO (Set PackageIteration) +makeChronicle String +pathToChronicleFile [PoseidonPackage] +pacs = do + Set PackageIteration +pacChronicles <- String -> [PoseidonPackage] -> PoseidonIO (Set PackageIteration) chroniclePackages String -pathToChronicleFile [PoseidonPackage] -pacs - (UTCTime Day -today DiffTime +pathToChronicleFile [PoseidonPackage] +pacs + (UTCTime Day +today DiffTime _) <- IO UTCTime -> ReaderT Env IO UTCTime forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -602,27 +602,27 @@ 0] , snapYamlLastModified :: Day snapYamlLastModified = Day -today +today , snapYamlPackages :: Set PackageIteration snapYamlPackages = Set PackageIteration -pacChronicles +pacChronicles } chroniclePackages :: FilePath -> [PoseidonPackage] -> PoseidonIO (S.Set PackageIteration) chroniclePackages :: String -> [PoseidonPackage] -> PoseidonIO (Set PackageIteration) -chroniclePackages String -pathToChronicleFile [PoseidonPackage] -pacs = do - [PackageIteration] -pacStateList <- (PoseidonPackage -> ReaderT Env IO PackageIteration) +chroniclePackages String +pathToChronicleFile [PoseidonPackage] +pacs = do + [PackageIteration] +pacStateList <- (PoseidonPackage -> ReaderT Env IO PackageIteration) -> [PoseidonPackage] -> ReaderT Env IO [PackageIteration] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b] mapM PoseidonPackage -> ReaderT Env IO PackageIteration -snapOne [PoseidonPackage] -pacs +snapOne [PoseidonPackage] +pacs Set PackageIteration -> PoseidonIO (Set PackageIteration) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -632,23 +632,23 @@ $ [PackageIteration] -> Set PackageIteration forall a. Ord a => [a] -> Set a S.fromList [PackageIteration] -pacStateList +pacStateList where - snapOne :: PoseidonPackage -> PoseidonIO PackageIteration - snapOne :: PoseidonPackage -> ReaderT Env IO PackageIteration -snapOne PoseidonPackage -pac = do - Version -version <- PoseidonPackage -> PoseidonIO Version + snapOne :: PoseidonPackage -> PoseidonIO PackageIteration + snapOne :: PoseidonPackage -> ReaderT Env IO PackageIteration +snapOne PoseidonPackage +pac = do + Version +version <- PoseidonPackage -> PoseidonIO Version getPackageVersion PoseidonPackage -pac - String -commit <- String -> PoseidonIO String +pac + String +commit <- String -> PoseidonIO String getGitCommitHash (String -> PoseidonIO String) -> String -> PoseidonIO String forall a b. (a -> b) -> a -> b $ PoseidonPackage -> String posPacBaseDir PoseidonPackage -pac +pac PackageIteration -> ReaderT Env IO PackageIteration forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -660,47 +660,47 @@ pacStateTitle = PoseidonPackage -> String forall a. HasNameAndVersion a => a -> String getPacName PoseidonPackage -pac, +pac, pacStateVersion :: Version pacStateVersion = Version -version, +version, pacStateCommit :: String pacStateCommit = String -commit, +commit, pacStatePath :: String pacStatePath = String -> ShowS makeRelative (ShowS takeDirectory String -pathToChronicleFile) ShowS -> ShowS +pathToChronicleFile) ShowS -> ShowS forall a b. (a -> b) -> a -> b $ PoseidonPackage -> String posPacBaseDir PoseidonPackage -pac +pac } getPackageVersion :: PoseidonPackage -> PoseidonIO Version getPackageVersion :: PoseidonPackage -> PoseidonIO Version -getPackageVersion PoseidonPackage -pac = +getPackageVersion PoseidonPackage +pac = case PoseidonPackage -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PoseidonPackage -pac of - Just Version -v -> Version -> PoseidonIO Version +pac of + Just Version +v -> Version -> PoseidonIO Version forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return Version -v +v Maybe Version Nothing -> do - TestMode -testMode <- (Env -> TestMode) -> ReaderT Env IO TestMode + TestMode +testMode <- (Env -> TestMode) -> ReaderT Env IO TestMode forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a asks Env -> TestMode _envTestMode case TestMode -testMode of +testMode of TestMode Testing -> Version -> PoseidonIO Version forall a. a -> ReaderT Env IO a @@ -732,22 +732,22 @@ show (PoseidonPackage -> String forall a. HasNameAndVersion a => a -> String getPacName PoseidonPackage -pac) String -> ShowS +pac) String -> ShowS forall a. [a] -> [a] -> [a] ++ String " has no version." getGitCommitHash :: FilePath -> PoseidonIO String getGitCommitHash :: String -> PoseidonIO String -getGitCommitHash String -p = do - TestMode -testMode <- (Env -> TestMode) -> ReaderT Env IO TestMode +getGitCommitHash String +p = do + TestMode +testMode <- (Env -> TestMode) -> ReaderT Env IO TestMode forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a asks Env -> TestMode _envTestMode case TestMode -testMode of +testMode of TestMode Testing -> String -> PoseidonIO String forall a. a -> ReaderT Env IO a @@ -756,8 +756,8 @@ "TestMode Git hash" TestMode Production -> do - Either GitHashException GitInfo -eitherGit <- IO (Either GitHashException GitInfo) + Either GitHashException GitInfo +eitherGit <- IO (Either GitHashException GitInfo) -> ReaderT Env IO (Either GitHashException GitInfo) forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -768,30 +768,30 @@ forall a b. (a -> b) -> a -> b $ String -> IO (Either GitHashException GitInfo) getGitInfo String -p +p case Either GitHashException GitInfo -eitherGit of +eitherGit of Left GitHashException _ -> do - String -pAbsolute <- IO String -> PoseidonIO String + String +pAbsolute <- IO String -> PoseidonIO String forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO String -> PoseidonIO String) -> IO String -> PoseidonIO String forall a b. (a -> b) -> a -> b $ String -> IO String makeAbsolute String -p - let oneLevelUp :: String -oneLevelUp = ShowS +p + let oneLevelUp :: String +oneLevelUp = ShowS takeDirectory String -pAbsolute +pAbsolute if String -oneLevelUp String -> String -> Bool +oneLevelUp String -> String -> Bool forall a. Eq a => a -> a -> Bool == ShowS takeDirectory String -oneLevelUp +oneLevelUp then do String -> PoseidonIO String forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -799,9 +799,9 @@ "No Git repository found" else String -> PoseidonIO String getGitCommitHash String -oneLevelUp - Right GitInfo -info -> do +oneLevelUp + Right GitInfo +info -> do String -> PoseidonIO String forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -809,5 +809,5 @@ forall a b. (a -> b) -> a -> b $ GitInfo -> String giHash GitInfo -info +info \ No newline at end of file diff --git a/src/Poseidon.ColumnTypes.html b/src/Poseidon.ColumnTypes.html new file mode 100644 index 00000000..9b964584 --- /dev/null +++ b/src/Poseidon.ColumnTypes.html @@ -0,0 +1,4367 @@ +
{-# LANGUAGE DeriveGeneric     #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TemplateHaskell   #-}
+
+module Poseidon.ColumnTypes where
+
+import           Poseidon.ColumnTypesUtils
+
+import           Country                    (Country, alphaTwoUpper,
+                                             decodeAlphaTwo)
+import qualified Data.Csv                   as Csv
+import qualified Data.Text                  as T
+import qualified Data.Text.Read             as T
+import           GHC.Generics               (Generic)
+import           Network.URI                (isURIReference)
+import           SequenceFormats.Eigenstrat (Sex (..))
+import qualified Text.Regex.TDFA            as Reg
+
+-- | A datatype for the Genetic_Sex .janno column
+newtype GeneticSex = GeneticSex { GeneticSex -> Sex
+sfSex :: Sex } deriving (GeneticSex -> GeneticSex -> Bool
+(GeneticSex -> GeneticSex -> Bool)
+-> (GeneticSex -> GeneticSex -> Bool) -> Eq GeneticSex
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: GeneticSex -> GeneticSex -> Bool
+== :: GeneticSex -> GeneticSex -> Bool
+$c/= :: GeneticSex -> GeneticSex -> Bool
+/= :: GeneticSex -> GeneticSex -> Bool
+Eq)
+
+instance Makeable GeneticSex where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m GeneticSex
+make Text
+x
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"F"  = GeneticSex -> m GeneticSex
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (Sex -> GeneticSex
+GeneticSex Sex
+Female)
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"M"  = GeneticSex -> m GeneticSex
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (Sex -> GeneticSex
+GeneticSex Sex
+Male)
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"U"  = GeneticSex -> m GeneticSex
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (Sex -> GeneticSex
+GeneticSex Sex
+Unknown)
+        | Bool
+otherwise = [Char] -> m GeneticSex
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m GeneticSex) -> [Char] -> m GeneticSex
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Genetic_Sex is set to " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+". " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++
+                             [Char]
+"That is not in the allowed set [F, M, U]."
+instance Show GeneticSex where
+    show :: GeneticSex -> [Char]
+show (GeneticSex Sex
+Female)  = [Char]
+"F"
+    show (GeneticSex Sex
+Male)    = [Char]
+"M"
+    show (GeneticSex Sex
+Unknown) = [Char]
+"U"
+instance Ord GeneticSex where
+    compare :: GeneticSex -> GeneticSex -> Ordering
+compare (GeneticSex Sex
+Female) (GeneticSex Sex
+Male)    = Ordering
+GT
+    compare (GeneticSex Sex
+Male) (GeneticSex Sex
+Female)    = Ordering
+LT
+    compare (GeneticSex Sex
+Male) (GeneticSex Sex
+Unknown)   = Ordering
+GT
+    compare (GeneticSex Sex
+Unknown) (GeneticSex Sex
+Male)   = Ordering
+LT
+    compare (GeneticSex Sex
+Female) (GeneticSex Sex
+Unknown) = Ordering
+GT
+    compare (GeneticSex Sex
+Unknown) (GeneticSex Sex
+Female) = Ordering
+LT
+    compare GeneticSex
+_ GeneticSex
+_                                      = Ordering
+EQ
+instance Csv.ToField GeneticSex where   toField :: GeneticSex -> Field
+toField GeneticSex
+x  = [Char] -> Field
+forall a. ToField a => a -> Field
+Csv.toField ([Char] -> Field) -> [Char] -> Field
+forall a b. (a -> b) -> a -> b
+$ GeneticSex -> [Char]
+forall a. Show a => a -> [Char]
+show GeneticSex
+x
+instance Csv.FromField GeneticSex where parseField :: Field -> Parser GeneticSex
+parseField = [Char] -> Field -> Parser GeneticSex
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Genetic_Sex"
+
+-- | A datatype for the Group_Name .janno column
+newtype GroupName = GroupName T.Text deriving (GroupName -> GroupName -> Bool
+(GroupName -> GroupName -> Bool)
+-> (GroupName -> GroupName -> Bool) -> Eq GroupName
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: GroupName -> GroupName -> Bool
+== :: GroupName -> GroupName -> Bool
+$c/= :: GroupName -> GroupName -> Bool
+/= :: GroupName -> GroupName -> Bool
+Eq, Eq GroupName
+Eq GroupName
+-> (GroupName -> GroupName -> Ordering)
+-> (GroupName -> GroupName -> Bool)
+-> (GroupName -> GroupName -> Bool)
+-> (GroupName -> GroupName -> Bool)
+-> (GroupName -> GroupName -> Bool)
+-> (GroupName -> GroupName -> GroupName)
+-> (GroupName -> GroupName -> GroupName)
+-> Ord GroupName
+GroupName -> GroupName -> Bool
+GroupName -> GroupName -> Ordering
+GroupName -> GroupName -> GroupName
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: GroupName -> GroupName -> Ordering
+compare :: GroupName -> GroupName -> Ordering
+$c< :: GroupName -> GroupName -> Bool
+< :: GroupName -> GroupName -> Bool
+$c<= :: GroupName -> GroupName -> Bool
+<= :: GroupName -> GroupName -> Bool
+$c> :: GroupName -> GroupName -> Bool
+> :: GroupName -> GroupName -> Bool
+$c>= :: GroupName -> GroupName -> Bool
+>= :: GroupName -> GroupName -> Bool
+$cmax :: GroupName -> GroupName -> GroupName
+max :: GroupName -> GroupName -> GroupName
+$cmin :: GroupName -> GroupName -> GroupName
+min :: GroupName -> GroupName -> GroupName
+Ord)
+$(makeInstances ''GroupName "Group_Name")
+
+-- | A datatype for the Alternative_IDs .janno column
+newtype JannoAlternativeID = JannoAlternativeID T.Text deriving (JannoAlternativeID -> JannoAlternativeID -> Bool
+(JannoAlternativeID -> JannoAlternativeID -> Bool)
+-> (JannoAlternativeID -> JannoAlternativeID -> Bool)
+-> Eq JannoAlternativeID
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoAlternativeID -> JannoAlternativeID -> Bool
+== :: JannoAlternativeID -> JannoAlternativeID -> Bool
+$c/= :: JannoAlternativeID -> JannoAlternativeID -> Bool
+/= :: JannoAlternativeID -> JannoAlternativeID -> Bool
+Eq)
+$(makeInstances ''JannoAlternativeID "Alternative_IDs")
+
+-- | A datatype for the Relation_To .janno column
+newtype JannoRelationTo = JannoRelationTo T.Text deriving (JannoRelationTo -> JannoRelationTo -> Bool
+(JannoRelationTo -> JannoRelationTo -> Bool)
+-> (JannoRelationTo -> JannoRelationTo -> Bool)
+-> Eq JannoRelationTo
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoRelationTo -> JannoRelationTo -> Bool
+== :: JannoRelationTo -> JannoRelationTo -> Bool
+$c/= :: JannoRelationTo -> JannoRelationTo -> Bool
+/= :: JannoRelationTo -> JannoRelationTo -> Bool
+Eq)
+$(makeInstances ''JannoRelationTo "Relation_To")
+
+-- | A datatype for the Relation_Degree .janno column
+data JannoRelationDegree =
+      Identical
+    | First
+    | Second
+    | ThirdToFifth
+    | SixthToTenth
+    | Unrelated
+    | OtherDegree
+    deriving (JannoRelationDegree -> JannoRelationDegree -> Bool
+(JannoRelationDegree -> JannoRelationDegree -> Bool)
+-> (JannoRelationDegree -> JannoRelationDegree -> Bool)
+-> Eq JannoRelationDegree
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoRelationDegree -> JannoRelationDegree -> Bool
+== :: JannoRelationDegree -> JannoRelationDegree -> Bool
+$c/= :: JannoRelationDegree -> JannoRelationDegree -> Bool
+/= :: JannoRelationDegree -> JannoRelationDegree -> Bool
+Eq, Eq JannoRelationDegree
+Eq JannoRelationDegree
+-> (JannoRelationDegree -> JannoRelationDegree -> Ordering)
+-> (JannoRelationDegree -> JannoRelationDegree -> Bool)
+-> (JannoRelationDegree -> JannoRelationDegree -> Bool)
+-> (JannoRelationDegree -> JannoRelationDegree -> Bool)
+-> (JannoRelationDegree -> JannoRelationDegree -> Bool)
+-> (JannoRelationDegree
+    -> JannoRelationDegree -> JannoRelationDegree)
+-> (JannoRelationDegree
+    -> JannoRelationDegree -> JannoRelationDegree)
+-> Ord JannoRelationDegree
+JannoRelationDegree -> JannoRelationDegree -> Bool
+JannoRelationDegree -> JannoRelationDegree -> Ordering
+JannoRelationDegree -> JannoRelationDegree -> JannoRelationDegree
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoRelationDegree -> JannoRelationDegree -> Ordering
+compare :: JannoRelationDegree -> JannoRelationDegree -> Ordering
+$c< :: JannoRelationDegree -> JannoRelationDegree -> Bool
+< :: JannoRelationDegree -> JannoRelationDegree -> Bool
+$c<= :: JannoRelationDegree -> JannoRelationDegree -> Bool
+<= :: JannoRelationDegree -> JannoRelationDegree -> Bool
+$c> :: JannoRelationDegree -> JannoRelationDegree -> Bool
+> :: JannoRelationDegree -> JannoRelationDegree -> Bool
+$c>= :: JannoRelationDegree -> JannoRelationDegree -> Bool
+>= :: JannoRelationDegree -> JannoRelationDegree -> Bool
+$cmax :: JannoRelationDegree -> JannoRelationDegree -> JannoRelationDegree
+max :: JannoRelationDegree -> JannoRelationDegree -> JannoRelationDegree
+$cmin :: JannoRelationDegree -> JannoRelationDegree -> JannoRelationDegree
+min :: JannoRelationDegree -> JannoRelationDegree -> JannoRelationDegree
+Ord, (forall x. JannoRelationDegree -> Rep JannoRelationDegree x)
+-> (forall x. Rep JannoRelationDegree x -> JannoRelationDegree)
+-> Generic JannoRelationDegree
+forall x. Rep JannoRelationDegree x -> JannoRelationDegree
+forall x. JannoRelationDegree -> Rep JannoRelationDegree x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoRelationDegree -> Rep JannoRelationDegree x
+from :: forall x. JannoRelationDegree -> Rep JannoRelationDegree x
+$cto :: forall x. Rep JannoRelationDegree x -> JannoRelationDegree
+to :: forall x. Rep JannoRelationDegree x -> JannoRelationDegree
+Generic, Int -> JannoRelationDegree
+JannoRelationDegree -> Int
+JannoRelationDegree -> [JannoRelationDegree]
+JannoRelationDegree -> JannoRelationDegree
+JannoRelationDegree -> JannoRelationDegree -> [JannoRelationDegree]
+JannoRelationDegree
+-> JannoRelationDegree
+-> JannoRelationDegree
+-> [JannoRelationDegree]
+(JannoRelationDegree -> JannoRelationDegree)
+-> (JannoRelationDegree -> JannoRelationDegree)
+-> (Int -> JannoRelationDegree)
+-> (JannoRelationDegree -> Int)
+-> (JannoRelationDegree -> [JannoRelationDegree])
+-> (JannoRelationDegree
+    -> JannoRelationDegree -> [JannoRelationDegree])
+-> (JannoRelationDegree
+    -> JannoRelationDegree -> [JannoRelationDegree])
+-> (JannoRelationDegree
+    -> JannoRelationDegree
+    -> JannoRelationDegree
+    -> [JannoRelationDegree])
+-> Enum JannoRelationDegree
+forall a.
+(a -> a)
+-> (a -> a)
+-> (Int -> a)
+-> (a -> Int)
+-> (a -> [a])
+-> (a -> a -> [a])
+-> (a -> a -> [a])
+-> (a -> a -> a -> [a])
+-> Enum a
+$csucc :: JannoRelationDegree -> JannoRelationDegree
+succ :: JannoRelationDegree -> JannoRelationDegree
+$cpred :: JannoRelationDegree -> JannoRelationDegree
+pred :: JannoRelationDegree -> JannoRelationDegree
+$ctoEnum :: Int -> JannoRelationDegree
+toEnum :: Int -> JannoRelationDegree
+$cfromEnum :: JannoRelationDegree -> Int
+fromEnum :: JannoRelationDegree -> Int
+$cenumFrom :: JannoRelationDegree -> [JannoRelationDegree]
+enumFrom :: JannoRelationDegree -> [JannoRelationDegree]
+$cenumFromThen :: JannoRelationDegree -> JannoRelationDegree -> [JannoRelationDegree]
+enumFromThen :: JannoRelationDegree -> JannoRelationDegree -> [JannoRelationDegree]
+$cenumFromTo :: JannoRelationDegree -> JannoRelationDegree -> [JannoRelationDegree]
+enumFromTo :: JannoRelationDegree -> JannoRelationDegree -> [JannoRelationDegree]
+$cenumFromThenTo :: JannoRelationDegree
+-> JannoRelationDegree
+-> JannoRelationDegree
+-> [JannoRelationDegree]
+enumFromThenTo :: JannoRelationDegree
+-> JannoRelationDegree
+-> JannoRelationDegree
+-> [JannoRelationDegree]
+Enum, JannoRelationDegree
+JannoRelationDegree
+-> JannoRelationDegree -> Bounded JannoRelationDegree
+forall a. a -> a -> Bounded a
+$cminBound :: JannoRelationDegree
+minBound :: JannoRelationDegree
+$cmaxBound :: JannoRelationDegree
+maxBound :: JannoRelationDegree
+Bounded)
+
+instance Makeable JannoRelationDegree where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoRelationDegree
+make Text
+x
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"identical"    = JannoRelationDegree -> m JannoRelationDegree
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoRelationDegree
+Identical
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"first"        = JannoRelationDegree -> m JannoRelationDegree
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoRelationDegree
+First
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"second"       = JannoRelationDegree -> m JannoRelationDegree
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoRelationDegree
+Second
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"thirdToFifth" = JannoRelationDegree -> m JannoRelationDegree
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoRelationDegree
+ThirdToFifth
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"sixthToTenth" = JannoRelationDegree -> m JannoRelationDegree
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoRelationDegree
+SixthToTenth
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"unrelated"    = JannoRelationDegree -> m JannoRelationDegree
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoRelationDegree
+Unrelated -- this should be omitted in the documentation
+                                               -- relations of type "unrelated" don't have to be
+                                               -- listed explicitly
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"other"        = JannoRelationDegree -> m JannoRelationDegree
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoRelationDegree
+OtherDegree
+        | Bool
+otherwise           = [Char] -> m JannoRelationDegree
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoRelationDegree)
+-> [Char] -> m JannoRelationDegree
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Relation_Degree is set to " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+". " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++
+                                       [Char]
+"That is not in the allowed set [identical, first, second, thirdToFifth, sixthToTenth, other]."
+instance Show JannoRelationDegree where
+    show :: JannoRelationDegree -> [Char]
+show JannoRelationDegree
+Identical    = [Char]
+"identical"
+    show JannoRelationDegree
+First        = [Char]
+"first"
+    show JannoRelationDegree
+Second       = [Char]
+"second"
+    show JannoRelationDegree
+ThirdToFifth = [Char]
+"thirdToFifth"
+    show JannoRelationDegree
+SixthToTenth = [Char]
+"sixthToTenth"
+    show JannoRelationDegree
+Unrelated    = [Char]
+"unrelated"
+    show JannoRelationDegree
+OtherDegree  = [Char]
+"other"
+instance Csv.ToField JannoRelationDegree where   toField :: JannoRelationDegree -> Field
+toField JannoRelationDegree
+x = [Char] -> Field
+forall a. ToField a => a -> Field
+Csv.toField ([Char] -> Field) -> [Char] -> Field
+forall a b. (a -> b) -> a -> b
+$ JannoRelationDegree -> [Char]
+forall a. Show a => a -> [Char]
+show JannoRelationDegree
+x
+instance Csv.FromField JannoRelationDegree where parseField :: Field -> Parser JannoRelationDegree
+parseField = [Char] -> Field -> Parser JannoRelationDegree
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Relation_Degree"
+
+-- | A datatype for the Relation_Type .janno column
+newtype JannoRelationType = JannoRelationType T.Text deriving (JannoRelationType -> JannoRelationType -> Bool
+(JannoRelationType -> JannoRelationType -> Bool)
+-> (JannoRelationType -> JannoRelationType -> Bool)
+-> Eq JannoRelationType
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoRelationType -> JannoRelationType -> Bool
+== :: JannoRelationType -> JannoRelationType -> Bool
+$c/= :: JannoRelationType -> JannoRelationType -> Bool
+/= :: JannoRelationType -> JannoRelationType -> Bool
+Eq)
+$(makeInstances ''JannoRelationType "Relation_Type")
+
+-- | A datatype for the Relation_Note .janno column
+newtype JannoRelationNote = JannoRelationNote T.Text deriving (JannoRelationNote -> JannoRelationNote -> Bool
+(JannoRelationNote -> JannoRelationNote -> Bool)
+-> (JannoRelationNote -> JannoRelationNote -> Bool)
+-> Eq JannoRelationNote
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoRelationNote -> JannoRelationNote -> Bool
+== :: JannoRelationNote -> JannoRelationNote -> Bool
+$c/= :: JannoRelationNote -> JannoRelationNote -> Bool
+/= :: JannoRelationNote -> JannoRelationNote -> Bool
+Eq)
+$(makeInstances ''JannoRelationNote "Relation_Note")
+
+-- | A datatype for the Collection_ID .janno column
+newtype JannoCollectionID = JannoCollectionID T.Text deriving (JannoCollectionID -> JannoCollectionID -> Bool
+(JannoCollectionID -> JannoCollectionID -> Bool)
+-> (JannoCollectionID -> JannoCollectionID -> Bool)
+-> Eq JannoCollectionID
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoCollectionID -> JannoCollectionID -> Bool
+== :: JannoCollectionID -> JannoCollectionID -> Bool
+$c/= :: JannoCollectionID -> JannoCollectionID -> Bool
+/= :: JannoCollectionID -> JannoCollectionID -> Bool
+Eq)
+$(makeInstances ''JannoCollectionID "Collection_ID")
+
+-- | A datatype for the Country .janno column
+newtype JannoCountry = JannoCountry T.Text deriving (JannoCountry -> JannoCountry -> Bool
+(JannoCountry -> JannoCountry -> Bool)
+-> (JannoCountry -> JannoCountry -> Bool) -> Eq JannoCountry
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoCountry -> JannoCountry -> Bool
+== :: JannoCountry -> JannoCountry -> Bool
+$c/= :: JannoCountry -> JannoCountry -> Bool
+/= :: JannoCountry -> JannoCountry -> Bool
+Eq, Eq JannoCountry
+Eq JannoCountry
+-> (JannoCountry -> JannoCountry -> Ordering)
+-> (JannoCountry -> JannoCountry -> Bool)
+-> (JannoCountry -> JannoCountry -> Bool)
+-> (JannoCountry -> JannoCountry -> Bool)
+-> (JannoCountry -> JannoCountry -> Bool)
+-> (JannoCountry -> JannoCountry -> JannoCountry)
+-> (JannoCountry -> JannoCountry -> JannoCountry)
+-> Ord JannoCountry
+JannoCountry -> JannoCountry -> Bool
+JannoCountry -> JannoCountry -> Ordering
+JannoCountry -> JannoCountry -> JannoCountry
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoCountry -> JannoCountry -> Ordering
+compare :: JannoCountry -> JannoCountry -> Ordering
+$c< :: JannoCountry -> JannoCountry -> Bool
+< :: JannoCountry -> JannoCountry -> Bool
+$c<= :: JannoCountry -> JannoCountry -> Bool
+<= :: JannoCountry -> JannoCountry -> Bool
+$c> :: JannoCountry -> JannoCountry -> Bool
+> :: JannoCountry -> JannoCountry -> Bool
+$c>= :: JannoCountry -> JannoCountry -> Bool
+>= :: JannoCountry -> JannoCountry -> Bool
+$cmax :: JannoCountry -> JannoCountry -> JannoCountry
+max :: JannoCountry -> JannoCountry -> JannoCountry
+$cmin :: JannoCountry -> JannoCountry -> JannoCountry
+min :: JannoCountry -> JannoCountry -> JannoCountry
+Ord)
+$(makeInstances ''JannoCountry "Country")
+
+-- | A datatype for countries in ISO-alpha2 code format
+newtype JannoCountryISO = JannoCountryISO Country deriving (JannoCountryISO -> JannoCountryISO -> Bool
+(JannoCountryISO -> JannoCountryISO -> Bool)
+-> (JannoCountryISO -> JannoCountryISO -> Bool)
+-> Eq JannoCountryISO
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoCountryISO -> JannoCountryISO -> Bool
+== :: JannoCountryISO -> JannoCountryISO -> Bool
+$c/= :: JannoCountryISO -> JannoCountryISO -> Bool
+/= :: JannoCountryISO -> JannoCountryISO -> Bool
+Eq, Eq JannoCountryISO
+Eq JannoCountryISO
+-> (JannoCountryISO -> JannoCountryISO -> Ordering)
+-> (JannoCountryISO -> JannoCountryISO -> Bool)
+-> (JannoCountryISO -> JannoCountryISO -> Bool)
+-> (JannoCountryISO -> JannoCountryISO -> Bool)
+-> (JannoCountryISO -> JannoCountryISO -> Bool)
+-> (JannoCountryISO -> JannoCountryISO -> JannoCountryISO)
+-> (JannoCountryISO -> JannoCountryISO -> JannoCountryISO)
+-> Ord JannoCountryISO
+JannoCountryISO -> JannoCountryISO -> Bool
+JannoCountryISO -> JannoCountryISO -> Ordering
+JannoCountryISO -> JannoCountryISO -> JannoCountryISO
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoCountryISO -> JannoCountryISO -> Ordering
+compare :: JannoCountryISO -> JannoCountryISO -> Ordering
+$c< :: JannoCountryISO -> JannoCountryISO -> Bool
+< :: JannoCountryISO -> JannoCountryISO -> Bool
+$c<= :: JannoCountryISO -> JannoCountryISO -> Bool
+<= :: JannoCountryISO -> JannoCountryISO -> Bool
+$c> :: JannoCountryISO -> JannoCountryISO -> Bool
+> :: JannoCountryISO -> JannoCountryISO -> Bool
+$c>= :: JannoCountryISO -> JannoCountryISO -> Bool
+>= :: JannoCountryISO -> JannoCountryISO -> Bool
+$cmax :: JannoCountryISO -> JannoCountryISO -> JannoCountryISO
+max :: JannoCountryISO -> JannoCountryISO -> JannoCountryISO
+$cmin :: JannoCountryISO -> JannoCountryISO -> JannoCountryISO
+min :: JannoCountryISO -> JannoCountryISO -> JannoCountryISO
+Ord)
+
+instance Show JannoCountryISO where
+    show :: JannoCountryISO -> [Char]
+show (JannoCountryISO Country
+x) = Text -> [Char]
+T.unpack (Text -> [Char]) -> Text -> [Char]
+forall a b. (a -> b) -> a -> b
+$ Country -> Text
+alphaTwoUpper Country
+x
+instance Makeable JannoCountryISO where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoCountryISO
+make Text
+x = case Text -> Maybe Country
+decodeAlphaTwo Text
+x of
+        Maybe Country
+Nothing -> [Char] -> m JannoCountryISO
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoCountryISO) -> [Char] -> m JannoCountryISO
+forall a b. (a -> b) -> a -> b
+$
+            [Char]
+"Country_ISO is set to " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+". " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++
+            [Char]
+"That is not a valid ISO-alpha2 code describing an existing country."
+        Just Country
+c  -> JannoCountryISO -> m JannoCountryISO
+forall a. a -> m a
+forall (m :: * -> *) a. Monad m => a -> m a
+return (JannoCountryISO -> m JannoCountryISO)
+-> JannoCountryISO -> m JannoCountryISO
+forall a b. (a -> b) -> a -> b
+$ Country -> JannoCountryISO
+JannoCountryISO Country
+c
+instance Csv.ToField JannoCountryISO where   toField :: JannoCountryISO -> Field
+toField JannoCountryISO
+x = [Char] -> Field
+forall a. ToField a => a -> Field
+Csv.toField ([Char] -> Field) -> [Char] -> Field
+forall a b. (a -> b) -> a -> b
+$ JannoCountryISO -> [Char]
+forall a. Show a => a -> [Char]
+show JannoCountryISO
+x
+instance Csv.FromField JannoCountryISO where parseField :: Field -> Parser JannoCountryISO
+parseField = [Char] -> Field -> Parser JannoCountryISO
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Country_ISO"
+
+-- | A datatype for the Location .janno column
+newtype JannoLocation = JannoLocation T.Text deriving (JannoLocation -> JannoLocation -> Bool
+(JannoLocation -> JannoLocation -> Bool)
+-> (JannoLocation -> JannoLocation -> Bool) -> Eq JannoLocation
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoLocation -> JannoLocation -> Bool
+== :: JannoLocation -> JannoLocation -> Bool
+$c/= :: JannoLocation -> JannoLocation -> Bool
+/= :: JannoLocation -> JannoLocation -> Bool
+Eq)
+$(makeInstances ''JannoLocation "Location")
+
+-- | A datatype for the Site .janno column
+newtype JannoSite = JannoSite T.Text deriving (JannoSite -> JannoSite -> Bool
+(JannoSite -> JannoSite -> Bool)
+-> (JannoSite -> JannoSite -> Bool) -> Eq JannoSite
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoSite -> JannoSite -> Bool
+== :: JannoSite -> JannoSite -> Bool
+$c/= :: JannoSite -> JannoSite -> Bool
+/= :: JannoSite -> JannoSite -> Bool
+Eq, Eq JannoSite
+Eq JannoSite
+-> (JannoSite -> JannoSite -> Ordering)
+-> (JannoSite -> JannoSite -> Bool)
+-> (JannoSite -> JannoSite -> Bool)
+-> (JannoSite -> JannoSite -> Bool)
+-> (JannoSite -> JannoSite -> Bool)
+-> (JannoSite -> JannoSite -> JannoSite)
+-> (JannoSite -> JannoSite -> JannoSite)
+-> Ord JannoSite
+JannoSite -> JannoSite -> Bool
+JannoSite -> JannoSite -> Ordering
+JannoSite -> JannoSite -> JannoSite
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoSite -> JannoSite -> Ordering
+compare :: JannoSite -> JannoSite -> Ordering
+$c< :: JannoSite -> JannoSite -> Bool
+< :: JannoSite -> JannoSite -> Bool
+$c<= :: JannoSite -> JannoSite -> Bool
+<= :: JannoSite -> JannoSite -> Bool
+$c> :: JannoSite -> JannoSite -> Bool
+> :: JannoSite -> JannoSite -> Bool
+$c>= :: JannoSite -> JannoSite -> Bool
+>= :: JannoSite -> JannoSite -> Bool
+$cmax :: JannoSite -> JannoSite -> JannoSite
+max :: JannoSite -> JannoSite -> JannoSite
+$cmin :: JannoSite -> JannoSite -> JannoSite
+min :: JannoSite -> JannoSite -> JannoSite
+Ord)
+$(makeInstances ''JannoSite "Site")
+
+-- | A datatype for the Latitude .janno column
+newtype JannoLatitude = JannoLatitude Double deriving (JannoLatitude -> JannoLatitude -> Bool
+(JannoLatitude -> JannoLatitude -> Bool)
+-> (JannoLatitude -> JannoLatitude -> Bool) -> Eq JannoLatitude
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoLatitude -> JannoLatitude -> Bool
+== :: JannoLatitude -> JannoLatitude -> Bool
+$c/= :: JannoLatitude -> JannoLatitude -> Bool
+/= :: JannoLatitude -> JannoLatitude -> Bool
+Eq, Eq JannoLatitude
+Eq JannoLatitude
+-> (JannoLatitude -> JannoLatitude -> Ordering)
+-> (JannoLatitude -> JannoLatitude -> Bool)
+-> (JannoLatitude -> JannoLatitude -> Bool)
+-> (JannoLatitude -> JannoLatitude -> Bool)
+-> (JannoLatitude -> JannoLatitude -> Bool)
+-> (JannoLatitude -> JannoLatitude -> JannoLatitude)
+-> (JannoLatitude -> JannoLatitude -> JannoLatitude)
+-> Ord JannoLatitude
+JannoLatitude -> JannoLatitude -> Bool
+JannoLatitude -> JannoLatitude -> Ordering
+JannoLatitude -> JannoLatitude -> JannoLatitude
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoLatitude -> JannoLatitude -> Ordering
+compare :: JannoLatitude -> JannoLatitude -> Ordering
+$c< :: JannoLatitude -> JannoLatitude -> Bool
+< :: JannoLatitude -> JannoLatitude -> Bool
+$c<= :: JannoLatitude -> JannoLatitude -> Bool
+<= :: JannoLatitude -> JannoLatitude -> Bool
+$c> :: JannoLatitude -> JannoLatitude -> Bool
+> :: JannoLatitude -> JannoLatitude -> Bool
+$c>= :: JannoLatitude -> JannoLatitude -> Bool
+>= :: JannoLatitude -> JannoLatitude -> Bool
+$cmax :: JannoLatitude -> JannoLatitude -> JannoLatitude
+max :: JannoLatitude -> JannoLatitude -> JannoLatitude
+$cmin :: JannoLatitude -> JannoLatitude -> JannoLatitude
+min :: JannoLatitude -> JannoLatitude -> JannoLatitude
+Ord, (forall x. JannoLatitude -> Rep JannoLatitude x)
+-> (forall x. Rep JannoLatitude x -> JannoLatitude)
+-> Generic JannoLatitude
+forall x. Rep JannoLatitude x -> JannoLatitude
+forall x. JannoLatitude -> Rep JannoLatitude x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoLatitude -> Rep JannoLatitude x
+from :: forall x. JannoLatitude -> Rep JannoLatitude x
+$cto :: forall x. Rep JannoLatitude x -> JannoLatitude
+to :: forall x. Rep JannoLatitude x -> JannoLatitude
+Generic)
+
+instance Makeable JannoLatitude where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoLatitude
+make Text
+x =
+        case Reader Double
+T.double Text
+x of
+            Left [Char]
+e -> [Char] -> m JannoLatitude
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoLatitude) -> [Char] -> m JannoLatitude
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Latitude can not be converted to Double because " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+e
+            Right (Double
+num, Text
+"") ->
+                if Double
+num Double -> Double -> Bool
+forall a. Ord a => a -> a -> Bool
+>= -Double
+90 Bool -> Bool -> Bool
+&& Double
+num Double -> Double -> Bool
+forall a. Ord a => a -> a -> Bool
+<= Double
+90
+                then JannoLatitude -> m JannoLatitude
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (Double -> JannoLatitude
+JannoLatitude Double
+num)
+                else [Char] -> m JannoLatitude
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoLatitude) -> [Char] -> m JannoLatitude
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Latitude " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+" not between -90 and 90"
+            Right (Double
+_, Text
+rest) -> [Char] -> m JannoLatitude
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoLatitude) -> [Char] -> m JannoLatitude
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Latitude can not be converted to Double, because of a trailing " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+rest
+instance Show JannoLatitude where          show :: JannoLatitude -> [Char]
+show (JannoLatitude Double
+x) = Double -> [Char]
+forall a. Show a => a -> [Char]
+show Double
+x
+instance Csv.ToField JannoLatitude where   toField :: JannoLatitude -> Field
+toField (JannoLatitude Double
+x) = Double -> Field
+forall a. ToField a => a -> Field
+Csv.toField Double
+x
+instance Csv.FromField JannoLatitude where parseField :: Field -> Parser JannoLatitude
+parseField = [Char] -> Field -> Parser JannoLatitude
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Latitude"
+
+-- | A datatype for the Longitude .janno column
+newtype JannoLongitude = JannoLongitude Double deriving (JannoLongitude -> JannoLongitude -> Bool
+(JannoLongitude -> JannoLongitude -> Bool)
+-> (JannoLongitude -> JannoLongitude -> Bool) -> Eq JannoLongitude
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoLongitude -> JannoLongitude -> Bool
+== :: JannoLongitude -> JannoLongitude -> Bool
+$c/= :: JannoLongitude -> JannoLongitude -> Bool
+/= :: JannoLongitude -> JannoLongitude -> Bool
+Eq, Eq JannoLongitude
+Eq JannoLongitude
+-> (JannoLongitude -> JannoLongitude -> Ordering)
+-> (JannoLongitude -> JannoLongitude -> Bool)
+-> (JannoLongitude -> JannoLongitude -> Bool)
+-> (JannoLongitude -> JannoLongitude -> Bool)
+-> (JannoLongitude -> JannoLongitude -> Bool)
+-> (JannoLongitude -> JannoLongitude -> JannoLongitude)
+-> (JannoLongitude -> JannoLongitude -> JannoLongitude)
+-> Ord JannoLongitude
+JannoLongitude -> JannoLongitude -> Bool
+JannoLongitude -> JannoLongitude -> Ordering
+JannoLongitude -> JannoLongitude -> JannoLongitude
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoLongitude -> JannoLongitude -> Ordering
+compare :: JannoLongitude -> JannoLongitude -> Ordering
+$c< :: JannoLongitude -> JannoLongitude -> Bool
+< :: JannoLongitude -> JannoLongitude -> Bool
+$c<= :: JannoLongitude -> JannoLongitude -> Bool
+<= :: JannoLongitude -> JannoLongitude -> Bool
+$c> :: JannoLongitude -> JannoLongitude -> Bool
+> :: JannoLongitude -> JannoLongitude -> Bool
+$c>= :: JannoLongitude -> JannoLongitude -> Bool
+>= :: JannoLongitude -> JannoLongitude -> Bool
+$cmax :: JannoLongitude -> JannoLongitude -> JannoLongitude
+max :: JannoLongitude -> JannoLongitude -> JannoLongitude
+$cmin :: JannoLongitude -> JannoLongitude -> JannoLongitude
+min :: JannoLongitude -> JannoLongitude -> JannoLongitude
+Ord, (forall x. JannoLongitude -> Rep JannoLongitude x)
+-> (forall x. Rep JannoLongitude x -> JannoLongitude)
+-> Generic JannoLongitude
+forall x. Rep JannoLongitude x -> JannoLongitude
+forall x. JannoLongitude -> Rep JannoLongitude x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoLongitude -> Rep JannoLongitude x
+from :: forall x. JannoLongitude -> Rep JannoLongitude x
+$cto :: forall x. Rep JannoLongitude x -> JannoLongitude
+to :: forall x. Rep JannoLongitude x -> JannoLongitude
+Generic)
+
+instance Makeable JannoLongitude where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoLongitude
+make Text
+x =
+        case Reader Double
+T.double Text
+x of
+            Left [Char]
+e -> [Char] -> m JannoLongitude
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoLongitude) -> [Char] -> m JannoLongitude
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Longitude can not be converted to Double because " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+e
+            Right (Double
+num, Text
+"") ->
+                if Double
+num Double -> Double -> Bool
+forall a. Ord a => a -> a -> Bool
+>= -Double
+180 Bool -> Bool -> Bool
+&& Double
+num Double -> Double -> Bool
+forall a. Ord a => a -> a -> Bool
+<= Double
+180
+                then JannoLongitude -> m JannoLongitude
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (Double -> JannoLongitude
+JannoLongitude Double
+num)
+                else [Char] -> m JannoLongitude
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoLongitude) -> [Char] -> m JannoLongitude
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Longitude " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+" not between -180 and 180"
+            Right (Double
+_, Text
+rest) -> [Char] -> m JannoLongitude
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoLongitude) -> [Char] -> m JannoLongitude
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Longitude can not be converted to Double, because of a trailing " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+rest
+instance Show JannoLongitude where          show :: JannoLongitude -> [Char]
+show (JannoLongitude Double
+x) = Double -> [Char]
+forall a. Show a => a -> [Char]
+show Double
+x
+instance Csv.ToField JannoLongitude where   toField :: JannoLongitude -> Field
+toField (JannoLongitude Double
+x) = Double -> Field
+forall a. ToField a => a -> Field
+Csv.toField Double
+x
+instance Csv.FromField JannoLongitude where parseField :: Field -> Parser JannoLongitude
+parseField = [Char] -> Field -> Parser JannoLongitude
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Longitude"
+
+-- | A datatype for the Date_Type .janno column
+data JannoDateType =
+      C14
+    | Contextual
+    | Modern
+    deriving (JannoDateType -> JannoDateType -> Bool
+(JannoDateType -> JannoDateType -> Bool)
+-> (JannoDateType -> JannoDateType -> Bool) -> Eq JannoDateType
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoDateType -> JannoDateType -> Bool
+== :: JannoDateType -> JannoDateType -> Bool
+$c/= :: JannoDateType -> JannoDateType -> Bool
+/= :: JannoDateType -> JannoDateType -> Bool
+Eq, Eq JannoDateType
+Eq JannoDateType
+-> (JannoDateType -> JannoDateType -> Ordering)
+-> (JannoDateType -> JannoDateType -> Bool)
+-> (JannoDateType -> JannoDateType -> Bool)
+-> (JannoDateType -> JannoDateType -> Bool)
+-> (JannoDateType -> JannoDateType -> Bool)
+-> (JannoDateType -> JannoDateType -> JannoDateType)
+-> (JannoDateType -> JannoDateType -> JannoDateType)
+-> Ord JannoDateType
+JannoDateType -> JannoDateType -> Bool
+JannoDateType -> JannoDateType -> Ordering
+JannoDateType -> JannoDateType -> JannoDateType
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoDateType -> JannoDateType -> Ordering
+compare :: JannoDateType -> JannoDateType -> Ordering
+$c< :: JannoDateType -> JannoDateType -> Bool
+< :: JannoDateType -> JannoDateType -> Bool
+$c<= :: JannoDateType -> JannoDateType -> Bool
+<= :: JannoDateType -> JannoDateType -> Bool
+$c> :: JannoDateType -> JannoDateType -> Bool
+> :: JannoDateType -> JannoDateType -> Bool
+$c>= :: JannoDateType -> JannoDateType -> Bool
+>= :: JannoDateType -> JannoDateType -> Bool
+$cmax :: JannoDateType -> JannoDateType -> JannoDateType
+max :: JannoDateType -> JannoDateType -> JannoDateType
+$cmin :: JannoDateType -> JannoDateType -> JannoDateType
+min :: JannoDateType -> JannoDateType -> JannoDateType
+Ord, (forall x. JannoDateType -> Rep JannoDateType x)
+-> (forall x. Rep JannoDateType x -> JannoDateType)
+-> Generic JannoDateType
+forall x. Rep JannoDateType x -> JannoDateType
+forall x. JannoDateType -> Rep JannoDateType x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoDateType -> Rep JannoDateType x
+from :: forall x. JannoDateType -> Rep JannoDateType x
+$cto :: forall x. Rep JannoDateType x -> JannoDateType
+to :: forall x. Rep JannoDateType x -> JannoDateType
+Generic, Int -> JannoDateType
+JannoDateType -> Int
+JannoDateType -> [JannoDateType]
+JannoDateType -> JannoDateType
+JannoDateType -> JannoDateType -> [JannoDateType]
+JannoDateType -> JannoDateType -> JannoDateType -> [JannoDateType]
+(JannoDateType -> JannoDateType)
+-> (JannoDateType -> JannoDateType)
+-> (Int -> JannoDateType)
+-> (JannoDateType -> Int)
+-> (JannoDateType -> [JannoDateType])
+-> (JannoDateType -> JannoDateType -> [JannoDateType])
+-> (JannoDateType -> JannoDateType -> [JannoDateType])
+-> (JannoDateType
+    -> JannoDateType -> JannoDateType -> [JannoDateType])
+-> Enum JannoDateType
+forall a.
+(a -> a)
+-> (a -> a)
+-> (Int -> a)
+-> (a -> Int)
+-> (a -> [a])
+-> (a -> a -> [a])
+-> (a -> a -> [a])
+-> (a -> a -> a -> [a])
+-> Enum a
+$csucc :: JannoDateType -> JannoDateType
+succ :: JannoDateType -> JannoDateType
+$cpred :: JannoDateType -> JannoDateType
+pred :: JannoDateType -> JannoDateType
+$ctoEnum :: Int -> JannoDateType
+toEnum :: Int -> JannoDateType
+$cfromEnum :: JannoDateType -> Int
+fromEnum :: JannoDateType -> Int
+$cenumFrom :: JannoDateType -> [JannoDateType]
+enumFrom :: JannoDateType -> [JannoDateType]
+$cenumFromThen :: JannoDateType -> JannoDateType -> [JannoDateType]
+enumFromThen :: JannoDateType -> JannoDateType -> [JannoDateType]
+$cenumFromTo :: JannoDateType -> JannoDateType -> [JannoDateType]
+enumFromTo :: JannoDateType -> JannoDateType -> [JannoDateType]
+$cenumFromThenTo :: JannoDateType -> JannoDateType -> JannoDateType -> [JannoDateType]
+enumFromThenTo :: JannoDateType -> JannoDateType -> JannoDateType -> [JannoDateType]
+Enum, JannoDateType
+JannoDateType -> JannoDateType -> Bounded JannoDateType
+forall a. a -> a -> Bounded a
+$cminBound :: JannoDateType
+minBound :: JannoDateType
+$cmaxBound :: JannoDateType
+maxBound :: JannoDateType
+Bounded)
+
+instance Makeable JannoDateType where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoDateType
+make Text
+x
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"C14"        = JannoDateType -> m JannoDateType
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoDateType
+C14
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"contextual" = JannoDateType -> m JannoDateType
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoDateType
+Contextual
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"modern"     = JannoDateType -> m JannoDateType
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoDateType
+Modern
+        | Bool
+otherwise         = [Char] -> m JannoDateType
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateType) -> [Char] -> m JannoDateType
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_Type is set to " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+". " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++
+                                     [Char]
+"That is not in the allowed set [C14, contextual, modern]."
+instance Show JannoDateType where
+    show :: JannoDateType -> [Char]
+show JannoDateType
+C14        = [Char]
+"C14"
+    show JannoDateType
+Contextual = [Char]
+"contextual"
+    show JannoDateType
+Modern     = [Char]
+"modern"
+instance Csv.ToField JannoDateType where   toField :: JannoDateType -> Field
+toField JannoDateType
+x = [Char] -> Field
+forall a. ToField a => a -> Field
+Csv.toField ([Char] -> Field) -> [Char] -> Field
+forall a b. (a -> b) -> a -> b
+$ JannoDateType -> [Char]
+forall a. Show a => a -> [Char]
+show JannoDateType
+x
+instance Csv.FromField JannoDateType where parseField :: Field -> Parser JannoDateType
+parseField = [Char] -> Field -> Parser JannoDateType
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Date_Type"
+
+-- | A datatype for the Date_C14_Labnr .janno column
+newtype JannoDateC14Labnr = JannoDateC14Labnr T.Text deriving (JannoDateC14Labnr -> JannoDateC14Labnr -> Bool
+(JannoDateC14Labnr -> JannoDateC14Labnr -> Bool)
+-> (JannoDateC14Labnr -> JannoDateC14Labnr -> Bool)
+-> Eq JannoDateC14Labnr
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoDateC14Labnr -> JannoDateC14Labnr -> Bool
+== :: JannoDateC14Labnr -> JannoDateC14Labnr -> Bool
+$c/= :: JannoDateC14Labnr -> JannoDateC14Labnr -> Bool
+/= :: JannoDateC14Labnr -> JannoDateC14Labnr -> Bool
+Eq)
+$(makeInstances ''JannoDateC14Labnr "Date_C14_Labnr")
+
+-- | A datatype for the Date_C14_Uncal_BP .janno column
+newtype JannoDateC14UncalBP = JannoDateC14UncalBP Int deriving (JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+(JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool)
+-> (JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool)
+-> Eq JannoDateC14UncalBP
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+== :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+$c/= :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+/= :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+Eq, Eq JannoDateC14UncalBP
+Eq JannoDateC14UncalBP
+-> (JannoDateC14UncalBP -> JannoDateC14UncalBP -> Ordering)
+-> (JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool)
+-> (JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool)
+-> (JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool)
+-> (JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool)
+-> (JannoDateC14UncalBP
+    -> JannoDateC14UncalBP -> JannoDateC14UncalBP)
+-> (JannoDateC14UncalBP
+    -> JannoDateC14UncalBP -> JannoDateC14UncalBP)
+-> Ord JannoDateC14UncalBP
+JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+JannoDateC14UncalBP -> JannoDateC14UncalBP -> Ordering
+JannoDateC14UncalBP -> JannoDateC14UncalBP -> JannoDateC14UncalBP
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Ordering
+compare :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Ordering
+$c< :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+< :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+$c<= :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+<= :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+$c> :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+> :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+$c>= :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+>= :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> Bool
+$cmax :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> JannoDateC14UncalBP
+max :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> JannoDateC14UncalBP
+$cmin :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> JannoDateC14UncalBP
+min :: JannoDateC14UncalBP -> JannoDateC14UncalBP -> JannoDateC14UncalBP
+Ord, (forall x. JannoDateC14UncalBP -> Rep JannoDateC14UncalBP x)
+-> (forall x. Rep JannoDateC14UncalBP x -> JannoDateC14UncalBP)
+-> Generic JannoDateC14UncalBP
+forall x. Rep JannoDateC14UncalBP x -> JannoDateC14UncalBP
+forall x. JannoDateC14UncalBP -> Rep JannoDateC14UncalBP x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoDateC14UncalBP -> Rep JannoDateC14UncalBP x
+from :: forall x. JannoDateC14UncalBP -> Rep JannoDateC14UncalBP x
+$cto :: forall x. Rep JannoDateC14UncalBP x -> JannoDateC14UncalBP
+to :: forall x. Rep JannoDateC14UncalBP x -> JannoDateC14UncalBP
+Generic)
+
+instance Makeable JannoDateC14UncalBP where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoDateC14UncalBP
+make Text
+x =
+        case Reader Int
+forall a. Integral a => Reader a
+T.decimal Text
+x of
+            Left [Char]
+e -> [Char] -> m JannoDateC14UncalBP
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateC14UncalBP)
+-> [Char] -> m JannoDateC14UncalBP
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_C14_Uncal_BP can not be converted to Int because " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+e
+            Right (Int
+num, Text
+"") -> JannoDateC14UncalBP -> m JannoDateC14UncalBP
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoDateC14UncalBP -> m JannoDateC14UncalBP)
+-> JannoDateC14UncalBP -> m JannoDateC14UncalBP
+forall a b. (a -> b) -> a -> b
+$ Int -> JannoDateC14UncalBP
+JannoDateC14UncalBP Int
+num
+            Right (Int
+_, Text
+rest) -> [Char] -> m JannoDateC14UncalBP
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateC14UncalBP)
+-> [Char] -> m JannoDateC14UncalBP
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_C14_Uncal_BP can not be converted to Int, because of a trailing " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+rest
+instance Show JannoDateC14UncalBP where          show :: JannoDateC14UncalBP -> [Char]
+show (JannoDateC14UncalBP Int
+x) = Int -> [Char]
+forall a. Show a => a -> [Char]
+show Int
+x
+instance Csv.ToField JannoDateC14UncalBP where   toField :: JannoDateC14UncalBP -> Field
+toField (JannoDateC14UncalBP Int
+x) = Int -> Field
+forall a. ToField a => a -> Field
+Csv.toField Int
+x
+instance Csv.FromField JannoDateC14UncalBP where parseField :: Field -> Parser JannoDateC14UncalBP
+parseField = [Char] -> Field -> Parser JannoDateC14UncalBP
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Date_C14_Uncal_BP"
+
+-- | A datatype for the Date_C14_Uncal_BP_Err .janno column
+newtype JannoDateC14UncalBPErr = JannoDateC14UncalBPErr Int deriving (JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+(JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool)
+-> (JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool)
+-> Eq JannoDateC14UncalBPErr
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+== :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+$c/= :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+/= :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+Eq, Eq JannoDateC14UncalBPErr
+Eq JannoDateC14UncalBPErr
+-> (JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Ordering)
+-> (JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool)
+-> (JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool)
+-> (JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool)
+-> (JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool)
+-> (JannoDateC14UncalBPErr
+    -> JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr)
+-> (JannoDateC14UncalBPErr
+    -> JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr)
+-> Ord JannoDateC14UncalBPErr
+JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Ordering
+JannoDateC14UncalBPErr
+-> JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Ordering
+compare :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Ordering
+$c< :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+< :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+$c<= :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+<= :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+$c> :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+> :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+$c>= :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+>= :: JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr -> Bool
+$cmax :: JannoDateC14UncalBPErr
+-> JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr
+max :: JannoDateC14UncalBPErr
+-> JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr
+$cmin :: JannoDateC14UncalBPErr
+-> JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr
+min :: JannoDateC14UncalBPErr
+-> JannoDateC14UncalBPErr -> JannoDateC14UncalBPErr
+Ord, (forall x. JannoDateC14UncalBPErr -> Rep JannoDateC14UncalBPErr x)
+-> (forall x.
+    Rep JannoDateC14UncalBPErr x -> JannoDateC14UncalBPErr)
+-> Generic JannoDateC14UncalBPErr
+forall x. Rep JannoDateC14UncalBPErr x -> JannoDateC14UncalBPErr
+forall x. JannoDateC14UncalBPErr -> Rep JannoDateC14UncalBPErr x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoDateC14UncalBPErr -> Rep JannoDateC14UncalBPErr x
+from :: forall x. JannoDateC14UncalBPErr -> Rep JannoDateC14UncalBPErr x
+$cto :: forall x. Rep JannoDateC14UncalBPErr x -> JannoDateC14UncalBPErr
+to :: forall x. Rep JannoDateC14UncalBPErr x -> JannoDateC14UncalBPErr
+Generic)
+
+instance Makeable JannoDateC14UncalBPErr where
+    make :: forall (m :: * -> *).
+MonadFail m =>
+Text -> m JannoDateC14UncalBPErr
+make Text
+x =
+        case Reader Int
+forall a. Integral a => Reader a
+T.decimal Text
+x of
+            Left [Char]
+e -> [Char] -> m JannoDateC14UncalBPErr
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateC14UncalBPErr)
+-> [Char] -> m JannoDateC14UncalBPErr
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_C14_Uncal_BP_Err can not be converted to Int because " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+e
+            Right (Int
+num, Text
+"") -> JannoDateC14UncalBPErr -> m JannoDateC14UncalBPErr
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoDateC14UncalBPErr -> m JannoDateC14UncalBPErr)
+-> JannoDateC14UncalBPErr -> m JannoDateC14UncalBPErr
+forall a b. (a -> b) -> a -> b
+$ Int -> JannoDateC14UncalBPErr
+JannoDateC14UncalBPErr Int
+num
+            Right (Int
+_, Text
+rest) -> [Char] -> m JannoDateC14UncalBPErr
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateC14UncalBPErr)
+-> [Char] -> m JannoDateC14UncalBPErr
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_C14_Uncal_BP_Err can not be converted to Int, because of a trailing " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+rest
+instance Show JannoDateC14UncalBPErr where          show :: JannoDateC14UncalBPErr -> [Char]
+show (JannoDateC14UncalBPErr Int
+x) = Int -> [Char]
+forall a. Show a => a -> [Char]
+show Int
+x
+instance Csv.ToField JannoDateC14UncalBPErr where   toField :: JannoDateC14UncalBPErr -> Field
+toField (JannoDateC14UncalBPErr Int
+x) = Int -> Field
+forall a. ToField a => a -> Field
+Csv.toField Int
+x
+instance Csv.FromField JannoDateC14UncalBPErr where parseField :: Field -> Parser JannoDateC14UncalBPErr
+parseField = [Char] -> Field -> Parser JannoDateC14UncalBPErr
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Date_C14_Uncal_BP_Err"
+
+-- | A datatype for the Date_BC_AD_Start .janno column
+newtype JannoDateBCADStart = JannoDateBCADStart Int deriving (JannoDateBCADStart -> JannoDateBCADStart -> Bool
+(JannoDateBCADStart -> JannoDateBCADStart -> Bool)
+-> (JannoDateBCADStart -> JannoDateBCADStart -> Bool)
+-> Eq JannoDateBCADStart
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoDateBCADStart -> JannoDateBCADStart -> Bool
+== :: JannoDateBCADStart -> JannoDateBCADStart -> Bool
+$c/= :: JannoDateBCADStart -> JannoDateBCADStart -> Bool
+/= :: JannoDateBCADStart -> JannoDateBCADStart -> Bool
+Eq, Eq JannoDateBCADStart
+Eq JannoDateBCADStart
+-> (JannoDateBCADStart -> JannoDateBCADStart -> Ordering)
+-> (JannoDateBCADStart -> JannoDateBCADStart -> Bool)
+-> (JannoDateBCADStart -> JannoDateBCADStart -> Bool)
+-> (JannoDateBCADStart -> JannoDateBCADStart -> Bool)
+-> (JannoDateBCADStart -> JannoDateBCADStart -> Bool)
+-> (JannoDateBCADStart -> JannoDateBCADStart -> JannoDateBCADStart)
+-> (JannoDateBCADStart -> JannoDateBCADStart -> JannoDateBCADStart)
+-> Ord JannoDateBCADStart
+JannoDateBCADStart -> JannoDateBCADStart -> Bool
+JannoDateBCADStart -> JannoDateBCADStart -> Ordering
+JannoDateBCADStart -> JannoDateBCADStart -> JannoDateBCADStart
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoDateBCADStart -> JannoDateBCADStart -> Ordering
+compare :: JannoDateBCADStart -> JannoDateBCADStart -> Ordering
+$c< :: JannoDateBCADStart -> JannoDateBCADStart -> Bool
+< :: JannoDateBCADStart -> JannoDateBCADStart -> Bool
+$c<= :: JannoDateBCADStart -> JannoDateBCADStart -> Bool
+<= :: JannoDateBCADStart -> JannoDateBCADStart -> Bool
+$c> :: JannoDateBCADStart -> JannoDateBCADStart -> Bool
+> :: JannoDateBCADStart -> JannoDateBCADStart -> Bool
+$c>= :: JannoDateBCADStart -> JannoDateBCADStart -> Bool
+>= :: JannoDateBCADStart -> JannoDateBCADStart -> Bool
+$cmax :: JannoDateBCADStart -> JannoDateBCADStart -> JannoDateBCADStart
+max :: JannoDateBCADStart -> JannoDateBCADStart -> JannoDateBCADStart
+$cmin :: JannoDateBCADStart -> JannoDateBCADStart -> JannoDateBCADStart
+min :: JannoDateBCADStart -> JannoDateBCADStart -> JannoDateBCADStart
+Ord, (forall x. JannoDateBCADStart -> Rep JannoDateBCADStart x)
+-> (forall x. Rep JannoDateBCADStart x -> JannoDateBCADStart)
+-> Generic JannoDateBCADStart
+forall x. Rep JannoDateBCADStart x -> JannoDateBCADStart
+forall x. JannoDateBCADStart -> Rep JannoDateBCADStart x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoDateBCADStart -> Rep JannoDateBCADStart x
+from :: forall x. JannoDateBCADStart -> Rep JannoDateBCADStart x
+$cto :: forall x. Rep JannoDateBCADStart x -> JannoDateBCADStart
+to :: forall x. Rep JannoDateBCADStart x -> JannoDateBCADStart
+Generic)
+
+instance Makeable JannoDateBCADStart where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoDateBCADStart
+make Text
+x =
+        let curYear :: Int
+curYear = Int
+2024 -- the current year
+        in case Reader Int -> Reader Int
+forall a. Num a => Reader a -> Reader a
+T.signed Reader Int
+forall a. Integral a => Reader a
+T.decimal Text
+x of
+            Left [Char]
+e -> [Char] -> m JannoDateBCADStart
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateBCADStart) -> [Char] -> m JannoDateBCADStart
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_BC_AD_Start can not be converted to Int because " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+e
+            Right (Int
+num, Text
+"") ->
+                if Int
+num Int -> Int -> Bool
+forall a. Ord a => a -> a -> Bool
+>= Int
+curYear
+                then [Char] -> m JannoDateBCADStart
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateBCADStart) -> [Char] -> m JannoDateBCADStart
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_BC_AD_Start " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+" later than " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Int -> [Char]
+forall a. Show a => a -> [Char]
+show Int
+curYear [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+", which is impossible. " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++
+                   [Char]
+"Did you accidentally enter a BP date?"
+                else JannoDateBCADStart -> m JannoDateBCADStart
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoDateBCADStart -> m JannoDateBCADStart)
+-> JannoDateBCADStart -> m JannoDateBCADStart
+forall a b. (a -> b) -> a -> b
+$ Int -> JannoDateBCADStart
+JannoDateBCADStart Int
+num
+            Right (Int
+_, Text
+rest) -> [Char] -> m JannoDateBCADStart
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateBCADStart) -> [Char] -> m JannoDateBCADStart
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_BC_AD_Start can not be converted to Int, because of a trailing " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+rest
+instance Show JannoDateBCADStart where          show :: JannoDateBCADStart -> [Char]
+show (JannoDateBCADStart Int
+x) = Int -> [Char]
+forall a. Show a => a -> [Char]
+show Int
+x
+instance Csv.ToField JannoDateBCADStart where   toField :: JannoDateBCADStart -> Field
+toField (JannoDateBCADStart Int
+x) = Int -> Field
+forall a. ToField a => a -> Field
+Csv.toField Int
+x
+instance Csv.FromField JannoDateBCADStart where parseField :: Field -> Parser JannoDateBCADStart
+parseField = [Char] -> Field -> Parser JannoDateBCADStart
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Date_BC_AD_Start"
+
+-- | A datatype for the Date_BC_AD_Median .janno column
+newtype JannoDateBCADMedian = JannoDateBCADMedian Int deriving (JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+(JannoDateBCADMedian -> JannoDateBCADMedian -> Bool)
+-> (JannoDateBCADMedian -> JannoDateBCADMedian -> Bool)
+-> Eq JannoDateBCADMedian
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+== :: JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+$c/= :: JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+/= :: JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+Eq, Eq JannoDateBCADMedian
+Eq JannoDateBCADMedian
+-> (JannoDateBCADMedian -> JannoDateBCADMedian -> Ordering)
+-> (JannoDateBCADMedian -> JannoDateBCADMedian -> Bool)
+-> (JannoDateBCADMedian -> JannoDateBCADMedian -> Bool)
+-> (JannoDateBCADMedian -> JannoDateBCADMedian -> Bool)
+-> (JannoDateBCADMedian -> JannoDateBCADMedian -> Bool)
+-> (JannoDateBCADMedian
+    -> JannoDateBCADMedian -> JannoDateBCADMedian)
+-> (JannoDateBCADMedian
+    -> JannoDateBCADMedian -> JannoDateBCADMedian)
+-> Ord JannoDateBCADMedian
+JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+JannoDateBCADMedian -> JannoDateBCADMedian -> Ordering
+JannoDateBCADMedian -> JannoDateBCADMedian -> JannoDateBCADMedian
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoDateBCADMedian -> JannoDateBCADMedian -> Ordering
+compare :: JannoDateBCADMedian -> JannoDateBCADMedian -> Ordering
+$c< :: JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+< :: JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+$c<= :: JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+<= :: JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+$c> :: JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+> :: JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+$c>= :: JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+>= :: JannoDateBCADMedian -> JannoDateBCADMedian -> Bool
+$cmax :: JannoDateBCADMedian -> JannoDateBCADMedian -> JannoDateBCADMedian
+max :: JannoDateBCADMedian -> JannoDateBCADMedian -> JannoDateBCADMedian
+$cmin :: JannoDateBCADMedian -> JannoDateBCADMedian -> JannoDateBCADMedian
+min :: JannoDateBCADMedian -> JannoDateBCADMedian -> JannoDateBCADMedian
+Ord, (forall x. JannoDateBCADMedian -> Rep JannoDateBCADMedian x)
+-> (forall x. Rep JannoDateBCADMedian x -> JannoDateBCADMedian)
+-> Generic JannoDateBCADMedian
+forall x. Rep JannoDateBCADMedian x -> JannoDateBCADMedian
+forall x. JannoDateBCADMedian -> Rep JannoDateBCADMedian x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoDateBCADMedian -> Rep JannoDateBCADMedian x
+from :: forall x. JannoDateBCADMedian -> Rep JannoDateBCADMedian x
+$cto :: forall x. Rep JannoDateBCADMedian x -> JannoDateBCADMedian
+to :: forall x. Rep JannoDateBCADMedian x -> JannoDateBCADMedian
+Generic)
+
+instance Makeable JannoDateBCADMedian where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoDateBCADMedian
+make Text
+x =
+        let curYear :: Int
+curYear = Int
+2024 -- the current year
+        in case Reader Int -> Reader Int
+forall a. Num a => Reader a -> Reader a
+T.signed Reader Int
+forall a. Integral a => Reader a
+T.decimal Text
+x of
+            Left [Char]
+e -> [Char] -> m JannoDateBCADMedian
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateBCADMedian)
+-> [Char] -> m JannoDateBCADMedian
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_BC_AD_Median can not be converted to Int because " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+e
+            Right (Int
+num, Text
+"") ->
+                if Int
+num Int -> Int -> Bool
+forall a. Ord a => a -> a -> Bool
+>= Int
+curYear
+                then [Char] -> m JannoDateBCADMedian
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateBCADMedian)
+-> [Char] -> m JannoDateBCADMedian
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_BC_AD_Median " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+" later than " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Int -> [Char]
+forall a. Show a => a -> [Char]
+show Int
+curYear [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+", which is impossible. " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++
+                   [Char]
+"Did you accidentally enter a BP date?"
+                else JannoDateBCADMedian -> m JannoDateBCADMedian
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoDateBCADMedian -> m JannoDateBCADMedian)
+-> JannoDateBCADMedian -> m JannoDateBCADMedian
+forall a b. (a -> b) -> a -> b
+$ Int -> JannoDateBCADMedian
+JannoDateBCADMedian Int
+num
+            Right (Int
+_, Text
+rest) -> [Char] -> m JannoDateBCADMedian
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateBCADMedian)
+-> [Char] -> m JannoDateBCADMedian
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_BC_AD_Median can not be converted to Int, because of a trailing " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+rest
+instance Show JannoDateBCADMedian where          show :: JannoDateBCADMedian -> [Char]
+show (JannoDateBCADMedian Int
+x) = Int -> [Char]
+forall a. Show a => a -> [Char]
+show Int
+x
+instance Csv.ToField JannoDateBCADMedian where   toField :: JannoDateBCADMedian -> Field
+toField (JannoDateBCADMedian Int
+x) = Int -> Field
+forall a. ToField a => a -> Field
+Csv.toField Int
+x
+instance Csv.FromField JannoDateBCADMedian where parseField :: Field -> Parser JannoDateBCADMedian
+parseField = [Char] -> Field -> Parser JannoDateBCADMedian
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Date_BC_AD_Median"
+
+-- | A datatype for the Date_BC_AD_Stop .janno column
+newtype JannoDateBCADStop = JannoDateBCADStop Int deriving (JannoDateBCADStop -> JannoDateBCADStop -> Bool
+(JannoDateBCADStop -> JannoDateBCADStop -> Bool)
+-> (JannoDateBCADStop -> JannoDateBCADStop -> Bool)
+-> Eq JannoDateBCADStop
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoDateBCADStop -> JannoDateBCADStop -> Bool
+== :: JannoDateBCADStop -> JannoDateBCADStop -> Bool
+$c/= :: JannoDateBCADStop -> JannoDateBCADStop -> Bool
+/= :: JannoDateBCADStop -> JannoDateBCADStop -> Bool
+Eq, Eq JannoDateBCADStop
+Eq JannoDateBCADStop
+-> (JannoDateBCADStop -> JannoDateBCADStop -> Ordering)
+-> (JannoDateBCADStop -> JannoDateBCADStop -> Bool)
+-> (JannoDateBCADStop -> JannoDateBCADStop -> Bool)
+-> (JannoDateBCADStop -> JannoDateBCADStop -> Bool)
+-> (JannoDateBCADStop -> JannoDateBCADStop -> Bool)
+-> (JannoDateBCADStop -> JannoDateBCADStop -> JannoDateBCADStop)
+-> (JannoDateBCADStop -> JannoDateBCADStop -> JannoDateBCADStop)
+-> Ord JannoDateBCADStop
+JannoDateBCADStop -> JannoDateBCADStop -> Bool
+JannoDateBCADStop -> JannoDateBCADStop -> Ordering
+JannoDateBCADStop -> JannoDateBCADStop -> JannoDateBCADStop
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoDateBCADStop -> JannoDateBCADStop -> Ordering
+compare :: JannoDateBCADStop -> JannoDateBCADStop -> Ordering
+$c< :: JannoDateBCADStop -> JannoDateBCADStop -> Bool
+< :: JannoDateBCADStop -> JannoDateBCADStop -> Bool
+$c<= :: JannoDateBCADStop -> JannoDateBCADStop -> Bool
+<= :: JannoDateBCADStop -> JannoDateBCADStop -> Bool
+$c> :: JannoDateBCADStop -> JannoDateBCADStop -> Bool
+> :: JannoDateBCADStop -> JannoDateBCADStop -> Bool
+$c>= :: JannoDateBCADStop -> JannoDateBCADStop -> Bool
+>= :: JannoDateBCADStop -> JannoDateBCADStop -> Bool
+$cmax :: JannoDateBCADStop -> JannoDateBCADStop -> JannoDateBCADStop
+max :: JannoDateBCADStop -> JannoDateBCADStop -> JannoDateBCADStop
+$cmin :: JannoDateBCADStop -> JannoDateBCADStop -> JannoDateBCADStop
+min :: JannoDateBCADStop -> JannoDateBCADStop -> JannoDateBCADStop
+Ord, (forall x. JannoDateBCADStop -> Rep JannoDateBCADStop x)
+-> (forall x. Rep JannoDateBCADStop x -> JannoDateBCADStop)
+-> Generic JannoDateBCADStop
+forall x. Rep JannoDateBCADStop x -> JannoDateBCADStop
+forall x. JannoDateBCADStop -> Rep JannoDateBCADStop x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoDateBCADStop -> Rep JannoDateBCADStop x
+from :: forall x. JannoDateBCADStop -> Rep JannoDateBCADStop x
+$cto :: forall x. Rep JannoDateBCADStop x -> JannoDateBCADStop
+to :: forall x. Rep JannoDateBCADStop x -> JannoDateBCADStop
+Generic)
+
+instance Makeable JannoDateBCADStop where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoDateBCADStop
+make Text
+x =
+        let curYear :: Int
+curYear = Int
+2024 -- the current year
+        in case Reader Int -> Reader Int
+forall a. Num a => Reader a -> Reader a
+T.signed Reader Int
+forall a. Integral a => Reader a
+T.decimal Text
+x of
+            Left [Char]
+e -> [Char] -> m JannoDateBCADStop
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateBCADStop) -> [Char] -> m JannoDateBCADStop
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_BC_AD_Stop can not be converted to Int because " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+e
+            Right (Int
+num, Text
+"") ->
+                if Int
+num Int -> Int -> Bool
+forall a. Ord a => a -> a -> Bool
+>= Int
+curYear
+                then [Char] -> m JannoDateBCADStop
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateBCADStop) -> [Char] -> m JannoDateBCADStop
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_BC_AD_Stop " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+" later than " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Int -> [Char]
+forall a. Show a => a -> [Char]
+show Int
+curYear [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+", which is impossible. " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++
+                   [Char]
+"Did you accidentally enter a BP date?"
+                else JannoDateBCADStop -> m JannoDateBCADStop
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoDateBCADStop -> m JannoDateBCADStop)
+-> JannoDateBCADStop -> m JannoDateBCADStop
+forall a b. (a -> b) -> a -> b
+$ Int -> JannoDateBCADStop
+JannoDateBCADStop Int
+num
+            Right (Int
+_, Text
+rest) -> [Char] -> m JannoDateBCADStop
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDateBCADStop) -> [Char] -> m JannoDateBCADStop
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Date_BC_AD_Stop can not be converted to Int, because of a trailing " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+rest
+instance Show JannoDateBCADStop where          show :: JannoDateBCADStop -> [Char]
+show (JannoDateBCADStop Int
+x) = Int -> [Char]
+forall a. Show a => a -> [Char]
+show Int
+x
+instance Csv.ToField JannoDateBCADStop where   toField :: JannoDateBCADStop -> Field
+toField (JannoDateBCADStop Int
+x) = Int -> Field
+forall a. ToField a => a -> Field
+Csv.toField Int
+x
+instance Csv.FromField JannoDateBCADStop where parseField :: Field -> Parser JannoDateBCADStop
+parseField = [Char] -> Field -> Parser JannoDateBCADStop
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Date_BC_AD_Stop"
+
+-- | A datatype for the Date_Note .janno column
+newtype JannoDateNote = JannoDateNote T.Text deriving (JannoDateNote -> JannoDateNote -> Bool
+(JannoDateNote -> JannoDateNote -> Bool)
+-> (JannoDateNote -> JannoDateNote -> Bool) -> Eq JannoDateNote
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoDateNote -> JannoDateNote -> Bool
+== :: JannoDateNote -> JannoDateNote -> Bool
+$c/= :: JannoDateNote -> JannoDateNote -> Bool
+/= :: JannoDateNote -> JannoDateNote -> Bool
+Eq, Eq JannoDateNote
+Eq JannoDateNote
+-> (JannoDateNote -> JannoDateNote -> Ordering)
+-> (JannoDateNote -> JannoDateNote -> Bool)
+-> (JannoDateNote -> JannoDateNote -> Bool)
+-> (JannoDateNote -> JannoDateNote -> Bool)
+-> (JannoDateNote -> JannoDateNote -> Bool)
+-> (JannoDateNote -> JannoDateNote -> JannoDateNote)
+-> (JannoDateNote -> JannoDateNote -> JannoDateNote)
+-> Ord JannoDateNote
+JannoDateNote -> JannoDateNote -> Bool
+JannoDateNote -> JannoDateNote -> Ordering
+JannoDateNote -> JannoDateNote -> JannoDateNote
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoDateNote -> JannoDateNote -> Ordering
+compare :: JannoDateNote -> JannoDateNote -> Ordering
+$c< :: JannoDateNote -> JannoDateNote -> Bool
+< :: JannoDateNote -> JannoDateNote -> Bool
+$c<= :: JannoDateNote -> JannoDateNote -> Bool
+<= :: JannoDateNote -> JannoDateNote -> Bool
+$c> :: JannoDateNote -> JannoDateNote -> Bool
+> :: JannoDateNote -> JannoDateNote -> Bool
+$c>= :: JannoDateNote -> JannoDateNote -> Bool
+>= :: JannoDateNote -> JannoDateNote -> Bool
+$cmax :: JannoDateNote -> JannoDateNote -> JannoDateNote
+max :: JannoDateNote -> JannoDateNote -> JannoDateNote
+$cmin :: JannoDateNote -> JannoDateNote -> JannoDateNote
+min :: JannoDateNote -> JannoDateNote -> JannoDateNote
+Ord)
+$(makeInstances ''JannoDateNote "Date_Note")
+
+-- | A datatype for the MT_Haplogroup .janno column
+newtype JannoMTHaplogroup = JannoMTHaplogroup T.Text deriving (JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+(JannoMTHaplogroup -> JannoMTHaplogroup -> Bool)
+-> (JannoMTHaplogroup -> JannoMTHaplogroup -> Bool)
+-> Eq JannoMTHaplogroup
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+== :: JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+$c/= :: JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+/= :: JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+Eq, Eq JannoMTHaplogroup
+Eq JannoMTHaplogroup
+-> (JannoMTHaplogroup -> JannoMTHaplogroup -> Ordering)
+-> (JannoMTHaplogroup -> JannoMTHaplogroup -> Bool)
+-> (JannoMTHaplogroup -> JannoMTHaplogroup -> Bool)
+-> (JannoMTHaplogroup -> JannoMTHaplogroup -> Bool)
+-> (JannoMTHaplogroup -> JannoMTHaplogroup -> Bool)
+-> (JannoMTHaplogroup -> JannoMTHaplogroup -> JannoMTHaplogroup)
+-> (JannoMTHaplogroup -> JannoMTHaplogroup -> JannoMTHaplogroup)
+-> Ord JannoMTHaplogroup
+JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+JannoMTHaplogroup -> JannoMTHaplogroup -> Ordering
+JannoMTHaplogroup -> JannoMTHaplogroup -> JannoMTHaplogroup
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoMTHaplogroup -> JannoMTHaplogroup -> Ordering
+compare :: JannoMTHaplogroup -> JannoMTHaplogroup -> Ordering
+$c< :: JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+< :: JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+$c<= :: JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+<= :: JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+$c> :: JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+> :: JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+$c>= :: JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+>= :: JannoMTHaplogroup -> JannoMTHaplogroup -> Bool
+$cmax :: JannoMTHaplogroup -> JannoMTHaplogroup -> JannoMTHaplogroup
+max :: JannoMTHaplogroup -> JannoMTHaplogroup -> JannoMTHaplogroup
+$cmin :: JannoMTHaplogroup -> JannoMTHaplogroup -> JannoMTHaplogroup
+min :: JannoMTHaplogroup -> JannoMTHaplogroup -> JannoMTHaplogroup
+Ord)
+$(makeInstances ''JannoMTHaplogroup "MT_Haplogroup")
+
+-- | A datatype for the Y_Haplogroup .janno column
+newtype JannoYHaplogroup = JannoYHaplogroup T.Text deriving (JannoYHaplogroup -> JannoYHaplogroup -> Bool
+(JannoYHaplogroup -> JannoYHaplogroup -> Bool)
+-> (JannoYHaplogroup -> JannoYHaplogroup -> Bool)
+-> Eq JannoYHaplogroup
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoYHaplogroup -> JannoYHaplogroup -> Bool
+== :: JannoYHaplogroup -> JannoYHaplogroup -> Bool
+$c/= :: JannoYHaplogroup -> JannoYHaplogroup -> Bool
+/= :: JannoYHaplogroup -> JannoYHaplogroup -> Bool
+Eq, Eq JannoYHaplogroup
+Eq JannoYHaplogroup
+-> (JannoYHaplogroup -> JannoYHaplogroup -> Ordering)
+-> (JannoYHaplogroup -> JannoYHaplogroup -> Bool)
+-> (JannoYHaplogroup -> JannoYHaplogroup -> Bool)
+-> (JannoYHaplogroup -> JannoYHaplogroup -> Bool)
+-> (JannoYHaplogroup -> JannoYHaplogroup -> Bool)
+-> (JannoYHaplogroup -> JannoYHaplogroup -> JannoYHaplogroup)
+-> (JannoYHaplogroup -> JannoYHaplogroup -> JannoYHaplogroup)
+-> Ord JannoYHaplogroup
+JannoYHaplogroup -> JannoYHaplogroup -> Bool
+JannoYHaplogroup -> JannoYHaplogroup -> Ordering
+JannoYHaplogroup -> JannoYHaplogroup -> JannoYHaplogroup
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoYHaplogroup -> JannoYHaplogroup -> Ordering
+compare :: JannoYHaplogroup -> JannoYHaplogroup -> Ordering
+$c< :: JannoYHaplogroup -> JannoYHaplogroup -> Bool
+< :: JannoYHaplogroup -> JannoYHaplogroup -> Bool
+$c<= :: JannoYHaplogroup -> JannoYHaplogroup -> Bool
+<= :: JannoYHaplogroup -> JannoYHaplogroup -> Bool
+$c> :: JannoYHaplogroup -> JannoYHaplogroup -> Bool
+> :: JannoYHaplogroup -> JannoYHaplogroup -> Bool
+$c>= :: JannoYHaplogroup -> JannoYHaplogroup -> Bool
+>= :: JannoYHaplogroup -> JannoYHaplogroup -> Bool
+$cmax :: JannoYHaplogroup -> JannoYHaplogroup -> JannoYHaplogroup
+max :: JannoYHaplogroup -> JannoYHaplogroup -> JannoYHaplogroup
+$cmin :: JannoYHaplogroup -> JannoYHaplogroup -> JannoYHaplogroup
+min :: JannoYHaplogroup -> JannoYHaplogroup -> JannoYHaplogroup
+Ord)
+$(makeInstances ''JannoYHaplogroup "Y_Haplogroup")
+
+-- | A datatype for the Source_Tissue .janno column
+newtype JannoSourceTissue = JannoSourceTissue T.Text deriving (JannoSourceTissue -> JannoSourceTissue -> Bool
+(JannoSourceTissue -> JannoSourceTissue -> Bool)
+-> (JannoSourceTissue -> JannoSourceTissue -> Bool)
+-> Eq JannoSourceTissue
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoSourceTissue -> JannoSourceTissue -> Bool
+== :: JannoSourceTissue -> JannoSourceTissue -> Bool
+$c/= :: JannoSourceTissue -> JannoSourceTissue -> Bool
+/= :: JannoSourceTissue -> JannoSourceTissue -> Bool
+Eq)
+$(makeInstances ''JannoSourceTissue "Source_Tissue")
+
+-- | A datatype for the Nr_Libraries .janno column
+newtype JannoNrLibraries = JannoNrLibraries Int deriving (JannoNrLibraries -> JannoNrLibraries -> Bool
+(JannoNrLibraries -> JannoNrLibraries -> Bool)
+-> (JannoNrLibraries -> JannoNrLibraries -> Bool)
+-> Eq JannoNrLibraries
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoNrLibraries -> JannoNrLibraries -> Bool
+== :: JannoNrLibraries -> JannoNrLibraries -> Bool
+$c/= :: JannoNrLibraries -> JannoNrLibraries -> Bool
+/= :: JannoNrLibraries -> JannoNrLibraries -> Bool
+Eq, Eq JannoNrLibraries
+Eq JannoNrLibraries
+-> (JannoNrLibraries -> JannoNrLibraries -> Ordering)
+-> (JannoNrLibraries -> JannoNrLibraries -> Bool)
+-> (JannoNrLibraries -> JannoNrLibraries -> Bool)
+-> (JannoNrLibraries -> JannoNrLibraries -> Bool)
+-> (JannoNrLibraries -> JannoNrLibraries -> Bool)
+-> (JannoNrLibraries -> JannoNrLibraries -> JannoNrLibraries)
+-> (JannoNrLibraries -> JannoNrLibraries -> JannoNrLibraries)
+-> Ord JannoNrLibraries
+JannoNrLibraries -> JannoNrLibraries -> Bool
+JannoNrLibraries -> JannoNrLibraries -> Ordering
+JannoNrLibraries -> JannoNrLibraries -> JannoNrLibraries
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoNrLibraries -> JannoNrLibraries -> Ordering
+compare :: JannoNrLibraries -> JannoNrLibraries -> Ordering
+$c< :: JannoNrLibraries -> JannoNrLibraries -> Bool
+< :: JannoNrLibraries -> JannoNrLibraries -> Bool
+$c<= :: JannoNrLibraries -> JannoNrLibraries -> Bool
+<= :: JannoNrLibraries -> JannoNrLibraries -> Bool
+$c> :: JannoNrLibraries -> JannoNrLibraries -> Bool
+> :: JannoNrLibraries -> JannoNrLibraries -> Bool
+$c>= :: JannoNrLibraries -> JannoNrLibraries -> Bool
+>= :: JannoNrLibraries -> JannoNrLibraries -> Bool
+$cmax :: JannoNrLibraries -> JannoNrLibraries -> JannoNrLibraries
+max :: JannoNrLibraries -> JannoNrLibraries -> JannoNrLibraries
+$cmin :: JannoNrLibraries -> JannoNrLibraries -> JannoNrLibraries
+min :: JannoNrLibraries -> JannoNrLibraries -> JannoNrLibraries
+Ord, (forall x. JannoNrLibraries -> Rep JannoNrLibraries x)
+-> (forall x. Rep JannoNrLibraries x -> JannoNrLibraries)
+-> Generic JannoNrLibraries
+forall x. Rep JannoNrLibraries x -> JannoNrLibraries
+forall x. JannoNrLibraries -> Rep JannoNrLibraries x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoNrLibraries -> Rep JannoNrLibraries x
+from :: forall x. JannoNrLibraries -> Rep JannoNrLibraries x
+$cto :: forall x. Rep JannoNrLibraries x -> JannoNrLibraries
+to :: forall x. Rep JannoNrLibraries x -> JannoNrLibraries
+Generic)
+
+instance Makeable JannoNrLibraries where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoNrLibraries
+make Text
+x =
+        case Reader Int -> Reader Int
+forall a. Num a => Reader a -> Reader a
+T.signed Reader Int
+forall a. Integral a => Reader a
+T.decimal Text
+x of
+            Left [Char]
+e -> [Char] -> m JannoNrLibraries
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoNrLibraries) -> [Char] -> m JannoNrLibraries
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Nr_Libraries can not be converted to Int because " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+e
+            Right (Int
+num, Text
+"") ->
+                if Int
+num Int -> Int -> Bool
+forall a. Ord a => a -> a -> Bool
+< Int
+1
+                then [Char] -> m JannoNrLibraries
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoNrLibraries) -> [Char] -> m JannoNrLibraries
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Nr_Libraries " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+" lower than 1, which is impossible."
+                else JannoNrLibraries -> m JannoNrLibraries
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoNrLibraries -> m JannoNrLibraries)
+-> JannoNrLibraries -> m JannoNrLibraries
+forall a b. (a -> b) -> a -> b
+$ Int -> JannoNrLibraries
+JannoNrLibraries Int
+num
+            Right (Int
+_, Text
+rest) -> [Char] -> m JannoNrLibraries
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoNrLibraries) -> [Char] -> m JannoNrLibraries
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Nr_Libraries can not be converted to Int, because of a trailing " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+rest
+instance Show JannoNrLibraries where          show :: JannoNrLibraries -> [Char]
+show (JannoNrLibraries Int
+x) = Int -> [Char]
+forall a. Show a => a -> [Char]
+show Int
+x
+instance Csv.ToField JannoNrLibraries where   toField :: JannoNrLibraries -> Field
+toField (JannoNrLibraries Int
+x) = Int -> Field
+forall a. ToField a => a -> Field
+Csv.toField Int
+x
+instance Csv.FromField JannoNrLibraries where parseField :: Field -> Parser JannoNrLibraries
+parseField = [Char] -> Field -> Parser JannoNrLibraries
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Nr_Libraries"
+
+-- | A datatype for the Library_Names .janno column
+newtype JannoLibraryName = JannoLibraryName T.Text deriving (JannoLibraryName -> JannoLibraryName -> Bool
+(JannoLibraryName -> JannoLibraryName -> Bool)
+-> (JannoLibraryName -> JannoLibraryName -> Bool)
+-> Eq JannoLibraryName
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoLibraryName -> JannoLibraryName -> Bool
+== :: JannoLibraryName -> JannoLibraryName -> Bool
+$c/= :: JannoLibraryName -> JannoLibraryName -> Bool
+/= :: JannoLibraryName -> JannoLibraryName -> Bool
+Eq)
+$(makeInstances ''JannoLibraryName "Library_Names")
+
+-- | A datatype for the Capture_Type .janno column
+data JannoCaptureType =
+      Shotgun
+    | A1240K
+    | ArborComplete
+    | ArborPrimePlus
+    | ArborAncestralPlus
+    | TwistAncientDNA
+    | OtherCapture
+    | ReferenceGenome
+    deriving (JannoCaptureType -> JannoCaptureType -> Bool
+(JannoCaptureType -> JannoCaptureType -> Bool)
+-> (JannoCaptureType -> JannoCaptureType -> Bool)
+-> Eq JannoCaptureType
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoCaptureType -> JannoCaptureType -> Bool
+== :: JannoCaptureType -> JannoCaptureType -> Bool
+$c/= :: JannoCaptureType -> JannoCaptureType -> Bool
+/= :: JannoCaptureType -> JannoCaptureType -> Bool
+Eq, Eq JannoCaptureType
+Eq JannoCaptureType
+-> (JannoCaptureType -> JannoCaptureType -> Ordering)
+-> (JannoCaptureType -> JannoCaptureType -> Bool)
+-> (JannoCaptureType -> JannoCaptureType -> Bool)
+-> (JannoCaptureType -> JannoCaptureType -> Bool)
+-> (JannoCaptureType -> JannoCaptureType -> Bool)
+-> (JannoCaptureType -> JannoCaptureType -> JannoCaptureType)
+-> (JannoCaptureType -> JannoCaptureType -> JannoCaptureType)
+-> Ord JannoCaptureType
+JannoCaptureType -> JannoCaptureType -> Bool
+JannoCaptureType -> JannoCaptureType -> Ordering
+JannoCaptureType -> JannoCaptureType -> JannoCaptureType
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoCaptureType -> JannoCaptureType -> Ordering
+compare :: JannoCaptureType -> JannoCaptureType -> Ordering
+$c< :: JannoCaptureType -> JannoCaptureType -> Bool
+< :: JannoCaptureType -> JannoCaptureType -> Bool
+$c<= :: JannoCaptureType -> JannoCaptureType -> Bool
+<= :: JannoCaptureType -> JannoCaptureType -> Bool
+$c> :: JannoCaptureType -> JannoCaptureType -> Bool
+> :: JannoCaptureType -> JannoCaptureType -> Bool
+$c>= :: JannoCaptureType -> JannoCaptureType -> Bool
+>= :: JannoCaptureType -> JannoCaptureType -> Bool
+$cmax :: JannoCaptureType -> JannoCaptureType -> JannoCaptureType
+max :: JannoCaptureType -> JannoCaptureType -> JannoCaptureType
+$cmin :: JannoCaptureType -> JannoCaptureType -> JannoCaptureType
+min :: JannoCaptureType -> JannoCaptureType -> JannoCaptureType
+Ord, (forall x. JannoCaptureType -> Rep JannoCaptureType x)
+-> (forall x. Rep JannoCaptureType x -> JannoCaptureType)
+-> Generic JannoCaptureType
+forall x. Rep JannoCaptureType x -> JannoCaptureType
+forall x. JannoCaptureType -> Rep JannoCaptureType x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoCaptureType -> Rep JannoCaptureType x
+from :: forall x. JannoCaptureType -> Rep JannoCaptureType x
+$cto :: forall x. Rep JannoCaptureType x -> JannoCaptureType
+to :: forall x. Rep JannoCaptureType x -> JannoCaptureType
+Generic, Int -> JannoCaptureType
+JannoCaptureType -> Int
+JannoCaptureType -> [JannoCaptureType]
+JannoCaptureType -> JannoCaptureType
+JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
+JannoCaptureType
+-> JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
+(JannoCaptureType -> JannoCaptureType)
+-> (JannoCaptureType -> JannoCaptureType)
+-> (Int -> JannoCaptureType)
+-> (JannoCaptureType -> Int)
+-> (JannoCaptureType -> [JannoCaptureType])
+-> (JannoCaptureType -> JannoCaptureType -> [JannoCaptureType])
+-> (JannoCaptureType -> JannoCaptureType -> [JannoCaptureType])
+-> (JannoCaptureType
+    -> JannoCaptureType -> JannoCaptureType -> [JannoCaptureType])
+-> Enum JannoCaptureType
+forall a.
+(a -> a)
+-> (a -> a)
+-> (Int -> a)
+-> (a -> Int)
+-> (a -> [a])
+-> (a -> a -> [a])
+-> (a -> a -> [a])
+-> (a -> a -> a -> [a])
+-> Enum a
+$csucc :: JannoCaptureType -> JannoCaptureType
+succ :: JannoCaptureType -> JannoCaptureType
+$cpred :: JannoCaptureType -> JannoCaptureType
+pred :: JannoCaptureType -> JannoCaptureType
+$ctoEnum :: Int -> JannoCaptureType
+toEnum :: Int -> JannoCaptureType
+$cfromEnum :: JannoCaptureType -> Int
+fromEnum :: JannoCaptureType -> Int
+$cenumFrom :: JannoCaptureType -> [JannoCaptureType]
+enumFrom :: JannoCaptureType -> [JannoCaptureType]
+$cenumFromThen :: JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
+enumFromThen :: JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
+$cenumFromTo :: JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
+enumFromTo :: JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
+$cenumFromThenTo :: JannoCaptureType
+-> JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
+enumFromThenTo :: JannoCaptureType
+-> JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
+Enum, JannoCaptureType
+JannoCaptureType -> JannoCaptureType -> Bounded JannoCaptureType
+forall a. a -> a -> Bounded a
+$cminBound :: JannoCaptureType
+minBound :: JannoCaptureType
+$cmaxBound :: JannoCaptureType
+maxBound :: JannoCaptureType
+Bounded)
+
+instance Makeable JannoCaptureType where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoCaptureType
+make Text
+x
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"Shotgun"            = JannoCaptureType -> m JannoCaptureType
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoCaptureType
+Shotgun
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"1240K"              = JannoCaptureType -> m JannoCaptureType
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoCaptureType
+A1240K
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"ArborComplete"      = JannoCaptureType -> m JannoCaptureType
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoCaptureType
+ArborComplete
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"ArborPrimePlus"     = JannoCaptureType -> m JannoCaptureType
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoCaptureType
+ArborPrimePlus
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"ArborAncestralPlus" = JannoCaptureType -> m JannoCaptureType
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoCaptureType
+ArborAncestralPlus
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"TwistAncientDNA"    = JannoCaptureType -> m JannoCaptureType
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoCaptureType
+TwistAncientDNA
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"OtherCapture"       = JannoCaptureType -> m JannoCaptureType
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoCaptureType
+OtherCapture
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"ReferenceGenome"    = JannoCaptureType -> m JannoCaptureType
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoCaptureType
+ReferenceGenome
+        | Bool
+otherwise = [Char] -> m JannoCaptureType
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoCaptureType) -> [Char] -> m JannoCaptureType
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Capture_Type is set to " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+". " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++
+                             [Char]
+"That is not in the allowed set [Shotgun, 1240K, ArborComplete, ArborPrimePlus, ArborAncestralPlus, TwistAncientDNA, OtherCapture, ReferenceGenome]."
+instance Show JannoCaptureType where
+    show :: JannoCaptureType -> [Char]
+show JannoCaptureType
+Shotgun            = [Char]
+"Shotgun"
+    show JannoCaptureType
+A1240K             = [Char]
+"1240K"
+    show JannoCaptureType
+ArborComplete      = [Char]
+"ArborComplete"
+    show JannoCaptureType
+ArborPrimePlus     = [Char]
+"ArborPrimePlus"
+    show JannoCaptureType
+ArborAncestralPlus = [Char]
+"ArborAncestralPlus"
+    show JannoCaptureType
+TwistAncientDNA    = [Char]
+"TwistAncientDNA"
+    show JannoCaptureType
+OtherCapture       = [Char]
+"OtherCapture"
+    show JannoCaptureType
+ReferenceGenome    = [Char]
+"ReferenceGenome"
+instance Csv.ToField JannoCaptureType where   toField :: JannoCaptureType -> Field
+toField JannoCaptureType
+x = [Char] -> Field
+forall a. ToField a => a -> Field
+Csv.toField ([Char] -> Field) -> [Char] -> Field
+forall a b. (a -> b) -> a -> b
+$ JannoCaptureType -> [Char]
+forall a. Show a => a -> [Char]
+show JannoCaptureType
+x
+instance Csv.FromField JannoCaptureType where parseField :: Field -> Parser JannoCaptureType
+parseField = [Char] -> Field -> Parser JannoCaptureType
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Capture_Type"
+
+-- | A datatype for the UDG .janno column
+data JannoUDG =
+      Minus
+    | Half
+    | Plus
+    | Mixed
+    deriving (JannoUDG -> JannoUDG -> Bool
+(JannoUDG -> JannoUDG -> Bool)
+-> (JannoUDG -> JannoUDG -> Bool) -> Eq JannoUDG
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoUDG -> JannoUDG -> Bool
+== :: JannoUDG -> JannoUDG -> Bool
+$c/= :: JannoUDG -> JannoUDG -> Bool
+/= :: JannoUDG -> JannoUDG -> Bool
+Eq, Eq JannoUDG
+Eq JannoUDG
+-> (JannoUDG -> JannoUDG -> Ordering)
+-> (JannoUDG -> JannoUDG -> Bool)
+-> (JannoUDG -> JannoUDG -> Bool)
+-> (JannoUDG -> JannoUDG -> Bool)
+-> (JannoUDG -> JannoUDG -> Bool)
+-> (JannoUDG -> JannoUDG -> JannoUDG)
+-> (JannoUDG -> JannoUDG -> JannoUDG)
+-> Ord JannoUDG
+JannoUDG -> JannoUDG -> Bool
+JannoUDG -> JannoUDG -> Ordering
+JannoUDG -> JannoUDG -> JannoUDG
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoUDG -> JannoUDG -> Ordering
+compare :: JannoUDG -> JannoUDG -> Ordering
+$c< :: JannoUDG -> JannoUDG -> Bool
+< :: JannoUDG -> JannoUDG -> Bool
+$c<= :: JannoUDG -> JannoUDG -> Bool
+<= :: JannoUDG -> JannoUDG -> Bool
+$c> :: JannoUDG -> JannoUDG -> Bool
+> :: JannoUDG -> JannoUDG -> Bool
+$c>= :: JannoUDG -> JannoUDG -> Bool
+>= :: JannoUDG -> JannoUDG -> Bool
+$cmax :: JannoUDG -> JannoUDG -> JannoUDG
+max :: JannoUDG -> JannoUDG -> JannoUDG
+$cmin :: JannoUDG -> JannoUDG -> JannoUDG
+min :: JannoUDG -> JannoUDG -> JannoUDG
+Ord, (forall x. JannoUDG -> Rep JannoUDG x)
+-> (forall x. Rep JannoUDG x -> JannoUDG) -> Generic JannoUDG
+forall x. Rep JannoUDG x -> JannoUDG
+forall x. JannoUDG -> Rep JannoUDG x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoUDG -> Rep JannoUDG x
+from :: forall x. JannoUDG -> Rep JannoUDG x
+$cto :: forall x. Rep JannoUDG x -> JannoUDG
+to :: forall x. Rep JannoUDG x -> JannoUDG
+Generic, Int -> JannoUDG
+JannoUDG -> Int
+JannoUDG -> [JannoUDG]
+JannoUDG -> JannoUDG
+JannoUDG -> JannoUDG -> [JannoUDG]
+JannoUDG -> JannoUDG -> JannoUDG -> [JannoUDG]
+(JannoUDG -> JannoUDG)
+-> (JannoUDG -> JannoUDG)
+-> (Int -> JannoUDG)
+-> (JannoUDG -> Int)
+-> (JannoUDG -> [JannoUDG])
+-> (JannoUDG -> JannoUDG -> [JannoUDG])
+-> (JannoUDG -> JannoUDG -> [JannoUDG])
+-> (JannoUDG -> JannoUDG -> JannoUDG -> [JannoUDG])
+-> Enum JannoUDG
+forall a.
+(a -> a)
+-> (a -> a)
+-> (Int -> a)
+-> (a -> Int)
+-> (a -> [a])
+-> (a -> a -> [a])
+-> (a -> a -> [a])
+-> (a -> a -> a -> [a])
+-> Enum a
+$csucc :: JannoUDG -> JannoUDG
+succ :: JannoUDG -> JannoUDG
+$cpred :: JannoUDG -> JannoUDG
+pred :: JannoUDG -> JannoUDG
+$ctoEnum :: Int -> JannoUDG
+toEnum :: Int -> JannoUDG
+$cfromEnum :: JannoUDG -> Int
+fromEnum :: JannoUDG -> Int
+$cenumFrom :: JannoUDG -> [JannoUDG]
+enumFrom :: JannoUDG -> [JannoUDG]
+$cenumFromThen :: JannoUDG -> JannoUDG -> [JannoUDG]
+enumFromThen :: JannoUDG -> JannoUDG -> [JannoUDG]
+$cenumFromTo :: JannoUDG -> JannoUDG -> [JannoUDG]
+enumFromTo :: JannoUDG -> JannoUDG -> [JannoUDG]
+$cenumFromThenTo :: JannoUDG -> JannoUDG -> JannoUDG -> [JannoUDG]
+enumFromThenTo :: JannoUDG -> JannoUDG -> JannoUDG -> [JannoUDG]
+Enum, JannoUDG
+JannoUDG -> JannoUDG -> Bounded JannoUDG
+forall a. a -> a -> Bounded a
+$cminBound :: JannoUDG
+minBound :: JannoUDG
+$cmaxBound :: JannoUDG
+maxBound :: JannoUDG
+Bounded)
+
+instance Makeable JannoUDG where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoUDG
+make Text
+x
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"minus" = JannoUDG -> m JannoUDG
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoUDG
+Minus
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"half"  = JannoUDG -> m JannoUDG
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoUDG
+Half
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"plus"  = JannoUDG -> m JannoUDG
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoUDG
+Plus
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"mixed" = JannoUDG -> m JannoUDG
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoUDG
+Mixed
+        | Bool
+otherwise    = [Char] -> m JannoUDG
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoUDG) -> [Char] -> m JannoUDG
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"UDG is set to " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+". " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++
+                                [Char]
+"That is not in the allowed set [minus, half, plus, mixed]."
+instance Show JannoUDG where
+    show :: JannoUDG -> [Char]
+show JannoUDG
+Minus = [Char]
+"minus"
+    show JannoUDG
+Half  = [Char]
+"half"
+    show JannoUDG
+Plus  = [Char]
+"plus"
+    show JannoUDG
+Mixed = [Char]
+"mixed"
+instance Csv.ToField JannoUDG where   toField :: JannoUDG -> Field
+toField JannoUDG
+x = [Char] -> Field
+forall a. ToField a => a -> Field
+Csv.toField ([Char] -> Field) -> [Char] -> Field
+forall a b. (a -> b) -> a -> b
+$ JannoUDG -> [Char]
+forall a. Show a => a -> [Char]
+show JannoUDG
+x
+instance Csv.FromField JannoUDG where parseField :: Field -> Parser JannoUDG
+parseField = [Char] -> Field -> Parser JannoUDG
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"UDG"
+
+-- | A datatype for the Library_Built .janno column
+data JannoLibraryBuilt =
+      DS
+    | SS
+    | MixedSSDS
+    | Other -- the "other" option is deprecated and should be removed at some point
+    deriving (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+(JannoLibraryBuilt -> JannoLibraryBuilt -> Bool)
+-> (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool)
+-> Eq JannoLibraryBuilt
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+== :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+$c/= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+/= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+Eq, Eq JannoLibraryBuilt
+Eq JannoLibraryBuilt
+-> (JannoLibraryBuilt -> JannoLibraryBuilt -> Ordering)
+-> (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool)
+-> (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool)
+-> (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool)
+-> (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool)
+-> (JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt)
+-> (JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt)
+-> Ord JannoLibraryBuilt
+JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+JannoLibraryBuilt -> JannoLibraryBuilt -> Ordering
+JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoLibraryBuilt -> JannoLibraryBuilt -> Ordering
+compare :: JannoLibraryBuilt -> JannoLibraryBuilt -> Ordering
+$c< :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+< :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+$c<= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+<= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+$c> :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+> :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+$c>= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+>= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+$cmax :: JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt
+max :: JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt
+$cmin :: JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt
+min :: JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt
+Ord, (forall x. JannoLibraryBuilt -> Rep JannoLibraryBuilt x)
+-> (forall x. Rep JannoLibraryBuilt x -> JannoLibraryBuilt)
+-> Generic JannoLibraryBuilt
+forall x. Rep JannoLibraryBuilt x -> JannoLibraryBuilt
+forall x. JannoLibraryBuilt -> Rep JannoLibraryBuilt x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoLibraryBuilt -> Rep JannoLibraryBuilt x
+from :: forall x. JannoLibraryBuilt -> Rep JannoLibraryBuilt x
+$cto :: forall x. Rep JannoLibraryBuilt x -> JannoLibraryBuilt
+to :: forall x. Rep JannoLibraryBuilt x -> JannoLibraryBuilt
+Generic, Int -> JannoLibraryBuilt
+JannoLibraryBuilt -> Int
+JannoLibraryBuilt -> [JannoLibraryBuilt]
+JannoLibraryBuilt -> JannoLibraryBuilt
+JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
+JannoLibraryBuilt
+-> JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
+(JannoLibraryBuilt -> JannoLibraryBuilt)
+-> (JannoLibraryBuilt -> JannoLibraryBuilt)
+-> (Int -> JannoLibraryBuilt)
+-> (JannoLibraryBuilt -> Int)
+-> (JannoLibraryBuilt -> [JannoLibraryBuilt])
+-> (JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt])
+-> (JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt])
+-> (JannoLibraryBuilt
+    -> JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt])
+-> Enum JannoLibraryBuilt
+forall a.
+(a -> a)
+-> (a -> a)
+-> (Int -> a)
+-> (a -> Int)
+-> (a -> [a])
+-> (a -> a -> [a])
+-> (a -> a -> [a])
+-> (a -> a -> a -> [a])
+-> Enum a
+$csucc :: JannoLibraryBuilt -> JannoLibraryBuilt
+succ :: JannoLibraryBuilt -> JannoLibraryBuilt
+$cpred :: JannoLibraryBuilt -> JannoLibraryBuilt
+pred :: JannoLibraryBuilt -> JannoLibraryBuilt
+$ctoEnum :: Int -> JannoLibraryBuilt
+toEnum :: Int -> JannoLibraryBuilt
+$cfromEnum :: JannoLibraryBuilt -> Int
+fromEnum :: JannoLibraryBuilt -> Int
+$cenumFrom :: JannoLibraryBuilt -> [JannoLibraryBuilt]
+enumFrom :: JannoLibraryBuilt -> [JannoLibraryBuilt]
+$cenumFromThen :: JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
+enumFromThen :: JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
+$cenumFromTo :: JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
+enumFromTo :: JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
+$cenumFromThenTo :: JannoLibraryBuilt
+-> JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
+enumFromThenTo :: JannoLibraryBuilt
+-> JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
+Enum, JannoLibraryBuilt
+JannoLibraryBuilt -> JannoLibraryBuilt -> Bounded JannoLibraryBuilt
+forall a. a -> a -> Bounded a
+$cminBound :: JannoLibraryBuilt
+minBound :: JannoLibraryBuilt
+$cmaxBound :: JannoLibraryBuilt
+maxBound :: JannoLibraryBuilt
+Bounded)
+
+instance Makeable JannoLibraryBuilt where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoLibraryBuilt
+make Text
+x
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"ds"    = JannoLibraryBuilt -> m JannoLibraryBuilt
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoLibraryBuilt
+DS
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"ss"    = JannoLibraryBuilt -> m JannoLibraryBuilt
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoLibraryBuilt
+SS
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"mixed" = JannoLibraryBuilt -> m JannoLibraryBuilt
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoLibraryBuilt
+MixedSSDS
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"other" = JannoLibraryBuilt -> m JannoLibraryBuilt
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoLibraryBuilt
+Other
+        | Bool
+otherwise    = [Char] -> m JannoLibraryBuilt
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoLibraryBuilt) -> [Char] -> m JannoLibraryBuilt
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Library_Built is set to " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+". " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++
+                                [Char]
+"That is not in the allowed set [ds, ss, mixed]."
+instance Show JannoLibraryBuilt where
+    show :: JannoLibraryBuilt -> [Char]
+show JannoLibraryBuilt
+DS        = [Char]
+"ds"
+    show JannoLibraryBuilt
+SS        = [Char]
+"ss"
+    show JannoLibraryBuilt
+MixedSSDS = [Char]
+"mixed"
+    show JannoLibraryBuilt
+Other     = [Char]
+"other"
+instance Csv.ToField JannoLibraryBuilt where   toField :: JannoLibraryBuilt -> Field
+toField JannoLibraryBuilt
+x = [Char] -> Field
+forall a. ToField a => a -> Field
+Csv.toField ([Char] -> Field) -> [Char] -> Field
+forall a b. (a -> b) -> a -> b
+$ JannoLibraryBuilt -> [Char]
+forall a. Show a => a -> [Char]
+show JannoLibraryBuilt
+x
+instance Csv.FromField JannoLibraryBuilt where parseField :: Field -> Parser JannoLibraryBuilt
+parseField = [Char] -> Field -> Parser JannoLibraryBuilt
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Library_Built"
+
+-- | A datatype for the Genotype_Ploidy .janno column
+data JannoGenotypePloidy =
+      Diploid
+    | Haploid
+    deriving (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+(JannoGenotypePloidy -> JannoGenotypePloidy -> Bool)
+-> (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool)
+-> Eq JannoGenotypePloidy
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+== :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+$c/= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+/= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+Eq, Eq JannoGenotypePloidy
+Eq JannoGenotypePloidy
+-> (JannoGenotypePloidy -> JannoGenotypePloidy -> Ordering)
+-> (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool)
+-> (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool)
+-> (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool)
+-> (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool)
+-> (JannoGenotypePloidy
+    -> JannoGenotypePloidy -> JannoGenotypePloidy)
+-> (JannoGenotypePloidy
+    -> JannoGenotypePloidy -> JannoGenotypePloidy)
+-> Ord JannoGenotypePloidy
+JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+JannoGenotypePloidy -> JannoGenotypePloidy -> Ordering
+JannoGenotypePloidy -> JannoGenotypePloidy -> JannoGenotypePloidy
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoGenotypePloidy -> JannoGenotypePloidy -> Ordering
+compare :: JannoGenotypePloidy -> JannoGenotypePloidy -> Ordering
+$c< :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+< :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+$c<= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+<= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+$c> :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+> :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+$c>= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+>= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+$cmax :: JannoGenotypePloidy -> JannoGenotypePloidy -> JannoGenotypePloidy
+max :: JannoGenotypePloidy -> JannoGenotypePloidy -> JannoGenotypePloidy
+$cmin :: JannoGenotypePloidy -> JannoGenotypePloidy -> JannoGenotypePloidy
+min :: JannoGenotypePloidy -> JannoGenotypePloidy -> JannoGenotypePloidy
+Ord, (forall x. JannoGenotypePloidy -> Rep JannoGenotypePloidy x)
+-> (forall x. Rep JannoGenotypePloidy x -> JannoGenotypePloidy)
+-> Generic JannoGenotypePloidy
+forall x. Rep JannoGenotypePloidy x -> JannoGenotypePloidy
+forall x. JannoGenotypePloidy -> Rep JannoGenotypePloidy x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoGenotypePloidy -> Rep JannoGenotypePloidy x
+from :: forall x. JannoGenotypePloidy -> Rep JannoGenotypePloidy x
+$cto :: forall x. Rep JannoGenotypePloidy x -> JannoGenotypePloidy
+to :: forall x. Rep JannoGenotypePloidy x -> JannoGenotypePloidy
+Generic, Int -> JannoGenotypePloidy
+JannoGenotypePloidy -> Int
+JannoGenotypePloidy -> [JannoGenotypePloidy]
+JannoGenotypePloidy -> JannoGenotypePloidy
+JannoGenotypePloidy -> JannoGenotypePloidy -> [JannoGenotypePloidy]
+JannoGenotypePloidy
+-> JannoGenotypePloidy
+-> JannoGenotypePloidy
+-> [JannoGenotypePloidy]
+(JannoGenotypePloidy -> JannoGenotypePloidy)
+-> (JannoGenotypePloidy -> JannoGenotypePloidy)
+-> (Int -> JannoGenotypePloidy)
+-> (JannoGenotypePloidy -> Int)
+-> (JannoGenotypePloidy -> [JannoGenotypePloidy])
+-> (JannoGenotypePloidy
+    -> JannoGenotypePloidy -> [JannoGenotypePloidy])
+-> (JannoGenotypePloidy
+    -> JannoGenotypePloidy -> [JannoGenotypePloidy])
+-> (JannoGenotypePloidy
+    -> JannoGenotypePloidy
+    -> JannoGenotypePloidy
+    -> [JannoGenotypePloidy])
+-> Enum JannoGenotypePloidy
+forall a.
+(a -> a)
+-> (a -> a)
+-> (Int -> a)
+-> (a -> Int)
+-> (a -> [a])
+-> (a -> a -> [a])
+-> (a -> a -> [a])
+-> (a -> a -> a -> [a])
+-> Enum a
+$csucc :: JannoGenotypePloidy -> JannoGenotypePloidy
+succ :: JannoGenotypePloidy -> JannoGenotypePloidy
+$cpred :: JannoGenotypePloidy -> JannoGenotypePloidy
+pred :: JannoGenotypePloidy -> JannoGenotypePloidy
+$ctoEnum :: Int -> JannoGenotypePloidy
+toEnum :: Int -> JannoGenotypePloidy
+$cfromEnum :: JannoGenotypePloidy -> Int
+fromEnum :: JannoGenotypePloidy -> Int
+$cenumFrom :: JannoGenotypePloidy -> [JannoGenotypePloidy]
+enumFrom :: JannoGenotypePloidy -> [JannoGenotypePloidy]
+$cenumFromThen :: JannoGenotypePloidy -> JannoGenotypePloidy -> [JannoGenotypePloidy]
+enumFromThen :: JannoGenotypePloidy -> JannoGenotypePloidy -> [JannoGenotypePloidy]
+$cenumFromTo :: JannoGenotypePloidy -> JannoGenotypePloidy -> [JannoGenotypePloidy]
+enumFromTo :: JannoGenotypePloidy -> JannoGenotypePloidy -> [JannoGenotypePloidy]
+$cenumFromThenTo :: JannoGenotypePloidy
+-> JannoGenotypePloidy
+-> JannoGenotypePloidy
+-> [JannoGenotypePloidy]
+enumFromThenTo :: JannoGenotypePloidy
+-> JannoGenotypePloidy
+-> JannoGenotypePloidy
+-> [JannoGenotypePloidy]
+Enum, JannoGenotypePloidy
+JannoGenotypePloidy
+-> JannoGenotypePloidy -> Bounded JannoGenotypePloidy
+forall a. a -> a -> Bounded a
+$cminBound :: JannoGenotypePloidy
+minBound :: JannoGenotypePloidy
+$cmaxBound :: JannoGenotypePloidy
+maxBound :: JannoGenotypePloidy
+Bounded)
+
+instance Makeable JannoGenotypePloidy where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoGenotypePloidy
+make Text
+x
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"diploid" = JannoGenotypePloidy -> m JannoGenotypePloidy
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoGenotypePloidy
+Diploid
+        | Text
+x Text -> Text -> Bool
+forall a. Eq a => a -> a -> Bool
+== Text
+"haploid" = JannoGenotypePloidy -> m JannoGenotypePloidy
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure JannoGenotypePloidy
+Haploid
+        | Bool
+otherwise      = [Char] -> m JannoGenotypePloidy
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoGenotypePloidy)
+-> [Char] -> m JannoGenotypePloidy
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Genotype_Ploidy is set to " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+". " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++
+                                  [Char]
+"That is not in the allowed set [diploid, haploid]."
+instance Show JannoGenotypePloidy where
+    show :: JannoGenotypePloidy -> [Char]
+show JannoGenotypePloidy
+Diploid = [Char]
+"diploid"
+    show JannoGenotypePloidy
+Haploid = [Char]
+"haploid"
+instance Csv.ToField JannoGenotypePloidy where   toField :: JannoGenotypePloidy -> Field
+toField JannoGenotypePloidy
+x = [Char] -> Field
+forall a. ToField a => a -> Field
+Csv.toField ([Char] -> Field) -> [Char] -> Field
+forall a b. (a -> b) -> a -> b
+$ JannoGenotypePloidy -> [Char]
+forall a. Show a => a -> [Char]
+show JannoGenotypePloidy
+x
+instance Csv.FromField JannoGenotypePloidy where parseField :: Field -> Parser JannoGenotypePloidy
+parseField = [Char] -> Field -> Parser JannoGenotypePloidy
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Genotype_Ploidy"
+
+-- | A datatype for the Genotype_Ploidy .janno column
+newtype JannoDataPreparationPipelineURL = JannoDataPreparationPipelineURL T.Text deriving (JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+(JannoDataPreparationPipelineURL
+ -> JannoDataPreparationPipelineURL -> Bool)
+-> (JannoDataPreparationPipelineURL
+    -> JannoDataPreparationPipelineURL -> Bool)
+-> Eq JannoDataPreparationPipelineURL
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+== :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+$c/= :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+/= :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+Eq, Eq JannoDataPreparationPipelineURL
+Eq JannoDataPreparationPipelineURL
+-> (JannoDataPreparationPipelineURL
+    -> JannoDataPreparationPipelineURL -> Ordering)
+-> (JannoDataPreparationPipelineURL
+    -> JannoDataPreparationPipelineURL -> Bool)
+-> (JannoDataPreparationPipelineURL
+    -> JannoDataPreparationPipelineURL -> Bool)
+-> (JannoDataPreparationPipelineURL
+    -> JannoDataPreparationPipelineURL -> Bool)
+-> (JannoDataPreparationPipelineURL
+    -> JannoDataPreparationPipelineURL -> Bool)
+-> (JannoDataPreparationPipelineURL
+    -> JannoDataPreparationPipelineURL
+    -> JannoDataPreparationPipelineURL)
+-> (JannoDataPreparationPipelineURL
+    -> JannoDataPreparationPipelineURL
+    -> JannoDataPreparationPipelineURL)
+-> Ord JannoDataPreparationPipelineURL
+JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Ordering
+JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Ordering
+compare :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Ordering
+$c< :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+< :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+$c<= :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+<= :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+$c> :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+> :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+$c>= :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+>= :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL -> Bool
+$cmax :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL
+max :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL
+$cmin :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL
+min :: JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL
+-> JannoDataPreparationPipelineURL
+Ord, (forall x.
+ JannoDataPreparationPipelineURL
+ -> Rep JannoDataPreparationPipelineURL x)
+-> (forall x.
+    Rep JannoDataPreparationPipelineURL x
+    -> JannoDataPreparationPipelineURL)
+-> Generic JannoDataPreparationPipelineURL
+forall x.
+Rep JannoDataPreparationPipelineURL x
+-> JannoDataPreparationPipelineURL
+forall x.
+JannoDataPreparationPipelineURL
+-> Rep JannoDataPreparationPipelineURL x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x.
+JannoDataPreparationPipelineURL
+-> Rep JannoDataPreparationPipelineURL x
+from :: forall x.
+JannoDataPreparationPipelineURL
+-> Rep JannoDataPreparationPipelineURL x
+$cto :: forall x.
+Rep JannoDataPreparationPipelineURL x
+-> JannoDataPreparationPipelineURL
+to :: forall x.
+Rep JannoDataPreparationPipelineURL x
+-> JannoDataPreparationPipelineURL
+Generic)
+
+instance Makeable JannoDataPreparationPipelineURL where
+    make :: forall (m :: * -> *).
+MonadFail m =>
+Text -> m JannoDataPreparationPipelineURL
+make Text
+x
+        | [Char] -> Bool
+isURIReference (Text -> [Char]
+T.unpack Text
+x) = JannoDataPreparationPipelineURL
+-> m JannoDataPreparationPipelineURL
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoDataPreparationPipelineURL
+ -> m JannoDataPreparationPipelineURL)
+-> JannoDataPreparationPipelineURL
+-> m JannoDataPreparationPipelineURL
+forall a b. (a -> b) -> a -> b
+$ Text -> JannoDataPreparationPipelineURL
+JannoDataPreparationPipelineURL Text
+x
+        | Bool
+otherwise                   = [Char] -> m JannoDataPreparationPipelineURL
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDataPreparationPipelineURL)
+-> [Char] -> m JannoDataPreparationPipelineURL
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Data_Preparation_Pipeline_URL " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+" is not a well structured URI."
+instance Show JannoDataPreparationPipelineURL where          show :: JannoDataPreparationPipelineURL -> [Char]
+show (JannoDataPreparationPipelineURL Text
+x) = Text -> [Char]
+T.unpack Text
+x
+instance Csv.ToField JannoDataPreparationPipelineURL where   toField :: JannoDataPreparationPipelineURL -> Field
+toField (JannoDataPreparationPipelineURL Text
+x) = Text -> Field
+forall a. ToField a => a -> Field
+Csv.toField Text
+x
+instance Csv.FromField JannoDataPreparationPipelineURL where parseField :: Field -> Parser JannoDataPreparationPipelineURL
+parseField = [Char] -> Field -> Parser JannoDataPreparationPipelineURL
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Data_Preparation_Pipeline_URL"
+
+-- | A datatype for the Endogenous .janno column
+newtype JannoEndogenous = JannoEndogenous Double deriving (JannoEndogenous -> JannoEndogenous -> Bool
+(JannoEndogenous -> JannoEndogenous -> Bool)
+-> (JannoEndogenous -> JannoEndogenous -> Bool)
+-> Eq JannoEndogenous
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoEndogenous -> JannoEndogenous -> Bool
+== :: JannoEndogenous -> JannoEndogenous -> Bool
+$c/= :: JannoEndogenous -> JannoEndogenous -> Bool
+/= :: JannoEndogenous -> JannoEndogenous -> Bool
+Eq, Eq JannoEndogenous
+Eq JannoEndogenous
+-> (JannoEndogenous -> JannoEndogenous -> Ordering)
+-> (JannoEndogenous -> JannoEndogenous -> Bool)
+-> (JannoEndogenous -> JannoEndogenous -> Bool)
+-> (JannoEndogenous -> JannoEndogenous -> Bool)
+-> (JannoEndogenous -> JannoEndogenous -> Bool)
+-> (JannoEndogenous -> JannoEndogenous -> JannoEndogenous)
+-> (JannoEndogenous -> JannoEndogenous -> JannoEndogenous)
+-> Ord JannoEndogenous
+JannoEndogenous -> JannoEndogenous -> Bool
+JannoEndogenous -> JannoEndogenous -> Ordering
+JannoEndogenous -> JannoEndogenous -> JannoEndogenous
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoEndogenous -> JannoEndogenous -> Ordering
+compare :: JannoEndogenous -> JannoEndogenous -> Ordering
+$c< :: JannoEndogenous -> JannoEndogenous -> Bool
+< :: JannoEndogenous -> JannoEndogenous -> Bool
+$c<= :: JannoEndogenous -> JannoEndogenous -> Bool
+<= :: JannoEndogenous -> JannoEndogenous -> Bool
+$c> :: JannoEndogenous -> JannoEndogenous -> Bool
+> :: JannoEndogenous -> JannoEndogenous -> Bool
+$c>= :: JannoEndogenous -> JannoEndogenous -> Bool
+>= :: JannoEndogenous -> JannoEndogenous -> Bool
+$cmax :: JannoEndogenous -> JannoEndogenous -> JannoEndogenous
+max :: JannoEndogenous -> JannoEndogenous -> JannoEndogenous
+$cmin :: JannoEndogenous -> JannoEndogenous -> JannoEndogenous
+min :: JannoEndogenous -> JannoEndogenous -> JannoEndogenous
+Ord, (forall x. JannoEndogenous -> Rep JannoEndogenous x)
+-> (forall x. Rep JannoEndogenous x -> JannoEndogenous)
+-> Generic JannoEndogenous
+forall x. Rep JannoEndogenous x -> JannoEndogenous
+forall x. JannoEndogenous -> Rep JannoEndogenous x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoEndogenous -> Rep JannoEndogenous x
+from :: forall x. JannoEndogenous -> Rep JannoEndogenous x
+$cto :: forall x. Rep JannoEndogenous x -> JannoEndogenous
+to :: forall x. Rep JannoEndogenous x -> JannoEndogenous
+Generic)
+
+instance Makeable JannoEndogenous where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoEndogenous
+make Text
+x =
+        case Reader Double
+T.double Text
+x of
+            Left [Char]
+e -> [Char] -> m JannoEndogenous
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoEndogenous) -> [Char] -> m JannoEndogenous
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Endogenous can not be converted to Double because " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+e
+            Right (Double
+num, Text
+"") ->
+                if Double
+num Double -> Double -> Bool
+forall a. Ord a => a -> a -> Bool
+>= Double
+0 Bool -> Bool -> Bool
+&& Double
+num Double -> Double -> Bool
+forall a. Ord a => a -> a -> Bool
+<= Double
+100
+                then JannoEndogenous -> m JannoEndogenous
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (Double -> JannoEndogenous
+JannoEndogenous Double
+num)
+                else [Char] -> m JannoEndogenous
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoEndogenous) -> [Char] -> m JannoEndogenous
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Endogenous " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+" not between 0 and 100."
+            Right (Double
+_, Text
+rest) -> [Char] -> m JannoEndogenous
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoEndogenous) -> [Char] -> m JannoEndogenous
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Endogenous can not be converted to Double, because of a trailing " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+rest
+instance Show JannoEndogenous where          show :: JannoEndogenous -> [Char]
+show (JannoEndogenous Double
+x) = Double -> [Char]
+forall a. Show a => a -> [Char]
+show Double
+x
+instance Csv.ToField JannoEndogenous where   toField :: JannoEndogenous -> Field
+toField (JannoEndogenous Double
+x) = Double -> Field
+forall a. ToField a => a -> Field
+Csv.toField Double
+x
+instance Csv.FromField JannoEndogenous where parseField :: Field -> Parser JannoEndogenous
+parseField = [Char] -> Field -> Parser JannoEndogenous
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Endogenous"
+
+-- | A datatype for the Nr_SNPs .janno column
+newtype JannoNrSNPs = JannoNrSNPs Int deriving (JannoNrSNPs -> JannoNrSNPs -> Bool
+(JannoNrSNPs -> JannoNrSNPs -> Bool)
+-> (JannoNrSNPs -> JannoNrSNPs -> Bool) -> Eq JannoNrSNPs
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoNrSNPs -> JannoNrSNPs -> Bool
+== :: JannoNrSNPs -> JannoNrSNPs -> Bool
+$c/= :: JannoNrSNPs -> JannoNrSNPs -> Bool
+/= :: JannoNrSNPs -> JannoNrSNPs -> Bool
+Eq, Eq JannoNrSNPs
+Eq JannoNrSNPs
+-> (JannoNrSNPs -> JannoNrSNPs -> Ordering)
+-> (JannoNrSNPs -> JannoNrSNPs -> Bool)
+-> (JannoNrSNPs -> JannoNrSNPs -> Bool)
+-> (JannoNrSNPs -> JannoNrSNPs -> Bool)
+-> (JannoNrSNPs -> JannoNrSNPs -> Bool)
+-> (JannoNrSNPs -> JannoNrSNPs -> JannoNrSNPs)
+-> (JannoNrSNPs -> JannoNrSNPs -> JannoNrSNPs)
+-> Ord JannoNrSNPs
+JannoNrSNPs -> JannoNrSNPs -> Bool
+JannoNrSNPs -> JannoNrSNPs -> Ordering
+JannoNrSNPs -> JannoNrSNPs -> JannoNrSNPs
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoNrSNPs -> JannoNrSNPs -> Ordering
+compare :: JannoNrSNPs -> JannoNrSNPs -> Ordering
+$c< :: JannoNrSNPs -> JannoNrSNPs -> Bool
+< :: JannoNrSNPs -> JannoNrSNPs -> Bool
+$c<= :: JannoNrSNPs -> JannoNrSNPs -> Bool
+<= :: JannoNrSNPs -> JannoNrSNPs -> Bool
+$c> :: JannoNrSNPs -> JannoNrSNPs -> Bool
+> :: JannoNrSNPs -> JannoNrSNPs -> Bool
+$c>= :: JannoNrSNPs -> JannoNrSNPs -> Bool
+>= :: JannoNrSNPs -> JannoNrSNPs -> Bool
+$cmax :: JannoNrSNPs -> JannoNrSNPs -> JannoNrSNPs
+max :: JannoNrSNPs -> JannoNrSNPs -> JannoNrSNPs
+$cmin :: JannoNrSNPs -> JannoNrSNPs -> JannoNrSNPs
+min :: JannoNrSNPs -> JannoNrSNPs -> JannoNrSNPs
+Ord, (forall x. JannoNrSNPs -> Rep JannoNrSNPs x)
+-> (forall x. Rep JannoNrSNPs x -> JannoNrSNPs)
+-> Generic JannoNrSNPs
+forall x. Rep JannoNrSNPs x -> JannoNrSNPs
+forall x. JannoNrSNPs -> Rep JannoNrSNPs x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoNrSNPs -> Rep JannoNrSNPs x
+from :: forall x. JannoNrSNPs -> Rep JannoNrSNPs x
+$cto :: forall x. Rep JannoNrSNPs x -> JannoNrSNPs
+to :: forall x. Rep JannoNrSNPs x -> JannoNrSNPs
+Generic)
+
+instance Makeable JannoNrSNPs where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoNrSNPs
+make Text
+x =
+        case Reader Int -> Reader Int
+forall a. Num a => Reader a -> Reader a
+T.signed Reader Int
+forall a. Integral a => Reader a
+T.decimal Text
+x of
+            Left [Char]
+e -> [Char] -> m JannoNrSNPs
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoNrSNPs) -> [Char] -> m JannoNrSNPs
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Nr_SNPs can not be converted to Int because " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+e
+            Right (Int
+num, Text
+"") ->
+                if Int
+num Int -> Int -> Bool
+forall a. Ord a => a -> a -> Bool
+< Int
+1
+                then [Char] -> m JannoNrSNPs
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoNrSNPs) -> [Char] -> m JannoNrSNPs
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Nr_SNPs " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+" lower than 1, which is not meaningful."
+                else JannoNrSNPs -> m JannoNrSNPs
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoNrSNPs -> m JannoNrSNPs) -> JannoNrSNPs -> m JannoNrSNPs
+forall a b. (a -> b) -> a -> b
+$ Int -> JannoNrSNPs
+JannoNrSNPs Int
+num
+            Right (Int
+_, Text
+rest) -> [Char] -> m JannoNrSNPs
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoNrSNPs) -> [Char] -> m JannoNrSNPs
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Nr_SNPs can not be converted to Int, because of a trailing " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+rest
+instance Show JannoNrSNPs where          show :: JannoNrSNPs -> [Char]
+show (JannoNrSNPs Int
+x) = Int -> [Char]
+forall a. Show a => a -> [Char]
+show Int
+x
+instance Csv.ToField JannoNrSNPs where   toField :: JannoNrSNPs -> Field
+toField (JannoNrSNPs Int
+x) = Int -> Field
+forall a. ToField a => a -> Field
+Csv.toField Int
+x
+instance Csv.FromField JannoNrSNPs where parseField :: Field -> Parser JannoNrSNPs
+parseField = [Char] -> Field -> Parser JannoNrSNPs
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Nr_SNPs"
+
+-- | A datatype for the Coverage_on_Target_SNPs .janno column
+newtype JannoCoverageOnTargets = JannoCoverageOnTargets Double deriving (JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+(JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool)
+-> (JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool)
+-> Eq JannoCoverageOnTargets
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+== :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+$c/= :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+/= :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+Eq, Eq JannoCoverageOnTargets
+Eq JannoCoverageOnTargets
+-> (JannoCoverageOnTargets -> JannoCoverageOnTargets -> Ordering)
+-> (JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool)
+-> (JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool)
+-> (JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool)
+-> (JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool)
+-> (JannoCoverageOnTargets
+    -> JannoCoverageOnTargets -> JannoCoverageOnTargets)
+-> (JannoCoverageOnTargets
+    -> JannoCoverageOnTargets -> JannoCoverageOnTargets)
+-> Ord JannoCoverageOnTargets
+JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+JannoCoverageOnTargets -> JannoCoverageOnTargets -> Ordering
+JannoCoverageOnTargets
+-> JannoCoverageOnTargets -> JannoCoverageOnTargets
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Ordering
+compare :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Ordering
+$c< :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+< :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+$c<= :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+<= :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+$c> :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+> :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+$c>= :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+>= :: JannoCoverageOnTargets -> JannoCoverageOnTargets -> Bool
+$cmax :: JannoCoverageOnTargets
+-> JannoCoverageOnTargets -> JannoCoverageOnTargets
+max :: JannoCoverageOnTargets
+-> JannoCoverageOnTargets -> JannoCoverageOnTargets
+$cmin :: JannoCoverageOnTargets
+-> JannoCoverageOnTargets -> JannoCoverageOnTargets
+min :: JannoCoverageOnTargets
+-> JannoCoverageOnTargets -> JannoCoverageOnTargets
+Ord, (forall x. JannoCoverageOnTargets -> Rep JannoCoverageOnTargets x)
+-> (forall x.
+    Rep JannoCoverageOnTargets x -> JannoCoverageOnTargets)
+-> Generic JannoCoverageOnTargets
+forall x. Rep JannoCoverageOnTargets x -> JannoCoverageOnTargets
+forall x. JannoCoverageOnTargets -> Rep JannoCoverageOnTargets x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoCoverageOnTargets -> Rep JannoCoverageOnTargets x
+from :: forall x. JannoCoverageOnTargets -> Rep JannoCoverageOnTargets x
+$cto :: forall x. Rep JannoCoverageOnTargets x -> JannoCoverageOnTargets
+to :: forall x. Rep JannoCoverageOnTargets x -> JannoCoverageOnTargets
+Generic)
+
+instance Makeable JannoCoverageOnTargets where
+    make :: forall (m :: * -> *).
+MonadFail m =>
+Text -> m JannoCoverageOnTargets
+make Text
+x =
+        case Reader Double
+T.double Text
+x of
+            Left [Char]
+e -> [Char] -> m JannoCoverageOnTargets
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoCoverageOnTargets)
+-> [Char] -> m JannoCoverageOnTargets
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Coverage_on_Target_SNPs can not be converted to Double because " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+e
+            Right (Double
+num, Text
+"") ->  JannoCoverageOnTargets -> m JannoCoverageOnTargets
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (Double -> JannoCoverageOnTargets
+JannoCoverageOnTargets Double
+num)
+            Right (Double
+_, Text
+rest) -> [Char] -> m JannoCoverageOnTargets
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoCoverageOnTargets)
+-> [Char] -> m JannoCoverageOnTargets
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Coverage_on_Target_SNPs can not be converted to Double, because of a trailing " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+rest
+instance Show JannoCoverageOnTargets where          show :: JannoCoverageOnTargets -> [Char]
+show (JannoCoverageOnTargets Double
+x) = Double -> [Char]
+forall a. Show a => a -> [Char]
+show Double
+x
+instance Csv.ToField JannoCoverageOnTargets where   toField :: JannoCoverageOnTargets -> Field
+toField (JannoCoverageOnTargets Double
+x) = Double -> Field
+forall a. ToField a => a -> Field
+Csv.toField Double
+x
+instance Csv.FromField JannoCoverageOnTargets where parseField :: Field -> Parser JannoCoverageOnTargets
+parseField = [Char] -> Field -> Parser JannoCoverageOnTargets
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Coverage_on_Target_SNPs"
+
+-- | A datatype for the Damage .janno column
+newtype JannoDamage = JannoDamage Double deriving (JannoDamage -> JannoDamage -> Bool
+(JannoDamage -> JannoDamage -> Bool)
+-> (JannoDamage -> JannoDamage -> Bool) -> Eq JannoDamage
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoDamage -> JannoDamage -> Bool
+== :: JannoDamage -> JannoDamage -> Bool
+$c/= :: JannoDamage -> JannoDamage -> Bool
+/= :: JannoDamage -> JannoDamage -> Bool
+Eq, Eq JannoDamage
+Eq JannoDamage
+-> (JannoDamage -> JannoDamage -> Ordering)
+-> (JannoDamage -> JannoDamage -> Bool)
+-> (JannoDamage -> JannoDamage -> Bool)
+-> (JannoDamage -> JannoDamage -> Bool)
+-> (JannoDamage -> JannoDamage -> Bool)
+-> (JannoDamage -> JannoDamage -> JannoDamage)
+-> (JannoDamage -> JannoDamage -> JannoDamage)
+-> Ord JannoDamage
+JannoDamage -> JannoDamage -> Bool
+JannoDamage -> JannoDamage -> Ordering
+JannoDamage -> JannoDamage -> JannoDamage
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoDamage -> JannoDamage -> Ordering
+compare :: JannoDamage -> JannoDamage -> Ordering
+$c< :: JannoDamage -> JannoDamage -> Bool
+< :: JannoDamage -> JannoDamage -> Bool
+$c<= :: JannoDamage -> JannoDamage -> Bool
+<= :: JannoDamage -> JannoDamage -> Bool
+$c> :: JannoDamage -> JannoDamage -> Bool
+> :: JannoDamage -> JannoDamage -> Bool
+$c>= :: JannoDamage -> JannoDamage -> Bool
+>= :: JannoDamage -> JannoDamage -> Bool
+$cmax :: JannoDamage -> JannoDamage -> JannoDamage
+max :: JannoDamage -> JannoDamage -> JannoDamage
+$cmin :: JannoDamage -> JannoDamage -> JannoDamage
+min :: JannoDamage -> JannoDamage -> JannoDamage
+Ord, (forall x. JannoDamage -> Rep JannoDamage x)
+-> (forall x. Rep JannoDamage x -> JannoDamage)
+-> Generic JannoDamage
+forall x. Rep JannoDamage x -> JannoDamage
+forall x. JannoDamage -> Rep JannoDamage x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JannoDamage -> Rep JannoDamage x
+from :: forall x. JannoDamage -> Rep JannoDamage x
+$cto :: forall x. Rep JannoDamage x -> JannoDamage
+to :: forall x. Rep JannoDamage x -> JannoDamage
+Generic)
+
+instance Makeable JannoDamage where
+    make :: forall (m :: * -> *). MonadFail m => Text -> m JannoDamage
+make Text
+x =
+        case Reader Double
+T.double Text
+x of
+            Left [Char]
+e -> [Char] -> m JannoDamage
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDamage) -> [Char] -> m JannoDamage
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Damage can not be converted to Double because " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+e
+            Right (Double
+num, Text
+"") ->
+                if Double
+num Double -> Double -> Bool
+forall a. Ord a => a -> a -> Bool
+>= Double
+0 Bool -> Bool -> Bool
+&& Double
+num Double -> Double -> Bool
+forall a. Ord a => a -> a -> Bool
+<= Double
+100
+                then JannoDamage -> m JannoDamage
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (Double -> JannoDamage
+JannoDamage Double
+num)
+                else [Char] -> m JannoDamage
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDamage) -> [Char] -> m JannoDamage
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Damage " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+x [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ [Char]
+" not between 0 and 100."
+            Right (Double
+_, Text
+rest) -> [Char] -> m JannoDamage
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JannoDamage) -> [Char] -> m JannoDamage
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"Damage can not be converted to Double, because of a trailing " [Char] -> [Char] -> [Char]
+forall a. [a] -> [a] -> [a]
+++ Text -> [Char]
+forall a. Show a => a -> [Char]
+show Text
+rest
+instance Show JannoDamage where          show :: JannoDamage -> [Char]
+show (JannoDamage Double
+x) = Double -> [Char]
+forall a. Show a => a -> [Char]
+show Double
+x
+instance Csv.ToField JannoDamage where   toField :: JannoDamage -> Field
+toField (JannoDamage Double
+x) = Double -> Field
+forall a. ToField a => a -> Field
+Csv.toField Double
+x
+instance Csv.FromField JannoDamage where parseField :: Field -> Parser JannoDamage
+parseField = [Char] -> Field -> Parser JannoDamage
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Damage"
+
+-- | A datatype for the Contamination .janno column
+newtype JannoContamination = JannoContamination T.Text deriving (JannoContamination -> JannoContamination -> Bool
+(JannoContamination -> JannoContamination -> Bool)
+-> (JannoContamination -> JannoContamination -> Bool)
+-> Eq JannoContamination
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoContamination -> JannoContamination -> Bool
+== :: JannoContamination -> JannoContamination -> Bool
+$c/= :: JannoContamination -> JannoContamination -> Bool
+/= :: JannoContamination -> JannoContamination -> Bool
+Eq)
+$(makeInstances ''JannoContamination "Contamination")
+
+-- | A datatype for the Contamination_Err .janno column
+newtype JannoContaminationErr = JannoContaminationErr T.Text deriving (JannoContaminationErr -> JannoContaminationErr -> Bool
+(JannoContaminationErr -> JannoContaminationErr -> Bool)
+-> (JannoContaminationErr -> JannoContaminationErr -> Bool)
+-> Eq JannoContaminationErr
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoContaminationErr -> JannoContaminationErr -> Bool
+== :: JannoContaminationErr -> JannoContaminationErr -> Bool
+$c/= :: JannoContaminationErr -> JannoContaminationErr -> Bool
+/= :: JannoContaminationErr -> JannoContaminationErr -> Bool
+Eq)
+$(makeInstances ''JannoContaminationErr "Contamination_Err")
+
+-- | A datatype for the Contamination_Meas .janno column
+newtype JannoContaminationMeas = JannoContaminationMeas T.Text deriving (JannoContaminationMeas -> JannoContaminationMeas -> Bool
+(JannoContaminationMeas -> JannoContaminationMeas -> Bool)
+-> (JannoContaminationMeas -> JannoContaminationMeas -> Bool)
+-> Eq JannoContaminationMeas
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoContaminationMeas -> JannoContaminationMeas -> Bool
+== :: JannoContaminationMeas -> JannoContaminationMeas -> Bool
+$c/= :: JannoContaminationMeas -> JannoContaminationMeas -> Bool
+/= :: JannoContaminationMeas -> JannoContaminationMeas -> Bool
+Eq)
+$(makeInstances ''JannoContaminationMeas "Contamination_Meas")
+
+-- | A datatype for the Contamination_Note .janno column
+newtype JannoContaminationNote = JannoContaminationNote T.Text deriving (JannoContaminationNote -> JannoContaminationNote -> Bool
+(JannoContaminationNote -> JannoContaminationNote -> Bool)
+-> (JannoContaminationNote -> JannoContaminationNote -> Bool)
+-> Eq JannoContaminationNote
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoContaminationNote -> JannoContaminationNote -> Bool
+== :: JannoContaminationNote -> JannoContaminationNote -> Bool
+$c/= :: JannoContaminationNote -> JannoContaminationNote -> Bool
+/= :: JannoContaminationNote -> JannoContaminationNote -> Bool
+Eq)
+$(makeInstances ''JannoContaminationNote "Contamination_Note")
+
+-- | A datatype for the Genetic_Source_Accession_IDs .janno column
+data JannoGeneticSourceAccessionID =
+      INSDCProject T.Text
+    | INSDCStudy T.Text
+    | INSDCBioSample T.Text
+    | INSDCSample T.Text
+    | INSDCExperiment T.Text
+    | INSDCRun T.Text
+    | INSDCAnalysis T.Text
+    | OtherID T.Text
+    deriving (JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+(JannoGeneticSourceAccessionID
+ -> JannoGeneticSourceAccessionID -> Bool)
+-> (JannoGeneticSourceAccessionID
+    -> JannoGeneticSourceAccessionID -> Bool)
+-> Eq JannoGeneticSourceAccessionID
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+== :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+$c/= :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+/= :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+Eq, Eq JannoGeneticSourceAccessionID
+Eq JannoGeneticSourceAccessionID
+-> (JannoGeneticSourceAccessionID
+    -> JannoGeneticSourceAccessionID -> Ordering)
+-> (JannoGeneticSourceAccessionID
+    -> JannoGeneticSourceAccessionID -> Bool)
+-> (JannoGeneticSourceAccessionID
+    -> JannoGeneticSourceAccessionID -> Bool)
+-> (JannoGeneticSourceAccessionID
+    -> JannoGeneticSourceAccessionID -> Bool)
+-> (JannoGeneticSourceAccessionID
+    -> JannoGeneticSourceAccessionID -> Bool)
+-> (JannoGeneticSourceAccessionID
+    -> JannoGeneticSourceAccessionID -> JannoGeneticSourceAccessionID)
+-> (JannoGeneticSourceAccessionID
+    -> JannoGeneticSourceAccessionID -> JannoGeneticSourceAccessionID)
+-> Ord JannoGeneticSourceAccessionID
+JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Ordering
+JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> JannoGeneticSourceAccessionID
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Ordering
+compare :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Ordering
+$c< :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+< :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+$c<= :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+<= :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+$c> :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+> :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+$c>= :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+>= :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> Bool
+$cmax :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> JannoGeneticSourceAccessionID
+max :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> JannoGeneticSourceAccessionID
+$cmin :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> JannoGeneticSourceAccessionID
+min :: JannoGeneticSourceAccessionID
+-> JannoGeneticSourceAccessionID -> JannoGeneticSourceAccessionID
+Ord, (forall x.
+ JannoGeneticSourceAccessionID
+ -> Rep JannoGeneticSourceAccessionID x)
+-> (forall x.
+    Rep JannoGeneticSourceAccessionID x
+    -> JannoGeneticSourceAccessionID)
+-> Generic JannoGeneticSourceAccessionID
+forall x.
+Rep JannoGeneticSourceAccessionID x
+-> JannoGeneticSourceAccessionID
+forall x.
+JannoGeneticSourceAccessionID
+-> Rep JannoGeneticSourceAccessionID x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x.
+JannoGeneticSourceAccessionID
+-> Rep JannoGeneticSourceAccessionID x
+from :: forall x.
+JannoGeneticSourceAccessionID
+-> Rep JannoGeneticSourceAccessionID x
+$cto :: forall x.
+Rep JannoGeneticSourceAccessionID x
+-> JannoGeneticSourceAccessionID
+to :: forall x.
+Rep JannoGeneticSourceAccessionID x
+-> JannoGeneticSourceAccessionID
+Generic)
+
+instance Makeable JannoGeneticSourceAccessionID where
+    make :: forall (m :: * -> *).
+MonadFail m =>
+Text -> m JannoGeneticSourceAccessionID
+make Text
+x
+        | (Text -> [Char]
+T.unpack Text
+x) [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"PRJ[EDN][A-Z][0-9]+"  :: String) = JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID)
+-> JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a b. (a -> b) -> a -> b
+$ Text -> JannoGeneticSourceAccessionID
+INSDCProject Text
+x
+        | (Text -> [Char]
+T.unpack Text
+x) [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"[EDS]RP[0-9]{6,}"     :: String) = JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID)
+-> JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a b. (a -> b) -> a -> b
+$ Text -> JannoGeneticSourceAccessionID
+INSDCStudy Text
+x
+        | (Text -> [Char]
+T.unpack Text
+x) [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"SAM[EDN][A-Z]?[0-9]+" :: String) = JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID)
+-> JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a b. (a -> b) -> a -> b
+$ Text -> JannoGeneticSourceAccessionID
+INSDCBioSample Text
+x
+        | (Text -> [Char]
+T.unpack Text
+x) [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"[EDS]RS[0-9]{6,}"     :: String) = JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID)
+-> JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a b. (a -> b) -> a -> b
+$ Text -> JannoGeneticSourceAccessionID
+INSDCSample Text
+x
+        | (Text -> [Char]
+T.unpack Text
+x) [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"[EDS]RX[0-9]{6,}"     :: String) = JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID)
+-> JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a b. (a -> b) -> a -> b
+$ Text -> JannoGeneticSourceAccessionID
+INSDCExperiment Text
+x
+        | (Text -> [Char]
+T.unpack Text
+x) [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"[EDS]RR[0-9]{6,}"     :: String) = JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID)
+-> JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a b. (a -> b) -> a -> b
+$ Text -> JannoGeneticSourceAccessionID
+INSDCRun Text
+x
+        | (Text -> [Char]
+T.unpack Text
+x) [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"[EDS]RZ[0-9]{6,}"     :: String) = JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID)
+-> JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a b. (a -> b) -> a -> b
+$ Text -> JannoGeneticSourceAccessionID
+INSDCAnalysis Text
+x
+        | Bool
+otherwise                                   = JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID)
+-> JannoGeneticSourceAccessionID -> m JannoGeneticSourceAccessionID
+forall a b. (a -> b) -> a -> b
+$ Text -> JannoGeneticSourceAccessionID
+OtherID Text
+x
+instance Show JannoGeneticSourceAccessionID where
+    show :: JannoGeneticSourceAccessionID -> [Char]
+show (INSDCProject Text
+x)    = Text -> [Char]
+T.unpack Text
+x
+    show (INSDCStudy Text
+x)      = Text -> [Char]
+T.unpack Text
+x
+    show (INSDCBioSample Text
+x)  = Text -> [Char]
+T.unpack Text
+x
+    show (INSDCSample Text
+x)     = Text -> [Char]
+T.unpack Text
+x
+    show (INSDCExperiment Text
+x) = Text -> [Char]
+T.unpack Text
+x
+    show (INSDCRun Text
+x)        = Text -> [Char]
+T.unpack Text
+x
+    show (INSDCAnalysis Text
+x)   = Text -> [Char]
+T.unpack Text
+x
+    show (OtherID Text
+x)         = Text -> [Char]
+T.unpack Text
+x
+instance Csv.ToField JannoGeneticSourceAccessionID where   toField :: JannoGeneticSourceAccessionID -> Field
+toField JannoGeneticSourceAccessionID
+x  = [Char] -> Field
+forall a. ToField a => a -> Field
+Csv.toField ([Char] -> Field) -> [Char] -> Field
+forall a b. (a -> b) -> a -> b
+$ JannoGeneticSourceAccessionID -> [Char]
+forall a. Show a => a -> [Char]
+show JannoGeneticSourceAccessionID
+x
+instance Csv.FromField JannoGeneticSourceAccessionID where parseField :: Field -> Parser JannoGeneticSourceAccessionID
+parseField = [Char] -> Field -> Parser JannoGeneticSourceAccessionID
+forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+[Char] -> Field -> m a
+parseTypeCSV [Char]
+"Genetic_Source_Accession_IDs"
+
+-- | A datatype for the Primary_Contact .janno column
+newtype JannoPrimaryContact = JannoPrimaryContact T.Text deriving (JannoPrimaryContact -> JannoPrimaryContact -> Bool
+(JannoPrimaryContact -> JannoPrimaryContact -> Bool)
+-> (JannoPrimaryContact -> JannoPrimaryContact -> Bool)
+-> Eq JannoPrimaryContact
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoPrimaryContact -> JannoPrimaryContact -> Bool
+== :: JannoPrimaryContact -> JannoPrimaryContact -> Bool
+$c/= :: JannoPrimaryContact -> JannoPrimaryContact -> Bool
+/= :: JannoPrimaryContact -> JannoPrimaryContact -> Bool
+Eq)
+$(makeInstances ''JannoPrimaryContact "Primary_Contact")
+
+-- | A datatype for the Publication .janno column
+newtype JannoPublication = JannoPublication T.Text deriving (JannoPublication -> JannoPublication -> Bool
+(JannoPublication -> JannoPublication -> Bool)
+-> (JannoPublication -> JannoPublication -> Bool)
+-> Eq JannoPublication
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoPublication -> JannoPublication -> Bool
+== :: JannoPublication -> JannoPublication -> Bool
+$c/= :: JannoPublication -> JannoPublication -> Bool
+/= :: JannoPublication -> JannoPublication -> Bool
+Eq, Eq JannoPublication
+Eq JannoPublication
+-> (JannoPublication -> JannoPublication -> Ordering)
+-> (JannoPublication -> JannoPublication -> Bool)
+-> (JannoPublication -> JannoPublication -> Bool)
+-> (JannoPublication -> JannoPublication -> Bool)
+-> (JannoPublication -> JannoPublication -> Bool)
+-> (JannoPublication -> JannoPublication -> JannoPublication)
+-> (JannoPublication -> JannoPublication -> JannoPublication)
+-> Ord JannoPublication
+JannoPublication -> JannoPublication -> Bool
+JannoPublication -> JannoPublication -> Ordering
+JannoPublication -> JannoPublication -> JannoPublication
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JannoPublication -> JannoPublication -> Ordering
+compare :: JannoPublication -> JannoPublication -> Ordering
+$c< :: JannoPublication -> JannoPublication -> Bool
+< :: JannoPublication -> JannoPublication -> Bool
+$c<= :: JannoPublication -> JannoPublication -> Bool
+<= :: JannoPublication -> JannoPublication -> Bool
+$c> :: JannoPublication -> JannoPublication -> Bool
+> :: JannoPublication -> JannoPublication -> Bool
+$c>= :: JannoPublication -> JannoPublication -> Bool
+>= :: JannoPublication -> JannoPublication -> Bool
+$cmax :: JannoPublication -> JannoPublication -> JannoPublication
+max :: JannoPublication -> JannoPublication -> JannoPublication
+$cmin :: JannoPublication -> JannoPublication -> JannoPublication
+min :: JannoPublication -> JannoPublication -> JannoPublication
+Ord)
+$(makeInstances ''JannoPublication "Publication")
+
+-- | A datatype for the Note .janno column
+newtype JannoComment = JannoComment T.Text deriving (JannoComment -> JannoComment -> Bool
+(JannoComment -> JannoComment -> Bool)
+-> (JannoComment -> JannoComment -> Bool) -> Eq JannoComment
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoComment -> JannoComment -> Bool
+== :: JannoComment -> JannoComment -> Bool
+$c/= :: JannoComment -> JannoComment -> Bool
+/= :: JannoComment -> JannoComment -> Bool
+Eq)
+$(makeInstances ''JannoComment "Note")
+
+-- | A datatype for the Keywords .janno column
+newtype JannoKeyword = JannoKeyword T.Text deriving (JannoKeyword -> JannoKeyword -> Bool
+(JannoKeyword -> JannoKeyword -> Bool)
+-> (JannoKeyword -> JannoKeyword -> Bool) -> Eq JannoKeyword
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JannoKeyword -> JannoKeyword -> Bool
+== :: JannoKeyword -> JannoKeyword -> Bool
+$c/= :: JannoKeyword -> JannoKeyword -> Bool
+/= :: JannoKeyword -> JannoKeyword -> Bool
+Eq)
+$(makeInstances ''JannoKeyword "Keywords")
+
\ No newline at end of file diff --git a/src/Poseidon.ColumnTypesUtils.html b/src/Poseidon.ColumnTypesUtils.html new file mode 100644 index 00000000..7536e156 --- /dev/null +++ b/src/Poseidon.ColumnTypesUtils.html @@ -0,0 +1,111 @@ +
{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE TemplateHaskell     #-}
+
+module Poseidon.ColumnTypesUtils where
+
+import           Data.ByteString     as S
+import qualified Data.Csv            as Csv
+import qualified Data.Text           as T
+import qualified Data.Text.Encoding  as T
+import           Data.Typeable       (Typeable)
+import           Language.Haskell.TH (Con (..), Dec (..), DecsQ, Info (..),
+                                      Name, conE, conP, conT, mkName, reify,
+                                      varE, varP)
+
+-- a typeclass for types with smart constructors
+class Makeable a where
+    make :: MonadFail m => T.Text -> m a
+
+-- helper functions
+parseTypeCSV :: forall a m. (MonadFail m, Makeable a, Typeable a) => String -> S.ByteString -> m a
+parseTypeCSV :: forall a (m :: * -> *).
+(MonadFail m, Makeable a, Typeable a) =>
+String -> ByteString -> m a
+parseTypeCSV String
+colname ByteString
+x = case ByteString -> Either UnicodeException Text
+T.decodeUtf8' ByteString
+x of
+        Left UnicodeException
+e  -> String -> m a
+forall a. String -> m a
+forall (m :: * -> *) a. MonadFail m => String -> m a
+fail (String -> m a) -> String -> m a
+forall a b. (a -> b) -> a -> b
+$ UnicodeException -> String
+forall a. Show a => a -> String
+show UnicodeException
+e String -> String -> String
+forall a. [a] -> [a] -> [a]
+++ String
+" in column " String -> String -> String
+forall a. [a] -> [a] -> [a]
+++ String
+colname
+        Right Text
+t -> Text -> m a
+forall a (m :: * -> *). (Makeable a, MonadFail m) => Text -> m a
+forall (m :: * -> *). MonadFail m => Text -> m a
+make Text
+t
+
+-- template haskell function to generate repetitive instances
+makeInstances :: Name -> String -> DecsQ
+makeInstances :: Name -> String -> DecsQ
+makeInstances Name
+name String
+col = do
+    TyConI (NewtypeD Cxt
+_ Name
+_ [TyVarBndr ()]
+_ Maybe Kind
+_ (NormalC Name
+conName [BangType]
+_) [DerivClause]
+_) <- Name -> Q Info
+reify Name
+name
+    let x :: Name
+x = String -> Name
+mkName String
+"x"
+    [d|
+      instance Makeable $(Name -> Q Kind
+forall (m :: * -> *). Quote m => Name -> m Kind
+conT Name
+name) where      make txt = return $ $(Name -> Q Exp
+forall (m :: * -> *). Quote m => Name -> m Exp
+conE Name
+conName) txt
+      instance Show $(Name -> Q Kind
+forall (m :: * -> *). Quote m => Name -> m Kind
+conT Name
+name) where          show $(Name -> [Q Pat] -> Q Pat
+forall (m :: * -> *). Quote m => Name -> [m Pat] -> m Pat
+conP Name
+conName [Name -> Q Pat
+forall (m :: * -> *). Quote m => Name -> m Pat
+varP Name
+x]) = T.unpack $(Name -> Q Exp
+forall (m :: * -> *). Quote m => Name -> m Exp
+varE Name
+x)
+      instance Csv.ToField $(Name -> Q Kind
+forall (m :: * -> *). Quote m => Name -> m Kind
+conT Name
+name) where   toField $(Name -> [Q Pat] -> Q Pat
+forall (m :: * -> *). Quote m => Name -> [m Pat] -> m Pat
+conP Name
+conName [Name -> Q Pat
+forall (m :: * -> *). Quote m => Name -> m Pat
+varP Name
+x]) = Csv.toField $(Name -> Q Exp
+forall (m :: * -> *). Quote m => Name -> m Exp
+varE Name
+x)
+      instance Csv.FromField $(Name -> Q Kind
+forall (m :: * -> *). Quote m => Name -> m Kind
+conT Name
+name) where parseField = parseTypeCSV col
+      |]
+
\ No newline at end of file diff --git a/src/Poseidon.Contributor.html b/src/Poseidon.Contributor.html index ec4f5be0..fe4405f2 100644 --- a/src/Poseidon.Contributor.html +++ b/src/Poseidon.Contributor.html @@ -28,7 +28,7 @@ , ContributorSpec -> Maybe ORCID contributorORCID :: Maybe ORCID -- ^ the ORCID of a contributor } - deriving (Int -> ContributorSpec -> ShowS + deriving (Int -> ContributorSpec -> ShowS [ContributorSpec] -> ShowS ContributorSpec -> [Char] (Int -> ContributorSpec -> ShowS) @@ -43,7 +43,7 @@ show :: ContributorSpec -> [Char] $cshowList :: [ContributorSpec] -> ShowS showList :: [ContributorSpec] -> ShowS -Show, ContributorSpec -> ContributorSpec -> Bool +Show, ContributorSpec -> ContributorSpec -> Bool (ContributorSpec -> ContributorSpec -> Bool) -> (ContributorSpec -> ContributorSpec -> Bool) -> Eq ContributorSpec @@ -55,8 +55,8 @@ Eq) -- | To facilitate automatic parsing of ContributorSpec from JSON files -instance FromJSON ContributorSpec where - parseJSON :: Value -> Parser ContributorSpec +instance FromJSON ContributorSpec where + parseJSON :: Value -> Parser ContributorSpec parseJSON = [Char] -> (Object -> Parser ContributorSpec) -> Value @@ -69,15 +69,15 @@ -> Value -> Parser ContributorSpec forall a b. (a -> b) -> a -> b -$ \Object -v -> [Char] -> [Char] -> Maybe ORCID -> ContributorSpec +$ \Object +v -> [Char] -> [Char] -> Maybe ORCID -> ContributorSpec ContributorSpec ([Char] -> [Char] -> Maybe ORCID -> ContributorSpec) -> Parser [Char] -> Parser ([Char] -> Maybe ORCID -> ContributorSpec) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v Object -> Key -> Parser [Char] +v Object -> Key -> Parser [Char] forall a. FromJSON a => Object -> Key -> Parser a .: Key "name" @@ -86,7 +86,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser [Char] +v Object -> Key -> Parser [Char] forall a. FromJSON a => Object -> Key -> Parser a .: Key "email" @@ -95,38 +95,38 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe ORCID) +v Object -> Key -> Parser (Maybe ORCID) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "orcid" -instance ToJSON ContributorSpec where +instance ToJSON ContributorSpec where -- this encodes directly to a bytestring Builder - toJSON :: ContributorSpec -> Value -toJSON ContributorSpec -x = [Pair] -> Value + toJSON :: ContributorSpec -> Value +toJSON ContributorSpec +x = [Pair] -> Value object [ Key "name" Key -> [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ContributorSpec -> [Char] contributorName ContributorSpec -x +x , Key "email" Key -> [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ContributorSpec -> [Char] contributorEmail ContributorSpec -x +x , Key "orcid" Key -> Maybe ORCID -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ContributorSpec -> Maybe ORCID contributorORCID ContributorSpec -x +x ] contributorSpecParser :: P.Parser [ContributorSpec] @@ -157,8 +157,8 @@ oneContributorSpecParser :: P.Parser ContributorSpec oneContributorSpecParser :: ParsecT [Char] () Identity ContributorSpec oneContributorSpecParser = do - [Char] -name <- ParsecT [Char] () Identity Char + [Char] +name <- ParsecT [Char] () Identity Char -> ParsecT [Char] () Identity Char -> ParsecT [Char] () Identity [Char] -> ParsecT [Char] () Identity [Char] @@ -194,8 +194,8 @@ Char -> ParsecT s u m Char P.char Char ']'))) - [Char] -email <- ParsecT [Char] () Identity Char + [Char] +email <- ParsecT [Char] () Identity Char -> ParsecT [Char] () Identity Char -> ParsecT [Char] () Identity [Char] -> ParsecT [Char] () Identity [Char] @@ -237,8 +237,8 @@ forall (m :: * -> *) a. Monad m => a -> m a return ([Char] -> [Char] -> Maybe ORCID -> ContributorSpec ContributorSpec [Char] -name [Char] -email Maybe ORCID +name [Char] +email Maybe ORCID forall a. Maybe a Nothing) @@ -250,7 +250,7 @@ , ORCID -> Char _orcidChecksum :: Char } - deriving (Int -> ORCID -> ShowS + deriving (Int -> ORCID -> ShowS [ORCID] -> ShowS ORCID -> [Char] (Int -> ORCID -> ShowS) @@ -263,7 +263,7 @@ show :: ORCID -> [Char] $cshowList :: [ORCID] -> ShowS showList :: [ORCID] -> ShowS -Show, ORCID -> ORCID -> Bool +Show, ORCID -> ORCID -> Bool (ORCID -> ORCID -> Bool) -> (ORCID -> ORCID -> Bool) -> Eq ORCID forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: ORCID -> ORCID -> Bool @@ -272,10 +272,10 @@ /= :: ORCID -> ORCID -> Bool Eq) -instance FromJSON ORCID where - parseJSON :: Value -> Parser ORCID -parseJSON (String Text -s) = case Parsec [Char] () ORCID +instance FromJSON ORCID where + parseJSON :: Value -> Parser ORCID +parseJSON (String Text +s) = case Parsec [Char] () ORCID -> () -> [Char] -> [Char] -> Either ParseError ORCID forall s t u a. Stream s Identity t => @@ -284,32 +284,32 @@ parseORCID () [Char] "" (Text -> [Char] unpack Text -s) of - Left ParseError -err -> [Char] -> Parser ORCID +s) of + Left ParseError +err -> [Char] -> Parser ORCID forall a. [Char] -> Parser a forall (m :: * -> *) a. MonadFail m => [Char] -> m a fail ([Char] -> Parser ORCID) -> [Char] -> Parser ORCID forall a b. (a -> b) -> a -> b $ ParseError -> [Char] showParsecErr ParseError -err - Right ORCID -x -> ORCID -> Parser ORCID +err + Right ORCID +x -> ORCID -> Parser ORCID forall a. a -> Parser a forall (f :: * -> *) a. Applicative f => a -> f a pure ORCID -x +x parseJSON Value _ = Parser ORCID forall a. Parser a forall (m :: * -> *) a. MonadPlus m => m a mzero -instance ToJSON ORCID where - toJSON :: ORCID -> Value -toJSON ORCID -x = Text -> Value +instance ToJSON ORCID where + toJSON :: ORCID -> Value +toJSON ORCID +x = Text -> Value String (Text -> Value) -> Text -> Value forall a b. (a -> b) -> a -> b $ [Char] -> Text @@ -317,26 +317,26 @@ forall a b. (a -> b) -> a -> b $ ORCID -> [Char] renderORCID ORCID -x +x parseORCID :: P.Parser ORCID parseORCID :: Parsec [Char] () ORCID parseORCID = do - ORCID -orcid <- (\[Char] -a [Char] -b [Char] -c [Char] -d Char -e -> [Char] -> Char -> ORCID + ORCID +orcid <- (\[Char] +a [Char] +b [Char] +c [Char] +d Char +e -> [Char] -> Char -> ORCID ORCID ([[Char]] -> [Char] forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [[Char] -a,[Char] -b,[Char] -c,[Char] -d]) Char -e) ([Char] -> [Char] -> [Char] -> [Char] -> Char -> ORCID) +a,[Char] +b,[Char] +c,[Char] +d]) Char +e) ([Char] -> [Char] -> [Char] -> [Char] -> Char -> ORCID) -> ParsecT [Char] () Identity [Char] -> ParsecT [Char] () Identity ([Char] -> [Char] -> [Char] -> Char -> ORCID) @@ -344,7 +344,7 @@ <$> ParsecT [Char] () Identity [Char] forall {u}. ParsecT [Char] u Identity [Char] -fourBlock ParsecT +fourBlock ParsecT [Char] () Identity ([Char] -> [Char] -> [Char] -> Char -> ORCID) -> ParsecT [Char] () Identity Char -> ParsecT @@ -355,7 +355,7 @@ forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* ParsecT [Char] () Identity Char forall {u}. ParsecT [Char] u Identity Char -m +m ParsecT [Char] () Identity ([Char] -> [Char] -> [Char] -> Char -> ORCID) -> ParsecT [Char] () Identity [Char] @@ -366,7 +366,7 @@ forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> ParsecT [Char] () Identity [Char] forall {u}. ParsecT [Char] u Identity [Char] -fourBlock ParsecT [Char] () Identity ([Char] -> [Char] -> Char -> ORCID) +fourBlock ParsecT [Char] () Identity ([Char] -> [Char] -> Char -> ORCID) -> ParsecT [Char] () Identity Char -> ParsecT [Char] () Identity ([Char] -> [Char] -> Char -> ORCID) forall a b. @@ -375,7 +375,7 @@ forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* ParsecT [Char] () Identity Char forall {u}. ParsecT [Char] u Identity Char -m +m ParsecT [Char] () Identity ([Char] -> [Char] -> Char -> ORCID) -> ParsecT [Char] () Identity [Char] -> ParsecT [Char] () Identity ([Char] -> Char -> ORCID) @@ -385,7 +385,7 @@ forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> ParsecT [Char] () Identity [Char] forall {u}. ParsecT [Char] u Identity [Char] -fourBlock ParsecT [Char] () Identity ([Char] -> Char -> ORCID) +fourBlock ParsecT [Char] () Identity ([Char] -> Char -> ORCID) -> ParsecT [Char] () Identity Char -> ParsecT [Char] () Identity ([Char] -> Char -> ORCID) forall a b. @@ -394,7 +394,7 @@ forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* ParsecT [Char] () Identity Char forall {u}. ParsecT [Char] u Identity Char -m +m ParsecT [Char] () Identity ([Char] -> Char -> ORCID) -> ParsecT [Char] () Identity [Char] -> ParsecT [Char] () Identity (Char -> ORCID) @@ -404,7 +404,7 @@ forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> ParsecT [Char] () Identity [Char] forall {u}. ParsecT [Char] u Identity [Char] -threeBlock ParsecT [Char] () Identity (Char -> ORCID) +threeBlock ParsecT [Char] () Identity (Char -> ORCID) -> ParsecT [Char] () Identity Char -> Parsec [Char] () ORCID forall a b. ParsecT [Char] () Identity (a -> b) @@ -412,7 +412,7 @@ forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> ParsecT [Char] () Identity Char forall {u}. ParsecT [Char] u Identity Char -checksumDigit Parsec [Char] () ORCID +checksumDigit Parsec [Char] () ORCID -> ParsecT [Char] () Identity () -> Parsec [Char] () ORCID forall a b. ParsecT [Char] () Identity a @@ -427,7 +427,7 @@ forall (f :: * -> *). Alternative f => Bool -> f () guard (ORCID -> Bool validateORCID ORCID -orcid) ParsecT [Char] () Identity () +orcid) ParsecT [Char] () Identity () -> [Char] -> ParsecT [Char] () Identity () forall s u (m :: * -> *) a. ParsecT s u m a -> [Char] -> ParsecT s u m a @@ -437,10 +437,10 @@ forall a. a -> ParsecT [Char] () Identity a forall (m :: * -> *) a. Monad m => a -> m a return ORCID -orcid +orcid where - fourBlock :: ParsecT [Char] u Identity [Char] -fourBlock = Int + fourBlock :: ParsecT [Char] u Identity [Char] +fourBlock = Int -> ParsecT [Char] u Identity Char -> ParsecT [Char] u Identity [Char] forall s (m :: * -> *) t u a. @@ -450,15 +450,15 @@ 4 ParsecT [Char] u Identity Char forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char P.digit - m :: ParsecT [Char] u Identity Char -m = [Char] -> ParsecT [Char] u Identity Char + m :: ParsecT [Char] u Identity Char +m = [Char] -> ParsecT [Char] u Identity Char forall s (m :: * -> *) u. Stream s m Char => [Char] -> ParsecT s u m Char P.oneOf [Char] "-" - threeBlock :: ParsecT [Char] u Identity [Char] -threeBlock = Int + threeBlock :: ParsecT [Char] u Identity [Char] +threeBlock = Int -> ParsecT [Char] u Identity Char -> ParsecT [Char] u Identity [Char] forall s (m :: * -> *) t u a. @@ -468,8 +468,8 @@ 3 ParsecT [Char] u Identity Char forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char P.digit - checksumDigit :: ParsecT [Char] u Identity Char -checksumDigit = ParsecT [Char] u Identity Char + checksumDigit :: ParsecT [Char] u Identity Char +checksumDigit = ParsecT [Char] u Identity Char forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char P.digit ParsecT [Char] u Identity Char -> ParsecT [Char] u Identity Char -> ParsecT [Char] u Identity Char @@ -484,106 +484,106 @@ validateORCID :: ORCID -> Bool validateORCID :: ORCID -> Bool -validateORCID (ORCID [Char] -nums Char -check) = - let numsInt :: [Int] -numsInt = (Char -> Int) -> [Char] -> [Int] +validateORCID (ORCID [Char] +nums Char +check) = + let numsInt :: [Int] +numsInt = (Char -> Int) -> [Char] -> [Int] forall a b. (a -> b) -> [a] -> [b] map Char -> Int digitToInt [Char] -nums - total :: Int -total = Int -> [Int] -> Int -makeTotal Int +nums + total :: Int +total = Int -> [Int] -> Int +makeTotal Int 0 [Int] -numsInt - remainder :: Int -remainder = Int -total Int -> Int -> Int +numsInt + remainder :: Int +remainder = Int +total Int -> Int -> Int forall a. Integral a => a -> a -> a `mod` Int 11 - result :: Int -result = (Int + result :: Int +result = (Int 12 Int -> Int -> Int forall a. Num a => a -> a -> a - Int -remainder) Int -> Int -> Int +remainder) Int -> Int -> Int forall a. Integral a => a -> a -> a `mod` Int 11 - checkInt :: Int -checkInt = if Char -check Char -> Char -> Bool + checkInt :: Int +checkInt = if Char +check Char -> Char -> Bool forall a. Eq a => a -> a -> Bool == Char 'X' then Int 10 else Char -> Int digitToInt Char -check +check in Int -result Int -> Int -> Bool +result Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int -checkInt +checkInt where - makeTotal :: Int -> [Int] -> Int - makeTotal :: Int -> [Int] -> Int -makeTotal Int -a [] = Int -a - makeTotal Int -a (Int -x:[Int] -xs) = Int -> [Int] -> Int -makeTotal ((Int -a Int -> Int -> Int + makeTotal :: Int -> [Int] -> Int + makeTotal :: Int -> [Int] -> Int +makeTotal Int +a [] = Int +a + makeTotal Int +a (Int +x:[Int] +xs) = Int -> [Int] -> Int +makeTotal ((Int +a Int -> Int -> Int forall a. Num a => a -> a -> a + Int -x) Int -> Int -> Int +x) Int -> Int -> Int forall a. Num a => a -> a -> a * Int 2) [Int] -xs +xs renderORCID :: ORCID -> String renderORCID :: ORCID -> [Char] -renderORCID (ORCID [Char] -nums Char -check) = +renderORCID (ORCID [Char] +nums Char +check) = [Char] -> [[Char]] -> [Char] forall a. [a] -> [[a]] -> [a] intercalate [Char] "-" (Int -> [Char] -> [[Char]] forall a. Int -> [a] -> [[a]] -chunks Int +chunks Int 4 [Char] -nums) [Char] -> ShowS +nums) [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char -check] +check] where - chunks :: Int -> [a] -> [[a]] - chunks :: forall a. Int -> [a] -> [[a]] -chunks Int + chunks :: Int -> [a] -> [[a]] + chunks :: forall a. Int -> [a] -> [[a]] +chunks Int _ [] = [] - chunks Int -n [a] -xs = - let ([a] -ys, [a] -zs) = Int -> [a] -> ([a], [a]) + chunks Int +n [a] +xs = + let ([a] +ys, [a] +zs) = Int -> [a] -> ([a], [a]) forall a. Int -> [a] -> ([a], [a]) splitAt Int -n [a] -xs +n [a] +xs in [a] -ys [a] -> [[a]] -> [[a]] +ys [a] -> [[a]] -> [[a]] forall a. a -> [a] -> [a] : Int -> [a] -> [[a]] forall a. Int -> [a] -> [[a]] -chunks Int -n [a] -zs +chunks Int +n [a] +zs \ No newline at end of file diff --git a/src/Poseidon.EntityTypes.html b/src/Poseidon.EntityTypes.html index cc2fa3dc..34fec440 100644 --- a/src/Poseidon.EntityTypes.html +++ b/src/Poseidon.EntityTypes.html @@ -42,12 +42,12 @@ import qualified Text.Parsec.String as P -- | A class to represent a package-identifying property -class Eq a => HasNameAndVersion a where - getPacName :: a -> String -- ^ a name property - getPacVersion :: a -> Maybe Version -- ^ a version property +class Eq a => HasNameAndVersion a where + getPacName :: a -> String -- ^ a name property + getPacVersion :: a -> Maybe Version -- ^ a version property -- | a convenience function -hasVersion :: (HasNameAndVersion a) => a -> Bool +hasVersion :: (HasNameAndVersion a) => a -> Bool hasVersion :: forall a. HasNameAndVersion a => a -> Bool hasVersion = Maybe Version -> Bool forall a. Maybe a -> Bool @@ -58,46 +58,46 @@ getPacVersion -- | universal rendering of package names and version -renderNameWithVersion :: (HasNameAndVersion a) => a -> String +renderNameWithVersion :: (HasNameAndVersion a) => a -> String renderNameWithVersion :: forall a. HasNameAndVersion a => a -> String -renderNameWithVersion a -a = case a -> Maybe Version +renderNameWithVersion a +a = case a -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion a -a of +a of Maybe Version Nothing -> a -> String forall a. HasNameAndVersion a => a -> String getPacName a -a - Just Version -v -> a -> String +a + Just Version +v -> a -> String forall a. HasNameAndVersion a => a -> String getPacName a -a String -> String -> String +a String -> String -> String forall a. [a] -> [a] -> [a] ++ String "-" String -> String -> String forall a. [a] -> [a] -> [a] ++ Version -> String showVersion Version -v +v -- | a function to check whether a given package is the latest within a collection -isLatestInCollection :: (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool +isLatestInCollection :: (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection :: forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool -isLatestInCollection [a] -pacCollection a -onePac = do - let nameOfOne :: String -nameOfOne = a -> String +isLatestInCollection [a] +pacCollection a +onePac = do + let nameOfOne :: String +nameOfOne = a -> String forall a. HasNameAndVersion a => a -> String getPacName a -onePac - allWithThisName :: [PacNameAndVersion] -allWithThisName = [PacNameAndVersion] -> [PacNameAndVersion] +onePac + allWithThisName :: [PacNameAndVersion] +allWithThisName = [PacNameAndVersion] -> [PacNameAndVersion] forall a. Eq a => [a] -> [a] nub ([PacNameAndVersion] -> [PacNameAndVersion]) -> [PacNameAndVersion] -> [PacNameAndVersion] @@ -108,7 +108,7 @@ filter ((String -> String -> Bool forall a. Eq a => a -> a -> Bool ==String -nameOfOne) (String -> Bool) +nameOfOne) (String -> Bool) -> (PacNameAndVersion -> String) -> PacNameAndVersion -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . PacNameAndVersion -> String @@ -121,11 +121,11 @@ map a -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion [a] -pacCollection +pacCollection -- the latest package can not be determined, if there is more than one with this name -- and any of them has no specified version - missingVersion :: Bool -missingVersion = (PacNameAndVersion -> Bool) -> [PacNameAndVersion] -> Bool + missingVersion :: Bool +missingVersion = (PacNameAndVersion -> Bool) -> [PacNameAndVersion] -> Bool forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any (Maybe Version -> Bool forall a. Maybe a -> Bool @@ -137,19 +137,19 @@ . PacNameAndVersion -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion) [PacNameAndVersion] -allWithThisName Bool -> Bool -> Bool +allWithThisName Bool -> Bool -> Bool && [PacNameAndVersion] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [PacNameAndVersion] -allWithThisName Int -> Int -> Bool +allWithThisName Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 1 Bool -> m () -> m () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -missingVersion (m () -> m ()) -> m () -> m () +missingVersion (m () -> m ()) -> m () -> m () forall a b. (a -> b) -> a -> b $ PoseidonException -> m () @@ -173,13 +173,13 @@ map PacNameAndVersion -> String forall a. HasNameAndVersion a => a -> String renderNameWithVersion [PacNameAndVersion] -allWithThisName) - let latest :: PacNameAndVersion -latest = [PacNameAndVersion] -> PacNameAndVersion +allWithThisName) + let latest :: PacNameAndVersion +latest = [PacNameAndVersion] -> PacNameAndVersion forall a. Ord a => [a] -> a forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum [PacNameAndVersion] -allWithThisName +allWithThisName Bool -> m Bool forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a @@ -188,10 +188,10 @@ $ a -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion a -onePac PacNameAndVersion -> PacNameAndVersion -> Bool +onePac PacNameAndVersion -> PacNameAndVersion -> Bool forall a. Eq a => a -> a -> Bool == PacNameAndVersion -latest +latest -- | The minimal instance of HasNameAndVersion data PacNameAndVersion = PacNameAndVersion { @@ -200,7 +200,7 @@ , PacNameAndVersion -> Maybe Version panavVersion :: Maybe Version } - deriving (Eq PacNameAndVersion + deriving (Eq PacNameAndVersion Eq PacNameAndVersion -> (PacNameAndVersion -> PacNameAndVersion -> Ordering) -> (PacNameAndVersion -> PacNameAndVersion -> Bool) @@ -237,7 +237,7 @@ max :: PacNameAndVersion -> PacNameAndVersion -> PacNameAndVersion $cmin :: PacNameAndVersion -> PacNameAndVersion -> PacNameAndVersion min :: PacNameAndVersion -> PacNameAndVersion -> PacNameAndVersion -Ord, PacNameAndVersion -> PacNameAndVersion -> Bool +Ord, PacNameAndVersion -> PacNameAndVersion -> Bool (PacNameAndVersion -> PacNameAndVersion -> Bool) -> (PacNameAndVersion -> PacNameAndVersion -> Bool) -> Eq PacNameAndVersion @@ -249,39 +249,39 @@ Eq) instance HasNameAndVersion PacNameAndVersion where - getPacName :: PacNameAndVersion -> String + getPacName :: PacNameAndVersion -> String getPacName = PacNameAndVersion -> String panavName - getPacVersion :: PacNameAndVersion -> Maybe Version + getPacVersion :: PacNameAndVersion -> Maybe Version getPacVersion = PacNameAndVersion -> Maybe Version panavVersion -instance Show PacNameAndVersion where - show :: PacNameAndVersion -> String -show PacNameAndVersion -a = String +instance Show PacNameAndVersion where + show :: PacNameAndVersion -> String +show PacNameAndVersion +a = String "*" String -> String -> String forall a. [a] -> [a] -> [a] ++ PacNameAndVersion -> String forall a. HasNameAndVersion a => a -> String renderNameWithVersion PacNameAndVersion -a String -> String -> String +a String -> String -> String forall a. [a] -> [a] -> [a] ++ String "*" -- | a function to normalise any instance of HasNameAndVersion to the minimal concrete type PacNameAndVersion -makePacNameAndVersion :: (HasNameAndVersion a) => a -> PacNameAndVersion +makePacNameAndVersion :: (HasNameAndVersion a) => a -> PacNameAndVersion makePacNameAndVersion :: forall a. HasNameAndVersion a => a -> PacNameAndVersion -makePacNameAndVersion a -a = String -> Maybe Version -> PacNameAndVersion +makePacNameAndVersion a +a = String -> Maybe Version -> PacNameAndVersion PacNameAndVersion (a -> String forall a. HasNameAndVersion a => a -> String getPacName a -a) (a -> Maybe Version +a) (a -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion a -a) +a) -- | A datatype to represent a requested package, group or individual data PoseidonEntity = @@ -289,7 +289,7 @@ | Group String -- ^ all individuals with a given group, in all of the latest packages | Ind String -- ^ all individuals with the given name, in all of the latest packages | SpecificInd String String PacNameAndVersion -- ^ the individual specified by its name, group and package. If not versioned, then take the latest version. - deriving (PoseidonEntity -> PoseidonEntity -> Bool + deriving (PoseidonEntity -> PoseidonEntity -> Bool (PoseidonEntity -> PoseidonEntity -> Bool) -> (PoseidonEntity -> PoseidonEntity -> Bool) -> Eq PoseidonEntity forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -297,7 +297,7 @@ == :: PoseidonEntity -> PoseidonEntity -> Bool $c/= :: PoseidonEntity -> PoseidonEntity -> Bool /= :: PoseidonEntity -> PoseidonEntity -> Bool -Eq, Eq PoseidonEntity +Eq, Eq PoseidonEntity Eq PoseidonEntity -> (PoseidonEntity -> PoseidonEntity -> Ordering) -> (PoseidonEntity -> PoseidonEntity -> Bool) @@ -337,47 +337,47 @@ Ord) -- | A show instance for rendering entities in forgescript -instance Show PoseidonEntity where - show :: PoseidonEntity -> String -show (Pac PacNameAndVersion -p) = PacNameAndVersion -> String +instance Show PoseidonEntity where + show :: PoseidonEntity -> String +show (Pac PacNameAndVersion +p) = PacNameAndVersion -> String forall a. Show a => a -> String show PacNameAndVersion -p - show (Group String -g) = String -g - show (Ind String -n) = String +p + show (Group String +g) = String +g + show (Ind String +n) = String "<" String -> String -> String forall a. [a] -> [a] -> [a] ++ String -n String -> String -> String +n String -> String -> String forall a. [a] -> [a] -> [a] ++ String ">" - show (SpecificInd String -n String -g PacNameAndVersion -p) = String + show (SpecificInd String +n String +g PacNameAndVersion +p) = String "<" String -> String -> String forall a. [a] -> [a] -> [a] ++ PacNameAndVersion -> String forall a. HasNameAndVersion a => a -> String renderNameWithVersion PacNameAndVersion -p String -> String -> String +p String -> String -> String forall a. [a] -> [a] -> [a] ++ String ":" String -> String -> String forall a. [a] -> [a] -> [a] ++ String -g String -> String -> String +g String -> String -> String forall a. [a] -> [a] -> [a] ++ String ":" String -> String -> String forall a. [a] -> [a] -> [a] ++ String -n String -> String -> String +n String -> String -> String forall a. [a] -> [a] -> [a] ++ String ">" @@ -388,7 +388,7 @@ data SignedEntity = Include PoseidonEntity | Exclude PoseidonEntity - deriving (SignedEntity -> SignedEntity -> Bool + deriving (SignedEntity -> SignedEntity -> Bool (SignedEntity -> SignedEntity -> Bool) -> (SignedEntity -> SignedEntity -> Bool) -> Eq SignedEntity forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -396,7 +396,7 @@ == :: SignedEntity -> SignedEntity -> Bool $c/= :: SignedEntity -> SignedEntity -> Bool /= :: SignedEntity -> SignedEntity -> Bool -Eq, Eq SignedEntity +Eq, Eq SignedEntity Eq SignedEntity -> (SignedEntity -> SignedEntity -> Ordering) -> (SignedEntity -> SignedEntity -> Bool) @@ -435,59 +435,59 @@ min :: SignedEntity -> SignedEntity -> SignedEntity Ord) -instance Show SignedEntity where - show :: SignedEntity -> String -show (Include PoseidonEntity -a) = PoseidonEntity -> String +instance Show SignedEntity where + show :: SignedEntity -> String +show (Include PoseidonEntity +a) = PoseidonEntity -> String forall a. Show a => a -> String show PoseidonEntity -a - show (Exclude PoseidonEntity -a) = String +a + show (Exclude PoseidonEntity +a) = String "-" String -> String -> String forall a. [a] -> [a] -> [a] ++ PoseidonEntity -> String forall a. Show a => a -> String show PoseidonEntity -a +a type SignedEntitiesList = [SignedEntity] -- | A class to generalise signed and unsigned Entity Lists. -- Both have the feature that they can be used to filter individuals. -class EntitySpec a where - indInfoConformsToEntitySpec :: IndividualInfo -> Bool -> a -> Maybe Bool +class EntitySpec a where + indInfoConformsToEntitySpec :: IndividualInfo -> Bool -> a -> Maybe Bool -- ^ a function to check whether a given individualInfo within a collection of individualInfos matches a given entitySpec. -- the second argument specifies whether the package is the latest of all possible packages in the collection -- `Nothing` means that the entity has no say about this individual, neither negatively nor positively -- `Just True` means that the entity actively selects this individual -- `Just False` means that the entity actively unselects this individual - underlyingEntity :: a -> PoseidonEntity -- ^ returns the unterlying entity - entitySpecParser :: P.Parser a -- ^ a parser + underlyingEntity :: a -> PoseidonEntity -- ^ returns the unterlying entity + entitySpecParser :: P.Parser a -- ^ a parser -- | this function checks whether a given individual info is selected by a given list of entities. -- The logic is to execute the entitySpecs in order, and then use the last active call to make the decision -indInfoConformsToEntitySpecs :: (EntitySpec a) => IndividualInfo -> Bool -> [a] -> Bool +indInfoConformsToEntitySpecs :: (EntitySpec a) => IndividualInfo -> Bool -> [a] -> Bool indInfoConformsToEntitySpecs :: forall a. EntitySpec a => IndividualInfo -> Bool -> [a] -> Bool -indInfoConformsToEntitySpecs IndividualInfo -indInfo Bool -isLatest [a] -entities = case (a -> Maybe Bool) -> [a] -> [Bool] +indInfoConformsToEntitySpecs IndividualInfo +indInfo Bool +isLatest [a] +entities = case (a -> Maybe Bool) -> [a] -> [Bool] forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe (IndividualInfo -> Bool -> a -> Maybe Bool forall a. EntitySpec a => IndividualInfo -> Bool -> a -> Maybe Bool indInfoConformsToEntitySpec IndividualInfo -indInfo Bool -isLatest) [a] -entities of +indInfo Bool +isLatest) [a] +entities of [] -> Bool False - [Bool] -xs -> [Bool] -> Bool + [Bool] +xs -> [Bool] -> Bool forall a. HasCallStack => [a] -> a last [Bool] -xs +xs instance EntitySpec SignedEntity where @@ -495,30 +495,30 @@ -- There are only a few general patterns to exploit. We are specifying them one by one -- include Package - indInfoConformsToEntitySpec :: IndividualInfo -> Bool -> SignedEntity -> Maybe Bool + indInfoConformsToEntitySpec :: IndividualInfo -> Bool -> SignedEntity -> Maybe Bool indInfoConformsToEntitySpec (IndividualInfo String _ [String] -_ PacNameAndVersion -p1) Bool -isLatest (Include (Pac PacNameAndVersion -p2)) = +_ PacNameAndVersion +p1) Bool +isLatest (Include (Pac PacNameAndVersion +p2)) = case (PacNameAndVersion -p1, PacNameAndVersion -p2) of - (PacNameAndVersion String -n1 (Just Version -v1), PacNameAndVersion String -n2 (Just Version -v2)) -> if String -n1 String -> String -> Bool +p1, PacNameAndVersion +p2) of + (PacNameAndVersion String +n1 (Just Version +v1), PacNameAndVersion String +n2 (Just Version +v2)) -> if String +n1 String -> String -> Bool forall a. Eq a => a -> a -> Bool == String -n2 Bool -> Bool -> Bool +n2 Bool -> Bool -> Bool && Version -v1 Version -> Version -> Bool +v1 Version -> Version -> Bool forall a. Eq a => a -> a -> Bool == Version -v2 then Bool -> Maybe Bool +v2 then Bool -> Maybe Bool forall a. a -> Maybe a Just Bool True else Maybe Bool @@ -531,17 +531,17 @@ _ )) -> Maybe Bool forall a. Maybe a Nothing - (PacNameAndVersion String -n1 Maybe Version -_ , PacNameAndVersion String -n2 Maybe Version + (PacNameAndVersion String +n1 Maybe Version +_ , PacNameAndVersion String +n2 Maybe Version Nothing ) -> if String -n1 String -> String -> Bool +n1 String -> String -> Bool forall a. Eq a => a -> a -> Bool == String -n2 Bool -> Bool -> Bool +n2 Bool -> Bool -> Bool && Bool -isLatest then Bool -> Maybe Bool +isLatest then Bool -> Maybe Bool forall a. a -> Maybe a Just Bool True else Maybe Bool @@ -551,27 +551,27 @@ -- exclude Package indInfoConformsToEntitySpec (IndividualInfo String _ [String] -_ PacNameAndVersion -p1) Bool -_ (Exclude (Pac PacNameAndVersion -p2)) = +_ PacNameAndVersion +p1) Bool +_ (Exclude (Pac PacNameAndVersion +p2)) = case (PacNameAndVersion -p1, PacNameAndVersion -p2) of - (PacNameAndVersion String -n1 (Just Version -v1), PacNameAndVersion String -n2 (Just Version -v2)) -> if String -n1 String -> String -> Bool +p1, PacNameAndVersion +p2) of + (PacNameAndVersion String +n1 (Just Version +v1), PacNameAndVersion String +n2 (Just Version +v2)) -> if String +n1 String -> String -> Bool forall a. Eq a => a -> a -> Bool == String -n2 Bool -> Bool -> Bool +n2 Bool -> Bool -> Bool && Version -v1 Version -> Version -> Bool +v1 Version -> Version -> Bool forall a. Eq a => a -> a -> Bool == Version -v2 then Bool -> Maybe Bool +v2 then Bool -> Maybe Bool forall a. a -> Maybe a Just Bool False else Maybe Bool @@ -584,15 +584,15 @@ _ )) -> Maybe Bool forall a. Maybe a Nothing - (PacNameAndVersion String -n1 Maybe Version -_ , PacNameAndVersion String -n2 Maybe Version + (PacNameAndVersion String +n1 Maybe Version +_ , PacNameAndVersion String +n2 Maybe Version Nothing) -> if String -n1 String -> String -> Bool +n1 String -> String -> Bool forall a. Eq a => a -> a -> Bool == String -n2 then Bool -> Maybe Bool +n2 then Bool -> Maybe Bool forall a. a -> Maybe a Just Bool False else Maybe Bool @@ -601,19 +601,19 @@ -- include group indInfoConformsToEntitySpec (IndividualInfo String -_ [String] -gs PacNameAndVersion -_) Bool -isLatest (Include (Group String -g)) = +_ [String] +gs PacNameAndVersion +_) Bool +isLatest (Include (Group String +g)) = if String -g String -> [String] -> Bool +g String -> [String] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [String] -gs Bool -> Bool -> Bool +gs Bool -> Bool -> Bool && Bool -isLatest then Bool -> Maybe Bool +isLatest then Bool -> Maybe Bool forall a. a -> Maybe a Just Bool True else Maybe Bool @@ -622,17 +622,17 @@ -- exclude group indInfoConformsToEntitySpec (IndividualInfo String -_ [String] -gs PacNameAndVersion +_ [String] +gs PacNameAndVersion _) Bool -_ (Exclude (Group String -g)) = +_ (Exclude (Group String +g)) = if String -g String -> [String] -> Bool +g String -> [String] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [String] -gs then Bool -> Maybe Bool +gs then Bool -> Maybe Bool forall a. a -> Maybe a Just Bool False else Maybe Bool @@ -640,19 +640,19 @@ Nothing -- include general individual - indInfoConformsToEntitySpec (IndividualInfo String -n1 [String] + indInfoConformsToEntitySpec (IndividualInfo String +n1 [String] _ PacNameAndVersion -_ ) Bool -isLatest (Include (Ind String -n2)) = +_ ) Bool +isLatest (Include (Ind String +n2)) = if String -n1 String -> String -> Bool +n1 String -> String -> Bool forall a. Eq a => a -> a -> Bool == String -n2 Bool -> Bool -> Bool +n2 Bool -> Bool -> Bool && Bool -isLatest then Bool -> Maybe Bool +isLatest then Bool -> Maybe Bool forall a. a -> Maybe a Just Bool True else Maybe Bool @@ -660,17 +660,17 @@ Nothing -- exclude general individual - indInfoConformsToEntitySpec (IndividualInfo String -n1 [String] + indInfoConformsToEntitySpec (IndividualInfo String +n1 [String] _ PacNameAndVersion _) Bool -_ (Exclude (Ind String -n2)) = +_ (Exclude (Ind String +n2)) = if String -n1 String -> String -> Bool +n1 String -> String -> Bool forall a. Eq a => a -> a -> Bool == String -n2 then Bool -> Maybe Bool +n2 then Bool -> Maybe Bool forall a. a -> Maybe a Just Bool False else Maybe Bool @@ -678,74 +678,74 @@ Nothing -- include specific individual - indInfoConformsToEntitySpec indInfo :: IndividualInfo -indInfo@(IndividualInfo String -n1 [String] -gs PacNameAndVersion -_) Bool -isLatest (Include (SpecificInd String -n2 String -g PacNameAndVersion -p2)) = + indInfoConformsToEntitySpec indInfo :: IndividualInfo +indInfo@(IndividualInfo String +n1 [String] +gs PacNameAndVersion +_) Bool +isLatest (Include (SpecificInd String +n2 String +g PacNameAndVersion +p2)) = if String -n1 String -> String -> Bool +n1 String -> String -> Bool forall a. Eq a => a -> a -> Bool /= String -n2 Bool -> Bool -> Bool +n2 Bool -> Bool -> Bool || String -g String -> [String] -> Bool +g String -> [String] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `notElem` [String] -gs then Maybe Bool +gs then Maybe Bool forall a. Maybe a Nothing else IndividualInfo -> Bool -> SignedEntity -> Maybe Bool forall a. EntitySpec a => IndividualInfo -> Bool -> a -> Maybe Bool indInfoConformsToEntitySpec IndividualInfo -indInfo Bool -isLatest (PoseidonEntity -> SignedEntity +indInfo Bool +isLatest (PoseidonEntity -> SignedEntity Include (PacNameAndVersion -> PoseidonEntity Pac PacNameAndVersion -p2)) +p2)) -- exclude specific individual - indInfoConformsToEntitySpec indInfo :: IndividualInfo -indInfo@(IndividualInfo String -n1 [String] -gs PacNameAndVersion -_) Bool -isLatest (Exclude (SpecificInd String -n2 String -g PacNameAndVersion -p2)) = + indInfoConformsToEntitySpec indInfo :: IndividualInfo +indInfo@(IndividualInfo String +n1 [String] +gs PacNameAndVersion +_) Bool +isLatest (Exclude (SpecificInd String +n2 String +g PacNameAndVersion +p2)) = if String -n1 String -> String -> Bool +n1 String -> String -> Bool forall a. Eq a => a -> a -> Bool /= String -n2 Bool -> Bool -> Bool +n2 Bool -> Bool -> Bool || String -g String -> [String] -> Bool +g String -> [String] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `notElem` [String] -gs then Maybe Bool +gs then Maybe Bool forall a. Maybe a Nothing else IndividualInfo -> Bool -> SignedEntity -> Maybe Bool forall a. EntitySpec a => IndividualInfo -> Bool -> a -> Maybe Bool indInfoConformsToEntitySpec IndividualInfo -indInfo Bool -isLatest (PoseidonEntity -> SignedEntity +indInfo Bool +isLatest (PoseidonEntity -> SignedEntity Exclude (PacNameAndVersion -> PoseidonEntity Pac PacNameAndVersion -p2)) +p2)) - underlyingEntity :: SignedEntity -> PoseidonEntity + underlyingEntity :: SignedEntity -> PoseidonEntity underlyingEntity = SignedEntity -> PoseidonEntity removeEntitySign - entitySpecParser :: Parser SignedEntity + entitySpecParser :: Parser SignedEntity entitySpecParser = ParsecT String () Identity (PoseidonEntity -> SignedEntity) forall {u}. ParsecT String u Identity (PoseidonEntity -> SignedEntity) -parseSign ParsecT String () Identity (PoseidonEntity -> SignedEntity) +parseSign ParsecT String () Identity (PoseidonEntity -> SignedEntity) -> ParsecT String () Identity PoseidonEntity -> Parser SignedEntity forall a b. ParsecT String () Identity (a -> b) @@ -755,8 +755,8 @@ forall a. EntitySpec a => Parser a entitySpecParser where - parseSign :: ParsecT String u Identity (PoseidonEntity -> SignedEntity) -parseSign = (Char -> ParsecT String u Identity Char + parseSign :: ParsecT String u Identity (PoseidonEntity -> SignedEntity) +parseSign = (Char -> ParsecT String u Identity Char forall s (m :: * -> *) u. Stream s m Char => Char -> ParsecT s u m Char @@ -804,24 +804,24 @@ Include) instance EntitySpec PoseidonEntity where - indInfoConformsToEntitySpec :: IndividualInfo -> Bool -> PoseidonEntity -> Maybe Bool -indInfoConformsToEntitySpec IndividualInfo -indInfo Bool -isLatest PoseidonEntity -entity = IndividualInfo -> Bool -> SignedEntity -> Maybe Bool + indInfoConformsToEntitySpec :: IndividualInfo -> Bool -> PoseidonEntity -> Maybe Bool +indInfoConformsToEntitySpec IndividualInfo +indInfo Bool +isLatest PoseidonEntity +entity = IndividualInfo -> Bool -> SignedEntity -> Maybe Bool forall a. EntitySpec a => IndividualInfo -> Bool -> a -> Maybe Bool indInfoConformsToEntitySpec IndividualInfo -indInfo Bool -isLatest (PoseidonEntity -> SignedEntity +indInfo Bool +isLatest (PoseidonEntity -> SignedEntity Include PoseidonEntity -entity) - underlyingEntity :: PoseidonEntity -> PoseidonEntity +entity) + underlyingEntity :: PoseidonEntity -> PoseidonEntity underlyingEntity = PoseidonEntity -> PoseidonEntity forall a. a -> a id - entitySpecParser :: ParsecT String () Identity PoseidonEntity + entitySpecParser :: ParsecT String () Identity PoseidonEntity entitySpecParser = ParsecT String () Identity PoseidonEntity -parsePac ParsecT String () Identity PoseidonEntity +parsePac ParsecT String () Identity PoseidonEntity -> ParsecT String () Identity PoseidonEntity -> ParsecT String () Identity PoseidonEntity forall a. @@ -830,7 +830,7 @@ forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ParsecT String () Identity PoseidonEntity forall {u}. ParsecT String u Identity PoseidonEntity -parseGroup ParsecT String () Identity PoseidonEntity +parseGroup ParsecT String () Identity PoseidonEntity -> ParsecT String () Identity PoseidonEntity -> ParsecT String () Identity PoseidonEntity forall a. @@ -838,10 +838,10 @@ -> ParsecT String () Identity a -> ParsecT String () Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ParsecT String () Identity PoseidonEntity -parseInd +parseInd where - parsePac :: ParsecT String () Identity PoseidonEntity -parsePac = PacNameAndVersion -> PoseidonEntity + parsePac :: ParsecT String () Identity PoseidonEntity +parsePac = PacNameAndVersion -> PoseidonEntity Pac (PacNameAndVersion -> PoseidonEntity) -> ParsecT String () Identity PacNameAndVersion -> ParsecT String () Identity PoseidonEntity @@ -865,23 +865,23 @@ Char -> ParsecT s u m Char P.char Char '*') ParsecT String () Identity PacNameAndVersion -parseNameAndVer - parseGroup :: ParsecT String u Identity PoseidonEntity -parseGroup = String -> PoseidonEntity +parseNameAndVer + parseGroup :: ParsecT String u Identity PoseidonEntity +parseGroup = String -> PoseidonEntity Group (String -> PoseidonEntity) -> ParsecT String u Identity String -> ParsecT String u Identity PoseidonEntity forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> ParsecT String u Identity String forall {u}. ParsecT String u Identity String -parseName - parseInd :: ParsecT String () Identity PoseidonEntity -parseInd = ParsecT String () Identity PoseidonEntity +parseName + parseInd :: ParsecT String () Identity PoseidonEntity +parseInd = ParsecT String () Identity PoseidonEntity -> ParsecT String () Identity PoseidonEntity forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m a P.try ParsecT String () Identity PoseidonEntity forall {u}. ParsecT String u Identity PoseidonEntity -parseSimpleInd ParsecT String () Identity PoseidonEntity +parseSimpleInd ParsecT String () Identity PoseidonEntity -> ParsecT String () Identity PoseidonEntity -> ParsecT String () Identity PoseidonEntity forall a. @@ -889,15 +889,15 @@ -> ParsecT String () Identity a -> ParsecT String () Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> ParsecT String () Identity PoseidonEntity -parseSpecificInd - parseNameAndVer :: ParsecT String () Identity PacNameAndVersion -parseNameAndVer = do - String -namePart <- String -> ParsecT String () Identity String -parseNamePart String +parseSpecificInd + parseNameAndVer :: ParsecT String () Identity PacNameAndVersion +parseNameAndVer = do + String +namePart <- String -> ParsecT String () Identity String +parseNamePart String "" - Maybe Version -versionPart <- ParsecT String () Identity Version + Maybe Version +versionPart <- ParsecT String () Identity Version -> ParsecT String () Identity (Maybe Version) forall s (m :: * -> *) t u a. Stream s m t => @@ -913,13 +913,13 @@ forall a b. (a -> b) -> a -> b $ String -> Maybe Version -> PacNameAndVersion PacNameAndVersion String -namePart Maybe Version -versionPart - parseNamePart :: String -> ParsecT String () Identity String -parseNamePart String -prevPart = do - String -curPart <- ParsecT String () Identity Char +namePart Maybe Version +versionPart + parseNamePart :: String -> ParsecT String () Identity String +parseNamePart String +prevPart = do + String +curPart <- ParsecT String () Identity Char -> ParsecT String () Identity String forall s (m :: * -> *) t u a. Stream s m t => @@ -928,13 +928,13 @@ forall s (m :: * -> *) u. Stream s m Char => (Char -> Bool) -> ParsecT s u m Char -P.satisfy (\Char -c -> Bool -> Bool +P.satisfy (\Char +c -> Bool -> Bool not (Char -> Bool isSpace Char -c Bool -> Bool -> Bool +c Bool -> Bool -> Bool || Char -c Char -> String -> Bool +c Char -> String -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [Char @@ -944,8 +944,8 @@ '>', Char '*', Char '-']))) - Maybe Char -nextChar <- ParsecT String () Identity Char + Maybe Char +nextChar <- ParsecT String () Identity Char -> ParsecT String () Identity (Maybe Char) forall s (m :: * -> *) t u a. Stream s m t => @@ -954,13 +954,13 @@ forall s (m :: * -> *) u. Stream s m Char => (Char -> Bool) -> ParsecT s u m Char -P.satisfy (\Char -c -> Bool -> Bool +P.satisfy (\Char +c -> Bool -> Bool not (Char -> Bool isSpace Char -c Bool -> Bool -> Bool +c Bool -> Bool -> Bool || Char -c Char -> String -> Bool +c Char -> String -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [Char @@ -970,28 +970,28 @@ '>', Char '*']))) case Maybe Char -nextChar of +nextChar of Just Char '-' -> do - Bool -isVersionComing <- ParsecT String () Identity Bool -probeForVersion + Bool +isVersionComing <- ParsecT String () Identity Bool +probeForVersion if Bool -isVersionComing +isVersionComing then String -> ParsecT String () Identity String forall a. a -> ParsecT String () Identity a forall (m :: * -> *) a. Monad m => a -> m a return (String -prevPart String -> String -> String +prevPart String -> String -> String forall a. [a] -> [a] -> [a] ++ String -curPart) +curPart) else String -> ParsecT String () Identity String -parseNamePart (String -prevPart String -> String -> String +parseNamePart (String +prevPart String -> String -> String forall a. [a] -> [a] -> [a] ++ String -curPart String -> String -> String +curPart String -> String -> String forall a. [a] -> [a] -> [a] ++ String "-") @@ -1000,12 +1000,12 @@ forall a. a -> ParsecT String () Identity a forall (m :: * -> *) a. Monad m => a -> m a return (String -prevPart String -> String -> String +prevPart String -> String -> String forall a. [a] -> [a] -> [a] ++ String -curPart) - probeForVersion :: ParsecT String () Identity Bool -probeForVersion = ParsecT String () Identity Bool -> ParsecT String () Identity Bool +curPart) + probeForVersion :: ParsecT String () Identity Bool +probeForVersion = ParsecT String () Identity Bool -> ParsecT String () Identity Bool forall s (m :: * -> *) t u a. Stream s m t => ParsecT s u m a -> ParsecT s u m a @@ -1033,8 +1033,8 @@ forall (f :: * -> *) a. Applicative f => a -> f a pure Bool False - parseName :: ParsecT String u Identity String -parseName = ParsecT String u Identity Char -> ParsecT String u Identity String + parseName :: ParsecT String u Identity String +parseName = ParsecT String u Identity Char -> ParsecT String u Identity String forall s (m :: * -> *) t u a. Stream s m t => ParsecT s u m a -> ParsecT s u m [a] @@ -1042,13 +1042,13 @@ forall s (m :: * -> *) u. Stream s m Char => (Char -> Bool) -> ParsecT s u m Char -P.satisfy (\Char -c -> Bool -> Bool +P.satisfy (\Char +c -> Bool -> Bool not (Char -> Bool isSpace Char -c Bool -> Bool -> Bool +c Bool -> Bool -> Bool || Char -c Char -> String -> Bool +c Char -> String -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [Char @@ -1057,8 +1057,8 @@ '<', Char '>', Char '*']))) - parseSimpleInd :: ParsecT String u Identity PoseidonEntity -parseSimpleInd = String -> PoseidonEntity + parseSimpleInd :: ParsecT String u Identity PoseidonEntity +parseSimpleInd = String -> PoseidonEntity Ind (String -> PoseidonEntity) -> ParsecT String u Identity String -> ParsecT String u Identity PoseidonEntity @@ -1083,9 +1083,9 @@ P.char Char '>') ParsecT String u Identity String forall {u}. ParsecT String u Identity String -parseName - parseSpecificInd :: ParsecT String () Identity PoseidonEntity -parseSpecificInd = do +parseName + parseSpecificInd :: ParsecT String () Identity PoseidonEntity +parseSpecificInd = do Char _ <- Char -> ParsecT String () Identity Char forall s (m :: * -> *) u. @@ -1093,9 +1093,9 @@ Char -> ParsecT s u m Char P.char Char '<' - PacNameAndVersion -pac <- ParsecT String () Identity PacNameAndVersion -parseNameAndVer + PacNameAndVersion +pac <- ParsecT String () Identity PacNameAndVersion +parseNameAndVer Char _ <- Char -> ParsecT String () Identity Char forall s (m :: * -> *) u. @@ -1103,10 +1103,10 @@ Char -> ParsecT s u m Char P.char Char ':' - String -groupName <- ParsecT String () Identity String + String +groupName <- ParsecT String () Identity String forall {u}. ParsecT String u Identity String -parseName +parseName Char _ <- Char -> ParsecT String () Identity Char forall s (m :: * -> *) u. @@ -1114,10 +1114,10 @@ Char -> ParsecT s u m Char P.char Char ':' - String -indName <- ParsecT String () Identity String + String +indName <- ParsecT String () Identity String forall {u}. ParsecT String u Identity String -parseName +parseName Char _ <- Char -> ParsecT String () Identity Char forall s (m :: * -> *) u. @@ -1133,13 +1133,13 @@ forall a b. (a -> b) -> a -> b $ String -> String -> PacNameAndVersion -> PoseidonEntity SpecificInd String -indName String -groupName PacNameAndVersion -pac +indName String +groupName PacNameAndVersion +pac -- turns out that we cannot easily write instances for classes, so need to be explicit for both types -instance FromJSON PoseidonEntity where parseJSON :: Value -> Parser PoseidonEntity -parseJSON = String +instance FromJSON PoseidonEntity where parseJSON :: Value -> Parser PoseidonEntity +parseJSON = String -> (Text -> Parser PoseidonEntity) -> Value -> Parser PoseidonEntity @@ -1148,7 +1148,7 @@ "PoseidonEntity" Text -> Parser PoseidonEntity forall e. EntitySpec e => Text -> Parser e aesonParseEntitySpec -instance FromJSON SignedEntity where parseJSON :: Value -> Parser SignedEntity +instance FromJSON SignedEntity where parseJSON :: Value -> Parser SignedEntity parseJSON = String -> (Text -> Parser SignedEntity) -> Value -> Parser SignedEntity forall a. String -> (Text -> Parser a) -> Value -> Parser a @@ -1156,31 +1156,31 @@ "SignedEntity" Text -> Parser SignedEntity forall e. EntitySpec e => Text -> Parser e aesonParseEntitySpec -instance ToJSON PoseidonEntity where toJSON :: PoseidonEntity -> Value -toJSON PoseidonEntity -e = Text -> Value +instance ToJSON PoseidonEntity where toJSON :: PoseidonEntity -> Value +toJSON PoseidonEntity +e = Text -> Value String (String -> Text pack (String -> Text) -> String -> Text forall a b. (a -> b) -> a -> b $ PoseidonEntity -> String forall a. Show a => a -> String show PoseidonEntity -e) -instance ToJSON SignedEntity where toJSON :: SignedEntity -> Value -toJSON SignedEntity -e = Text -> Value +e) +instance ToJSON SignedEntity where toJSON :: SignedEntity -> Value +toJSON SignedEntity +e = Text -> Value String (String -> Text pack (String -> Text) -> String -> Text forall a b. (a -> b) -> a -> b $ SignedEntity -> String forall a. Show a => a -> String show SignedEntity -e) +e) -aesonParseEntitySpec :: (EntitySpec e) => Text -> Parser e +aesonParseEntitySpec :: (EntitySpec e) => Text -> Parser e aesonParseEntitySpec :: forall e. EntitySpec e => Text -> Parser e -aesonParseEntitySpec Text -t = case Parsec String () e -> () -> String -> String -> Either ParseError e +aesonParseEntitySpec Text +t = case Parsec String () e -> () -> String -> String -> Either ParseError e forall s t u a. Stream s Identity t => Parsec s u a -> u -> String -> s -> Either ParseError a @@ -1189,22 +1189,22 @@ entitySpecParser () String "" (Text -> String unpack Text -t) of - Left ParseError -err -> String -> Parser e +t) of + Left ParseError +err -> String -> Parser e forall a. String -> Parser a forall (m :: * -> *) a. MonadFail m => String -> m a fail (String -> Parser e) -> String -> Parser e forall a b. (a -> b) -> a -> b $ ParseError -> String showParsecErr ParseError -err - Right e -p' -> e -> Parser e +err + Right e +p' -> e -> Parser e forall a. a -> Parser a forall (m :: * -> *) a. Monad m => a -> m a return e -p' +p' -- | a minimal datatype representing an individual in a collection of packages data IndividualInfo = IndividualInfo @@ -1214,7 +1214,7 @@ indInfoGroups :: [String] -- ^ the groups associated with the individual, corresponding to jGroupName in Janno , IndividualInfo -> PacNameAndVersion indInfoPac :: PacNameAndVersion -- ^ the package the individual is in. - } deriving (Int -> IndividualInfo -> String -> String + } deriving (Int -> IndividualInfo -> String -> String [IndividualInfo] -> String -> String IndividualInfo -> String (Int -> IndividualInfo -> String -> String) @@ -1230,7 +1230,7 @@ show :: IndividualInfo -> String $cshowList :: [IndividualInfo] -> String -> String showList :: [IndividualInfo] -> String -> String -Show, IndividualInfo -> IndividualInfo -> Bool +Show, IndividualInfo -> IndividualInfo -> Bool (IndividualInfo -> IndividualInfo -> Bool) -> (IndividualInfo -> IndividualInfo -> Bool) -> Eq IndividualInfo forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -1238,7 +1238,7 @@ == :: IndividualInfo -> IndividualInfo -> Bool $c/= :: IndividualInfo -> IndividualInfo -> Bool /= :: IndividualInfo -> IndividualInfo -> Bool -Eq, Eq IndividualInfo +Eq, Eq IndividualInfo Eq IndividualInfo -> (IndividualInfo -> IndividualInfo -> Ordering) -> (IndividualInfo -> IndividualInfo -> Bool) @@ -1275,7 +1275,7 @@ max :: IndividualInfo -> IndividualInfo -> IndividualInfo $cmin :: IndividualInfo -> IndividualInfo -> IndividualInfo min :: IndividualInfo -> IndividualInfo -> IndividualInfo -Ord, (forall x. IndividualInfo -> Rep IndividualInfo x) +Ord, (forall x. IndividualInfo -> Rep IndividualInfo x) -> (forall x. Rep IndividualInfo x -> IndividualInfo) -> Generic IndividualInfo forall x. Rep IndividualInfo x -> IndividualInfo @@ -1289,7 +1289,7 @@ Generic) instance HasNameAndVersion IndividualInfo where - getPacName :: IndividualInfo -> String + getPacName :: IndividualInfo -> String getPacName = PacNameAndVersion -> String forall a. HasNameAndVersion a => a -> String getPacName (PacNameAndVersion -> String) @@ -1299,7 +1299,7 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . IndividualInfo -> PacNameAndVersion indInfoPac - getPacVersion :: IndividualInfo -> Maybe Version + getPacVersion :: IndividualInfo -> Maybe Version getPacVersion = PacNameAndVersion -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion (PacNameAndVersion -> Maybe Version) @@ -1316,32 +1316,32 @@ -- data types for the selection process -data EntityInput a = EntitiesDirect [a] | EntitiesFromFile FilePath -- an empty list is interpreted as "all packages" +data EntityInput a = EntitiesDirect [a] | EntitiesFromFile FilePath -- an empty list is interpreted as "all packages" -- | determine all packages with versions that contain individuals covered by the given entities -determineRelevantPackages :: (MonadThrow m, EntitySpec a) => [a] -> IndividualInfoCollection -> m [PacNameAndVersion] +determineRelevantPackages :: (MonadThrow m, EntitySpec a) => [a] -> IndividualInfoCollection -> m [PacNameAndVersion] determineRelevantPackages :: forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> IndividualInfoCollection -> m [PacNameAndVersion] -determineRelevantPackages [a] -entities ([IndividualInfo] -indInfos, [Bool] -areLatest) = do - let relevantPacs :: [PacNameAndVersion] -relevantPacs = [ IndividualInfo -> PacNameAndVersion +determineRelevantPackages [a] +entities ([IndividualInfo] +indInfos, [Bool] +areLatest) = do + let relevantPacs :: [PacNameAndVersion] +relevantPacs = [ IndividualInfo -> PacNameAndVersion indInfoPac IndividualInfo -ind | (IndividualInfo -ind, Bool -l) <- [IndividualInfo] -> [Bool] -> [(IndividualInfo, Bool)] +ind | (IndividualInfo +ind, Bool +l) <- [IndividualInfo] -> [Bool] -> [(IndividualInfo, Bool)] forall a b. [a] -> [b] -> [(a, b)] zip [IndividualInfo] -indInfos [Bool] -areLatest, IndividualInfo -> Bool -> [a] -> Bool +indInfos [Bool] +areLatest, IndividualInfo -> Bool -> [a] -> Bool forall a. EntitySpec a => IndividualInfo -> Bool -> [a] -> Bool indInfoConformsToEntitySpecs IndividualInfo -ind Bool -l [a] -entities ] +ind Bool +l [a] +entities ] [PacNameAndVersion] -> m [PacNameAndVersion] forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a @@ -1366,16 +1366,16 @@ -> [PacNameAndVersion] -> m [PacNameAndVersion] forall a b. (a -> b) -> a -> b $ [PacNameAndVersion] -relevantPacs +relevantPacs -- | takes a list of selected individuals, checks for duplicates and reports a list of individuals with suggested Entity specifications reportDuplicateIndividuals :: [IndividualInfo] -> [(IndividualInfo, [PoseidonEntity])] reportDuplicateIndividuals :: [IndividualInfo] -> [(IndividualInfo, [PoseidonEntity])] -reportDuplicateIndividuals [IndividualInfo] -individuals = do -- loop over duplication groups - duplicateGroup :: [IndividualInfo] -duplicateGroup@(IndividualInfo -firstInd : [IndividualInfo] +reportDuplicateIndividuals [IndividualInfo] +individuals = do -- loop over duplication groups + duplicateGroup :: [IndividualInfo] +duplicateGroup@(IndividualInfo +firstInd : [IndividualInfo] _) <- ([IndividualInfo] -> Bool) -> [[IndividualInfo]] -> [[IndividualInfo]] forall a. (a -> Bool) -> [a] -> [a] @@ -1396,15 +1396,15 @@ . (IndividualInfo -> IndividualInfo -> Bool) -> [IndividualInfo] -> [[IndividualInfo]] forall a. (a -> a -> Bool) -> [a] -> [[a]] -groupBy (\IndividualInfo -a IndividualInfo -b -> IndividualInfo -> String +groupBy (\IndividualInfo +a IndividualInfo +b -> IndividualInfo -> String indInfoName IndividualInfo -a String -> String -> Bool +a String -> String -> Bool forall a. Eq a => a -> a -> Bool == IndividualInfo -> String indInfoName IndividualInfo -b) ([IndividualInfo] -> [[IndividualInfo]]) +b) ([IndividualInfo] -> [[IndividualInfo]]) -> ([IndividualInfo] -> [IndividualInfo]) -> [IndividualInfo] -> [[IndividualInfo]] @@ -1416,25 +1416,25 @@ -> [IndividualInfo] -> [[IndividualInfo]] forall a b. (a -> b) -> a -> b $ [IndividualInfo] -individuals +individuals (IndividualInfo, [PoseidonEntity]) -> [(IndividualInfo, [PoseidonEntity])] forall a. a -> [a] forall (m :: * -> *) a. Monad m => a -> m a return (IndividualInfo -firstInd, [String -> String -> PacNameAndVersion -> PoseidonEntity +firstInd, [String -> String -> PacNameAndVersion -> PoseidonEntity SpecificInd String -n' ([String] -> String +n' ([String] -> String forall a. HasCallStack => [a] -> a head [String] -g) PacNameAndVersion -p | IndividualInfo String -n' [String] -g PacNameAndVersion -p <- [IndividualInfo] -duplicateGroup]) +g) PacNameAndVersion +p | IndividualInfo String +n' [String] +g PacNameAndVersion +p <- [IndividualInfo] +duplicateGroup]) -resolveEntityIndices :: (EntitySpec a) => Bool -> [a] -> IndividualInfoCollection -> [Int] +resolveEntityIndices :: (EntitySpec a) => Bool -> [a] -> IndividualInfoCollection -> [Int] resolveEntityIndices :: forall a. EntitySpec a => Bool -> [a] -> IndividualInfoCollection -> [Int] @@ -1448,146 +1448,146 @@ resolveEntityIndicesUnordered -- | this finds the indices of all individuals from an individual-list which are specified in the Entity list -resolveEntityIndicesUnordered :: (EntitySpec a) => [a] -> IndividualInfoCollection -> [Int] +resolveEntityIndicesUnordered :: (EntitySpec a) => [a] -> IndividualInfoCollection -> [Int] resolveEntityIndicesUnordered :: forall a. EntitySpec a => [a] -> IndividualInfoCollection -> [Int] -resolveEntityIndicesUnordered [a] -entities ([IndividualInfo] -indInfos, [Bool] -areLatest) = +resolveEntityIndicesUnordered [a] +entities ([IndividualInfo] +indInfos, [Bool] +areLatest) = [ Int -i | (Int -i, IndividualInfo -ind, Bool -l) <- [Int] +i | (Int +i, IndividualInfo +ind, Bool +l) <- [Int] -> [IndividualInfo] -> [Bool] -> [(Int, IndividualInfo, Bool)] forall a b c. [a] -> [b] -> [c] -> [(a, b, c)] zip3 [Int 0..] [IndividualInfo] -indInfos [Bool] -areLatest, IndividualInfo -> Bool -> [a] -> Bool +indInfos [Bool] +areLatest, IndividualInfo -> Bool -> [a] -> Bool forall a. EntitySpec a => IndividualInfo -> Bool -> [a] -> Bool indInfoConformsToEntitySpecs IndividualInfo -ind Bool -l [a] -entities ] +ind Bool +l [a] +entities ] -- | this finds the indices of all individuals from an individual-list which are specified in the Entity list, ordered by the entity list -resolveEntityIndicesOrdered :: (EntitySpec a) => [a] -> IndividualInfoCollection -> [Int] +resolveEntityIndicesOrdered :: (EntitySpec a) => [a] -> IndividualInfoCollection -> [Int] resolveEntityIndicesOrdered :: forall a. EntitySpec a => [a] -> IndividualInfoCollection -> [Int] -resolveEntityIndicesOrdered [a] -entities ([IndividualInfo] -indInfos, [Bool] -areLatest) = [Int] -> [a] -> [Int] +resolveEntityIndicesOrdered [a] +entities ([IndividualInfo] +indInfos, [Bool] +areLatest) = [Int] -> [a] -> [Int] forall a. EntitySpec a => [Int] -> [a] -> [Int] -go [] [a] -entities +go [] [a] +entities where - go :: (EntitySpec a) => [Int] -> [a] -> [Int] - go :: forall a. EntitySpec a => [Int] -> [a] -> [Int] -go [Int] -selectedIndices [] = [Int] -selectedIndices - go [Int] -selectedIndices (a -entity:[a] -restEntities)= + go :: (EntitySpec a) => [Int] -> [a] -> [Int] + go :: forall a. EntitySpec a => [Int] -> [a] -> [Int] +go [Int] +selectedIndices [] = [Int] +selectedIndices + go [Int] +selectedIndices (a +entity:[a] +restEntities)= -- We first check whether any already selected indices are removed due to the new entity (can happen if the entity is signed and negative) - let selectedInds :: [IndividualInfo] -selectedInds = (Int -> IndividualInfo) -> [Int] -> [IndividualInfo] + let selectedInds :: [IndividualInfo] +selectedInds = (Int -> IndividualInfo) -> [Int] -> [IndividualInfo] forall a b. (a -> b) -> [a] -> [b] map ([IndividualInfo] -indInfos[IndividualInfo] -> Int -> IndividualInfo +indInfos[IndividualInfo] -> Int -> IndividualInfo forall a. HasCallStack => [a] -> Int -> a !!) [Int] -selectedIndices - selectedLatest :: [Bool] -selectedLatest = (Int -> Bool) -> [Int] -> [Bool] +selectedIndices + selectedLatest :: [Bool] +selectedLatest = (Int -> Bool) -> [Int] -> [Bool] forall a b. (a -> b) -> [a] -> [b] map ([Bool] -areLatest[Bool] -> Int -> Bool +areLatest[Bool] -> Int -> Bool forall a. HasCallStack => [a] -> Int -> a !!) [Int] -selectedIndices - selectedUpdated :: [Int] -selectedUpdated = [Int -i | (Int -i, IndividualInfo -ind, Bool -l) <- [Int] +selectedIndices + selectedUpdated :: [Int] +selectedUpdated = [Int +i | (Int +i, IndividualInfo +ind, Bool +l) <- [Int] -> [IndividualInfo] -> [Bool] -> [(Int, IndividualInfo, Bool)] forall a b c. [a] -> [b] -> [c] -> [(a, b, c)] zip3 [Int] -selectedIndices [IndividualInfo] -selectedInds [Bool] -selectedLatest, IndividualInfo -> Bool -> a -> Maybe Bool +selectedIndices [IndividualInfo] +selectedInds [Bool] +selectedLatest, IndividualInfo -> Bool -> a -> Maybe Bool forall a. EntitySpec a => IndividualInfo -> Bool -> a -> Maybe Bool indInfoConformsToEntitySpec IndividualInfo -ind Bool -l a -entity Maybe Bool -> Maybe Bool -> Bool +ind Bool +l a +entity Maybe Bool -> Maybe Bool -> Bool forall a. Eq a => a -> a -> Bool /= Bool -> Maybe Bool forall a. a -> Maybe a Just Bool False] -- We then check which indices are found according to the new entity... - additionalIndicesAll :: [Int] -additionalIndicesAll = [ Int -i | (Int -i, IndividualInfo -ind, Bool -l) <- [Int] + additionalIndicesAll :: [Int] +additionalIndicesAll = [ Int +i | (Int +i, IndividualInfo +ind, Bool +l) <- [Int] -> [IndividualInfo] -> [Bool] -> [(Int, IndividualInfo, Bool)] forall a b c. [a] -> [b] -> [c] -> [(a, b, c)] zip3 [Int 0..] [IndividualInfo] -indInfos [Bool] -areLatest, IndividualInfo -> Bool -> a -> Maybe Bool +indInfos [Bool] +areLatest, IndividualInfo -> Bool -> a -> Maybe Bool forall a. EntitySpec a => IndividualInfo -> Bool -> a -> Maybe Bool indInfoConformsToEntitySpec IndividualInfo -ind Bool -l a -entity Maybe Bool -> Maybe Bool -> Bool +ind Bool +l a +entity Maybe Bool -> Maybe Bool -> Bool forall a. Eq a => a -> a -> Bool == Bool -> Maybe Bool forall a. a -> Maybe a Just Bool True] -- ... and use only the ones that are not already selected: - additionalIndicesNew :: [Int] -additionalIndicesNew = [Int] -additionalIndicesAll [Int] -> [Int] -> [Int] + additionalIndicesNew :: [Int] +additionalIndicesNew = [Int] +additionalIndicesAll [Int] -> [Int] -> [Int] forall a. Eq a => [a] -> [a] -> [a] \\ [Int] -selectedUpdated +selectedUpdated in [Int] -> [a] -> [Int] forall a. EntitySpec a => [Int] -> [a] -> [Int] -go ([Int] -selectedUpdated [Int] -> [Int] -> [Int] +go ([Int] +selectedUpdated [Int] -> [Int] -> [Int] forall a. [a] -> [a] -> [a] ++ [Int] -additionalIndicesNew) [a] -restEntities +additionalIndicesNew) [a] +restEntities -resolveUniqueEntityIndices :: (EntitySpec a) => Bool -> [a] -> IndividualInfoCollection -> PoseidonIO [Int] +resolveUniqueEntityIndices :: (EntitySpec a) => Bool -> [a] -> IndividualInfoCollection -> PoseidonIO [Int] resolveUniqueEntityIndices :: forall a. EntitySpec a => Bool -> [a] -> IndividualInfoCollection -> PoseidonIO [Int] -resolveUniqueEntityIndices Bool -isOrdered [a] -entities IndividualInfoCollection -indInfoCollection = do - let relevantIndices :: [Int] -relevantIndices = Bool -> [a] -> IndividualInfoCollection -> [Int] +resolveUniqueEntityIndices Bool +isOrdered [a] +entities IndividualInfoCollection +indInfoCollection = do + let relevantIndices :: [Int] +relevantIndices = Bool -> [a] -> IndividualInfoCollection -> [Int] forall a. EntitySpec a => Bool -> [a] -> IndividualInfoCollection -> [Int] resolveEntityIndices Bool -isOrdered [a] -entities IndividualInfoCollection -indInfoCollection - let duplicateReport :: [(IndividualInfo, [PoseidonEntity])] -duplicateReport = [IndividualInfo] -> [(IndividualInfo, [PoseidonEntity])] +isOrdered [a] +entities IndividualInfoCollection +indInfoCollection + let duplicateReport :: [(IndividualInfo, [PoseidonEntity])] +duplicateReport = [IndividualInfo] -> [(IndividualInfo, [PoseidonEntity])] reportDuplicateIndividuals ([IndividualInfo] -> [(IndividualInfo, [PoseidonEntity])]) -> ([Int] -> [IndividualInfo]) -> [Int] @@ -1598,13 +1598,13 @@ map ((IndividualInfoCollection -> [IndividualInfo] forall a b. (a, b) -> a fst IndividualInfoCollection -indInfoCollection) [IndividualInfo] -> Int -> IndividualInfo +indInfoCollection) [IndividualInfo] -> Int -> IndividualInfo forall a. HasCallStack => [a] -> Int -> a !!) ([Int] -> [(IndividualInfo, [PoseidonEntity])]) -> [Int] -> [(IndividualInfo, [PoseidonEntity])] forall a b. (a -> b) -> a -> b $ [Int] -relevantIndices +relevantIndices -- check if there still are duplicates and if yes, then stop Bool -> ReaderT Env IO () -> ReaderT Env IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () @@ -1612,7 +1612,7 @@ forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [(IndividualInfo, [PoseidonEntity])] -duplicateReport) (ReaderT Env IO () -> ReaderT Env IO ()) +duplicateReport) (ReaderT Env IO () -> ReaderT Env IO ()) -> ReaderT Env IO () -> ReaderT Env IO () forall a b. (a -> b) -> a -> b $ do @@ -1629,16 +1629,16 @@ (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [(IndividualInfo, [PoseidonEntity])] -duplicateReport (((IndividualInfo, [PoseidonEntity]) -> ReaderT Env IO ()) +duplicateReport (((IndividualInfo, [PoseidonEntity]) -> ReaderT Env IO ()) -> ReaderT Env IO ()) -> ((IndividualInfo, [PoseidonEntity]) -> ReaderT Env IO ()) -> ReaderT Env IO () forall a b. (a -> b) -> a -> b -$ \(IndividualInfo String -n [String] +$ \(IndividualInfo String +n [String] _ PacNameAndVersion -_, [PoseidonEntity] -specs) -> do +_, [PoseidonEntity] +specs) -> do String -> ReaderT Env IO () logError (String -> ReaderT Env IO ()) -> String -> ReaderT Env IO () forall a b. (a -> b) -> a -> b @@ -1649,7 +1649,7 @@ forall a. Show a => a -> String show (String -> PoseidonEntity Ind String -n) String -> String -> String +n) String -> String -> String forall a. [a] -> [a] -> [a] ++ String " (please specify)" @@ -1659,11 +1659,11 @@ (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [PoseidonEntity] -specs ((PoseidonEntity -> ReaderT Env IO ()) -> ReaderT Env IO ()) +specs ((PoseidonEntity -> ReaderT Env IO ()) -> ReaderT Env IO ()) -> (PoseidonEntity -> ReaderT Env IO ()) -> ReaderT Env IO () forall a b. (a -> b) -> a -> b -$ \PoseidonEntity -spec -> do +$ \PoseidonEntity +spec -> do String -> ReaderT Env IO () logError (String -> ReaderT Env IO ()) -> String -> ReaderT Env IO () forall a b. (a -> b) -> a -> b @@ -1674,7 +1674,7 @@ forall a. Show a => a -> String show (String -> PoseidonEntity Ind String -n) String -> String -> String +n) String -> String -> String forall a. [a] -> [a] -> [a] ++ String " -> " String -> String -> String @@ -1682,7 +1682,7 @@ ++ PoseidonEntity -> String forall a. Show a => a -> String show PoseidonEntity -spec +spec IO () -> ReaderT Env IO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -1699,24 +1699,24 @@ forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return [Int] -relevantIndices +relevantIndices -- | this returns a list of entities which could not be found -determineNonExistentEntities :: (EntitySpec a) => [a] -> IndividualInfoCollection -> EntitiesList +determineNonExistentEntities :: (EntitySpec a) => [a] -> IndividualInfoCollection -> EntitiesList determineNonExistentEntities :: forall a. EntitySpec a => [a] -> IndividualInfoCollection -> [PoseidonEntity] -determineNonExistentEntities [a] -entities IndividualInfoCollection -indInfoCollection = +determineNonExistentEntities [a] +entities IndividualInfoCollection +indInfoCollection = [ PoseidonEntity -entity | PoseidonEntity -entity <- (a -> PoseidonEntity) -> [a] -> [PoseidonEntity] +entity | PoseidonEntity +entity <- (a -> PoseidonEntity) -> [a] -> [PoseidonEntity] forall a b. (a -> b) -> [a] -> [b] map a -> PoseidonEntity forall a. EntitySpec a => a -> PoseidonEntity underlyingEntity [a] -entities, [Int] -> Bool +entities, [Int] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null (Bool -> [PoseidonEntity] -> IndividualInfoCollection -> [Int] @@ -1725,31 +1725,31 @@ Bool -> [a] -> IndividualInfoCollection -> [Int] resolveEntityIndices Bool False [PoseidonEntity -entity] IndividualInfoCollection -indInfoCollection)] +entity] IndividualInfoCollection +indInfoCollection)] -checkIfAllEntitiesExist :: (EntitySpec a) => [a] -> IndividualInfoCollection -> PoseidonIO () +checkIfAllEntitiesExist :: (EntitySpec a) => [a] -> IndividualInfoCollection -> PoseidonIO () checkIfAllEntitiesExist :: forall a. EntitySpec a => [a] -> IndividualInfoCollection -> ReaderT Env IO () -checkIfAllEntitiesExist [a] -entities IndividualInfoCollection -indInfoCollection = do - let nonExistentEntities :: [PoseidonEntity] -nonExistentEntities = [a] -> IndividualInfoCollection -> [PoseidonEntity] +checkIfAllEntitiesExist [a] +entities IndividualInfoCollection +indInfoCollection = do + let nonExistentEntities :: [PoseidonEntity] +nonExistentEntities = [a] -> IndividualInfoCollection -> [PoseidonEntity] forall a. EntitySpec a => [a] -> IndividualInfoCollection -> [PoseidonEntity] determineNonExistentEntities [a] -entities IndividualInfoCollection -indInfoCollection +entities IndividualInfoCollection +indInfoCollection Bool -> ReaderT Env IO () -> ReaderT Env IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless ([PoseidonEntity] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [PoseidonEntity] -nonExistentEntities) (ReaderT Env IO () -> ReaderT Env IO ()) +nonExistentEntities) (ReaderT Env IO () -> ReaderT Env IO ()) -> ReaderT Env IO () -> ReaderT Env IO () forall a b. (a -> b) -> a -> b $ do @@ -1762,7 +1762,7 @@ (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [PoseidonEntity] -nonExistentEntities (String -> ReaderT Env IO () +nonExistentEntities (String -> ReaderT Env IO () logError (String -> ReaderT Env IO ()) -> (PoseidonEntity -> String) -> PoseidonEntity @@ -1792,10 +1792,10 @@ "some entities do not exist" -- parsing code to read entities from files -readEntitiesFromString :: (EntitySpec a) => String -> Either PoseidonException [a] +readEntitiesFromString :: (EntitySpec a) => String -> Either PoseidonException [a] readEntitiesFromString :: forall a. EntitySpec a => String -> Either PoseidonException [a] -readEntitiesFromString String -s = case Parsec String () [a] +readEntitiesFromString String +s = case Parsec String () [a] -> () -> String -> String -> Either ParseError [a] forall s t u a. Stream s Identity t => @@ -1814,28 +1814,28 @@ ParsecT s u m () P.eof) () String "" String -s of - Left ParseError -p -> PoseidonException -> Either PoseidonException [a] +s of + Left ParseError +p -> PoseidonException -> Either PoseidonException [a] forall a b. a -> Either a b Left (PoseidonException -> Either PoseidonException [a]) -> PoseidonException -> Either PoseidonException [a] forall a b. (a -> b) -> a -> b $ ParseError -> PoseidonException PoseidonPoseidonEntityParsingException ParseError -p - Right [a] -x -> [a] -> Either PoseidonException [a] +p + Right [a] +x -> [a] -> Either PoseidonException [a] forall a b. b -> Either a b Right [a] -x +x -readEntityInputs :: (MonadIO m, EntitySpec a, Eq a) => [EntityInput a] -> m [a] -- An empty list means that entities are wanted. +readEntityInputs :: (MonadIO m, EntitySpec a, Eq a) => [EntityInput a] -> m [a] -- An empty list means that entities are wanted. readEntityInputs :: forall (m :: * -> *) a. (MonadIO m, EntitySpec a, Eq a) => [EntityInput a] -> m [a] -readEntityInputs [EntityInput a] -entityInputs = +readEntityInputs [EntityInput a] +entityInputs = ([[a]] -> [a]) -> m [[a]] -> m [a] forall a b. (a -> b) -> m a -> m b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -1855,20 +1855,20 @@ (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM [EntityInput a] -entityInputs ((EntityInput a -> m [a]) -> m [a]) +entityInputs ((EntityInput a -> m [a]) -> m [a]) -> (EntityInput a -> m [a]) -> m [a] forall a b. (a -> b) -> a -> b -$ \EntityInput a -entityInput -> case EntityInput a -entityInput of - EntitiesDirect [a] -e -> [a] -> m [a] +$ \EntityInput a +entityInput -> case EntityInput a +entityInput of + EntitiesDirect [a] +e -> [a] -> m [a] forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return [a] -e - EntitiesFromFile String -fp -> IO [a] -> m [a] +e + EntitiesFromFile String +fp -> IO [a] -> m [a] forall a. IO a -> m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO [a] -> m [a]) -> IO [a] -> m [a] @@ -1876,18 +1876,18 @@ $ String -> IO [a] forall a. EntitySpec a => String -> IO [a] readEntitiesFromFile String -fp +fp removeEntitySign :: SignedEntity -> PoseidonEntity removeEntitySign :: SignedEntity -> PoseidonEntity -removeEntitySign (Include PoseidonEntity -e) = PoseidonEntity -e -removeEntitySign (Exclude PoseidonEntity -e) = PoseidonEntity -e +removeEntitySign (Include PoseidonEntity +e) = PoseidonEntity +e +removeEntitySign (Exclude PoseidonEntity +e) = PoseidonEntity +e -entitiesListP :: (EntitySpec a) => P.Parser [a] +entitiesListP :: (EntitySpec a) => P.Parser [a] entitiesListP :: forall a. EntitySpec a => Parser [a] entitiesListP = ParsecT String () Identity a -> ParsecT String () Identity Char @@ -1912,7 +1912,7 @@ forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m () P.spaces) -entitiesListMultilineP :: (EntitySpec a) => P.Parser [a] +entitiesListMultilineP :: (EntitySpec a) => P.Parser [a] entitiesListMultilineP :: forall a. EntitySpec a => Parser [a] entitiesListMultilineP = do [[a]] -> [a] @@ -1942,14 +1942,14 @@ -> ParsecT String () Identity a -> ParsecT String () Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Parser [a] -entitiesListWithCommentsP) ParsecT String () Identity Char +entitiesListWithCommentsP) ParsecT String () Identity Char forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char P.newline where - entitiesListWithCommentsP :: Parser [a] -entitiesListWithCommentsP = do - [a] -eL <- Parser [a] + entitiesListWithCommentsP :: Parser [a] +entitiesListWithCommentsP = do + [a] +eL <- Parser [a] forall a. EntitySpec a => Parser [a] entitiesListP String @@ -1975,9 +1975,9 @@ forall a. a -> ParsecT String () Identity a forall (m :: * -> *) a. Monad m => a -> m a return [a] -eL +eL -emptyLineP :: (EntitySpec a) => P.Parser [a] +emptyLineP :: (EntitySpec a) => P.Parser [a] emptyLineP :: forall a. EntitySpec a => Parser [a] emptyLineP = do String @@ -2004,7 +2004,7 @@ forall (m :: * -> *) a. Monad m => a -> m a return [] -commentP :: (EntitySpec a) => P.Parser [a] +commentP :: (EntitySpec a) => P.Parser [a] commentP :: forall a. EntitySpec a => Parser [a] commentP = do String @@ -2035,12 +2035,12 @@ forall (m :: * -> *) a. Monad m => a -> m a return [] -readEntitiesFromFile :: (EntitySpec a) => FilePath -> IO [a] +readEntitiesFromFile :: (EntitySpec a) => FilePath -> IO [a] readEntitiesFromFile :: forall a. EntitySpec a => String -> IO [a] -readEntitiesFromFile String -entitiesFile = do - Either ParseError [a] -eitherParseResult <- Parser [a] -> String -> IO (Either ParseError [a]) +readEntitiesFromFile String +entitiesFile = do + Either ParseError [a] +eitherParseResult <- Parser [a] -> String -> IO (Either ParseError [a]) forall a. Parser a -> String -> IO (Either ParseError a) P.parseFromFile (Parser [a] forall a. EntitySpec a => Parser [a] @@ -2054,19 +2054,19 @@ (Stream s m t, Show t) => ParsecT s u m () P.eof) String -entitiesFile +entitiesFile case Either ParseError [a] -eitherParseResult of - Left ParseError -e -> PoseidonException -> IO [a] +eitherParseResult of + Left ParseError +e -> PoseidonException -> IO [a] forall e a. Exception e => e -> IO a throwIO (ParseError -> PoseidonException PoseidonPoseidonEntityParsingException ParseError -e) - Right [a] -r -> [a] -> IO [a] +e) + Right [a] +r -> [a] -> IO [a] forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return [a] -r +r \ No newline at end of file diff --git a/src/Poseidon.GenotypeData.html b/src/Poseidon.GenotypeData.html index d65f959a..cbceb33a 100644 --- a/src/Poseidon.GenotypeData.html +++ b/src/Poseidon.GenotypeData.html @@ -39,7 +39,7 @@ { GenoDataSource -> GenotypeDataSpec getGenoDirect :: GenotypeDataSpec } - deriving Int -> GenoDataSource -> ShowS + deriving Int -> GenoDataSource -> ShowS [GenoDataSource] -> ShowS GenoDataSource -> [Char] (Int -> GenoDataSource -> ShowS) @@ -83,7 +83,7 @@ snpSet :: Maybe SNPSetSpec -- ^ the SNP set de facto listed in the genotype data } - deriving (Int -> GenotypeDataSpec -> ShowS + deriving (Int -> GenotypeDataSpec -> ShowS [GenotypeDataSpec] -> ShowS GenotypeDataSpec -> [Char] (Int -> GenotypeDataSpec -> ShowS) @@ -98,7 +98,7 @@ show :: GenotypeDataSpec -> [Char] $cshowList :: [GenotypeDataSpec] -> ShowS showList :: [GenotypeDataSpec] -> ShowS -Show, GenotypeDataSpec -> GenotypeDataSpec -> Bool +Show, GenotypeDataSpec -> GenotypeDataSpec -> Bool (GenotypeDataSpec -> GenotypeDataSpec -> Bool) -> (GenotypeDataSpec -> GenotypeDataSpec -> Bool) -> Eq GenotypeDataSpec @@ -110,8 +110,8 @@ Eq) -- | To facilitate automatic parsing of GenotypeDataSpec from JSON files -instance FromJSON GenotypeDataSpec where - parseJSON :: Value -> Parser GenotypeDataSpec +instance FromJSON GenotypeDataSpec where + parseJSON :: Value -> Parser GenotypeDataSpec parseJSON = [Char] -> (Object -> Parser GenotypeDataSpec) -> Value @@ -124,8 +124,8 @@ -> Value -> Parser GenotypeDataSpec forall a b. (a -> b) -> a -> b -$ \Object -v -> GenotypeFormatSpec +$ \Object +v -> GenotypeFormatSpec -> [Char] -> Maybe [Char] -> [Char] @@ -156,7 +156,7 @@ -> GenotypeDataSpec) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v Object -> Key -> Parser GenotypeFormatSpec +v Object -> Key -> Parser GenotypeFormatSpec forall a. FromJSON a => Object -> Key -> Parser a .: Key "format" @@ -181,7 +181,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser [Char] +v Object -> Key -> Parser [Char] forall a. FromJSON a => Object -> Key -> Parser a .: Key "genoFile" @@ -204,7 +204,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe [Char]) +v Object -> Key -> Parser (Maybe [Char]) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "genoFileChkSum" @@ -222,7 +222,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser [Char] +v Object -> Key -> Parser [Char] forall a. FromJSON a => Object -> Key -> Parser a .: Key "snpFile" @@ -235,7 +235,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe [Char]) +v Object -> Key -> Parser (Maybe [Char]) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "snpFileChkSum" @@ -246,7 +246,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser [Char] +v Object -> Key -> Parser [Char] forall a. FromJSON a => Object -> Key -> Parser a .: Key "indFile" @@ -256,7 +256,7 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe [Char]) +v Object -> Key -> Parser (Maybe [Char]) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "indFileChkSum" @@ -265,79 +265,79 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe SNPSetSpec) +v Object -> Key -> Parser (Maybe SNPSetSpec) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "snpSet" -instance ToJSON GenotypeDataSpec where +instance ToJSON GenotypeDataSpec where -- this encodes directly to a bytestring Builder - toJSON :: GenotypeDataSpec -> Value -toJSON GenotypeDataSpec -x = [Pair] -> Value + toJSON :: GenotypeDataSpec -> Value +toJSON GenotypeDataSpec +x = [Pair] -> Value object [ Key "format" Key -> GenotypeFormatSpec -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> GenotypeFormatSpec format GenotypeDataSpec -x, +x, Key "genoFile" Key -> [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> [Char] genoFile GenotypeDataSpec -x, +x, Key "genoFileChkSum"Key -> Maybe [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> Maybe [Char] genoFileChkSum GenotypeDataSpec -x, +x, Key "snpFile" Key -> [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> [Char] snpFile GenotypeDataSpec -x, +x, Key "snpFileChkSum" Key -> Maybe [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> Maybe [Char] snpFileChkSum GenotypeDataSpec -x, +x, Key "indFile" Key -> [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> [Char] indFile GenotypeDataSpec -x, +x, Key "indFileChkSum" Key -> Maybe [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> Maybe [Char] indFileChkSum GenotypeDataSpec -x, +x, Key "snpSet" Key -> Maybe SNPSetSpec -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> Maybe SNPSetSpec snpSet GenotypeDataSpec -x +x ] -- | A data type representing the options fo the genotype format data GenotypeFormatSpec = GenotypeFormatEigenstrat | GenotypeFormatPlink - deriving (GenotypeFormatSpec -> GenotypeFormatSpec -> Bool + deriving (GenotypeFormatSpec -> GenotypeFormatSpec -> Bool (GenotypeFormatSpec -> GenotypeFormatSpec -> Bool) -> (GenotypeFormatSpec -> GenotypeFormatSpec -> Bool) -> Eq GenotypeFormatSpec @@ -348,9 +348,9 @@ /= :: GenotypeFormatSpec -> GenotypeFormatSpec -> Bool Eq) -instance Show GenotypeFormatSpec where - show :: GenotypeFormatSpec -> [Char] -show GenotypeFormatSpec +instance Show GenotypeFormatSpec where + show :: GenotypeFormatSpec -> [Char] +show GenotypeFormatSpec GenotypeFormatPlink = [Char] "PLINK" show GenotypeFormatSpec @@ -358,8 +358,8 @@ "EIGENSTRAT" -- | To facilitate automatic parsing of GenotypeFormatSpec from JSON files -instance FromJSON GenotypeFormatSpec where - parseJSON :: Value -> Parser GenotypeFormatSpec +instance FromJSON GenotypeFormatSpec where + parseJSON :: Value -> Parser GenotypeFormatSpec parseJSON = [Char] -> (Text -> Parser GenotypeFormatSpec) -> Value @@ -372,9 +372,9 @@ -> Value -> Parser GenotypeFormatSpec forall a b. (a -> b) -> a -> b -$ \Text -v -> case Text -v of +$ \Text +v -> case Text +v of Text "EIGENSTRAT" -> GenotypeFormatSpec -> Parser GenotypeFormatSpec forall a. a -> Parser a @@ -396,13 +396,13 @@ forall a. [a] -> [a] -> [a] ++ Text -> [Char] T.unpack Text -v) +v) -instance ToJSON GenotypeFormatSpec where - toJSON :: GenotypeFormatSpec -> Value -toJSON GenotypeFormatSpec -a = case GenotypeFormatSpec -a of +instance ToJSON GenotypeFormatSpec where + toJSON :: GenotypeFormatSpec -> Value +toJSON GenotypeFormatSpec +a = case GenotypeFormatSpec +a of GenotypeFormatSpec GenotypeFormatPlink -> Value "PLINK" @@ -413,7 +413,7 @@ data SNPSetSpec = SNPSet1240K | SNPSetHumanOrigins | SNPSetOther - deriving (SNPSetSpec -> SNPSetSpec -> Bool + deriving (SNPSetSpec -> SNPSetSpec -> Bool (SNPSetSpec -> SNPSetSpec -> Bool) -> (SNPSetSpec -> SNPSetSpec -> Bool) -> Eq SNPSetSpec forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -423,8 +423,8 @@ /= :: SNPSetSpec -> SNPSetSpec -> Bool Eq) -instance Show SNPSetSpec where - show :: SNPSetSpec -> [Char] +instance Show SNPSetSpec where + show :: SNPSetSpec -> [Char] show SNPSetSpec SNPSet1240K = [Char] "1240K" @@ -435,17 +435,17 @@ SNPSetOther = [Char] "Other" -instance FromJSON SNPSetSpec where - parseJSON :: Value -> Parser SNPSetSpec +instance FromJSON SNPSetSpec where + parseJSON :: Value -> Parser SNPSetSpec parseJSON = [Char] -> (Text -> Parser SNPSetSpec) -> Value -> Parser SNPSetSpec forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a withText [Char] "snpSet" ((Text -> Parser SNPSetSpec) -> Value -> Parser SNPSetSpec) -> (Text -> Parser SNPSetSpec) -> Value -> Parser SNPSetSpec forall a b. (a -> b) -> a -> b -$ \Text -v -> case Text -v of +$ \Text +v -> case Text +v of Text "1240K" -> SNPSetSpec -> Parser SNPSetSpec forall a. a -> Parser a @@ -473,13 +473,13 @@ forall a. [a] -> [a] -> [a] ++ Text -> [Char] T.unpack Text -v) +v) -instance ToJSON SNPSetSpec where - toJSON :: SNPSetSpec -> Value -toJSON SNPSetSpec -a = case SNPSetSpec -a of +instance ToJSON SNPSetSpec where + toJSON :: SNPSetSpec -> Value +toJSON SNPSetSpec +a = case SNPSetSpec +a of SNPSetSpec SNPSet1240K -> Value "1240K" @@ -492,24 +492,24 @@ snpSetMergeList :: [SNPSetSpec] -> Bool -> SNPSetSpec snpSetMergeList :: [SNPSetSpec] -> Bool -> SNPSetSpec -snpSetMergeList (SNPSetSpec -x:[SNPSetSpec] -xs) Bool -intersect = (SNPSetSpec -> SNPSetSpec -> SNPSetSpec) +snpSetMergeList (SNPSetSpec +x:[SNPSetSpec] +xs) Bool +intersect = (SNPSetSpec -> SNPSetSpec -> SNPSetSpec) -> SNPSetSpec -> [SNPSetSpec] -> SNPSetSpec forall a b. (a -> b -> b) -> b -> [a] -> b forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b -foldr (\SNPSetSpec -a SNPSetSpec -b -> SNPSetSpec -> SNPSetSpec -> Bool -> SNPSetSpec +foldr (\SNPSetSpec +a SNPSetSpec +b -> SNPSetSpec -> SNPSetSpec -> Bool -> SNPSetSpec snpSetMerge SNPSetSpec -a SNPSetSpec -b Bool -intersect) SNPSetSpec -x [SNPSetSpec] -xs +a SNPSetSpec +b Bool +intersect) SNPSetSpec +x [SNPSetSpec] +xs snpSetMergeList [SNPSetSpec] _ Bool _ = [Char] -> SNPSetSpec @@ -565,11 +565,11 @@ -> GenotypeDataSpec -- ^ the Genotype spec -> PoseidonIO [EigenstratIndEntry] -- ^ the returned list of EigenstratIndEntries. loadIndividuals :: [Char] -> GenotypeDataSpec -> PoseidonIO [EigenstratIndEntry] -loadIndividuals [Char] -d GenotypeDataSpec -gd = do - PlinkPopNameMode -popMode <- PoseidonIO PlinkPopNameMode +loadIndividuals [Char] +d GenotypeDataSpec +gd = do + PlinkPopNameMode +popMode <- PoseidonIO PlinkPopNameMode envInputPlinkMode IO () -> ReaderT Env IO () forall a. IO a -> ReaderT Env IO a @@ -578,47 +578,47 @@ forall a b. (a -> b) -> a -> b $ [Char] -> Maybe [Char] -> IO () checkFile ([Char] -d [Char] -> ShowS +d [Char] -> ShowS </> GenotypeDataSpec -> [Char] indFile GenotypeDataSpec -gd) Maybe [Char] +gd) Maybe [Char] forall a. Maybe a Nothing case GenotypeDataSpec -> GenotypeFormatSpec format GenotypeDataSpec -gd of +gd of GenotypeFormatSpec GenotypeFormatEigenstrat -> [Char] -> PoseidonIO [EigenstratIndEntry] forall (m :: * -> *). MonadIO m => [Char] -> m [EigenstratIndEntry] readEigenstratInd ([Char] -d [Char] -> ShowS +d [Char] -> ShowS </> GenotypeDataSpec -> [Char] indFile GenotypeDataSpec -gd) +gd) GenotypeFormatSpec GenotypeFormatPlink -> (PlinkFamEntry -> EigenstratIndEntry) -> [PlinkFamEntry] -> [EigenstratIndEntry] forall a b. (a -> b) -> [a] -> [b] map (PlinkPopNameMode -> PlinkFamEntry -> EigenstratIndEntry plinkFam2EigenstratInd PlinkPopNameMode -popMode) ([PlinkFamEntry] -> [EigenstratIndEntry]) +popMode) ([PlinkFamEntry] -> [EigenstratIndEntry]) -> ReaderT Env IO [PlinkFamEntry] -> PoseidonIO [EigenstratIndEntry] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [Char] -> ReaderT Env IO [PlinkFamEntry] forall (m :: * -> *). MonadIO m => [Char] -> m [PlinkFamEntry] readFamFile ([Char] -d [Char] -> ShowS +d [Char] -> ShowS </> GenotypeDataSpec -> [Char] indFile GenotypeDataSpec -gd) +gd) -- | A function to read the genotype data of a package -loadGenotypeData :: (MonadSafe m) => +loadGenotypeData :: (MonadSafe m) => FilePath -- ^ the base path -> GenotypeDataSpec -- ^ the genotype spec -> PlinkPopNameMode -- ^ The Plink PopName Mode - -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) + -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) -- ^ a pair of the EigenstratIndEntries and a Producer over the Snp position values and the genotype line. loadGenotypeData :: forall (m :: * -> *). MonadSafe m => @@ -627,19 +627,19 @@ -> PlinkPopNameMode -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) -loadGenotypeData [Char] -baseDir (GenotypeDataSpec GenotypeFormatSpec -format_ [Char] -genoF Maybe [Char] -_ [Char] -snpF Maybe [Char] -_ [Char] -indF Maybe [Char] +loadGenotypeData [Char] +baseDir (GenotypeDataSpec GenotypeFormatSpec +format_ [Char] +genoF Maybe [Char] +_ [Char] +snpF Maybe [Char] +_ [Char] +indF Maybe [Char] _ Maybe SNPSetSpec -_) PlinkPopNameMode -popMode = +_) PlinkPopNameMode +popMode = case GenotypeFormatSpec -format_ of +format_ of GenotypeFormatSpec GenotypeFormatEigenstrat -> [Char] -> [Char] @@ -654,20 +654,20 @@ -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) readEigenstrat ([Char] -baseDir [Char] -> ShowS +baseDir [Char] -> ShowS </> [Char] -genoF) ([Char] -baseDir [Char] -> ShowS +genoF) ([Char] +baseDir [Char] -> ShowS </> [Char] -snpF) ([Char] -baseDir [Char] -> ShowS +snpF) ([Char] +baseDir [Char] -> ShowS </> [Char] -indF) +indF) GenotypeFormatSpec GenotypeFormatPlink -> do - ([PlinkFamEntry] -famEntries, Producer (EigenstratSnpEntry, GenoLine) m () -prod) <- [Char] + ([PlinkFamEntry] +famEntries, Producer (EigenstratSnpEntry, GenoLine) m () +prod) <- [Char] -> [Char] -> [Char] -> m ([PlinkFamEntry], @@ -680,15 +680,15 @@ -> m ([PlinkFamEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) readPlink ([Char] -baseDir [Char] -> ShowS +baseDir [Char] -> ShowS </> [Char] -genoF) ([Char] -baseDir [Char] -> ShowS +genoF) ([Char] +baseDir [Char] -> ShowS </> [Char] -snpF) ([Char] -baseDir [Char] -> ShowS +snpF) ([Char] +baseDir [Char] -> ShowS </> [Char] -indF) +indF) ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) -> m ([EigenstratIndEntry], @@ -700,11 +700,11 @@ forall a b. (a -> b) -> [a] -> [b] map (PlinkPopNameMode -> PlinkFamEntry -> EigenstratIndEntry plinkFam2EigenstratInd PlinkPopNameMode -popMode) [PlinkFamEntry] -famEntries, Producer (EigenstratSnpEntry, GenoLine) m () -prod) +popMode) [PlinkFamEntry] +famEntries, Producer (EigenstratSnpEntry, GenoLine) m () +prod) -joinEntries :: (MonadIO m) => LogA -> [Int] -> [String] -> [Maybe (EigenstratSnpEntry, GenoLine)] -> m (EigenstratSnpEntry, GenoLine) +joinEntries :: (MonadIO m) => LogA -> [Int] -> [String] -> [Maybe (EigenstratSnpEntry, GenoLine)] -> m (EigenstratSnpEntry, GenoLine) joinEntries :: forall (m :: * -> *). MonadIO m => LogA @@ -712,13 +712,13 @@ -> [[Char]] -> [Maybe (EigenstratSnpEntry, GenoLine)] -> m (EigenstratSnpEntry, GenoLine) -joinEntries LogA -logA [Int] -nrInds [[Char]] -pacNames [Maybe (EigenstratSnpEntry, GenoLine)] -maybeTupleList = do - let allSnpEntries :: [EigenstratSnpEntry] -allSnpEntries = ((EigenstratSnpEntry, GenoLine) -> EigenstratSnpEntry) +joinEntries LogA +logA [Int] +nrInds [[Char]] +pacNames [Maybe (EigenstratSnpEntry, GenoLine)] +maybeTupleList = do + let allSnpEntries :: [EigenstratSnpEntry] +allSnpEntries = ((EigenstratSnpEntry, GenoLine) -> EigenstratSnpEntry) -> [(EigenstratSnpEntry, GenoLine)] -> [EigenstratSnpEntry] forall a b. (a -> b) -> [a] -> [b] map (EigenstratSnpEntry, GenoLine) -> EigenstratSnpEntry @@ -736,17 +736,17 @@ -> [Maybe (EigenstratSnpEntry, GenoLine)] -> [EigenstratSnpEntry] forall a b. (a -> b) -> a -> b $ [Maybe (EigenstratSnpEntry, GenoLine)] -maybeTupleList - EigenstratSnpEntry -consensusSnpEntry <- LogA -> [EigenstratSnpEntry] -> m EigenstratSnpEntry +maybeTupleList + EigenstratSnpEntry +consensusSnpEntry <- LogA -> [EigenstratSnpEntry] -> m EigenstratSnpEntry forall (m :: * -> *). MonadIO m => LogA -> [EigenstratSnpEntry] -> m EigenstratSnpEntry getConsensusSnpEntry LogA -logA [EigenstratSnpEntry] -allSnpEntries - [GenoLine] -recodedGenotypes <- [(Int, [Char], Maybe (EigenstratSnpEntry, GenoLine))] +logA [EigenstratSnpEntry] +allSnpEntries + [GenoLine] +recodedGenotypes <- [(Int, [Char], Maybe (EigenstratSnpEntry, GenoLine))] -> ((Int, [Char], Maybe (EigenstratSnpEntry, GenoLine)) -> m GenoLine) -> m [GenoLine] @@ -759,21 +759,21 @@ -> [(Int, [Char], Maybe (EigenstratSnpEntry, GenoLine))] forall a b c. [a] -> [b] -> [c] -> [(a, b, c)] zip3 [Int] -nrInds [[Char]] -pacNames [Maybe (EigenstratSnpEntry, GenoLine)] -maybeTupleList) (((Int, [Char], Maybe (EigenstratSnpEntry, GenoLine)) +nrInds [[Char]] +pacNames [Maybe (EigenstratSnpEntry, GenoLine)] +maybeTupleList) (((Int, [Char], Maybe (EigenstratSnpEntry, GenoLine)) -> m GenoLine) -> m [GenoLine]) -> ((Int, [Char], Maybe (EigenstratSnpEntry, GenoLine)) -> m GenoLine) -> m [GenoLine] forall a b. (a -> b) -> a -> b -$ \(Int -n, [Char] -name, Maybe (EigenstratSnpEntry, GenoLine) -maybeTuple) -> +$ \(Int +n, [Char] +name, Maybe (EigenstratSnpEntry, GenoLine) +maybeTuple) -> case Maybe (EigenstratSnpEntry, GenoLine) -maybeTuple of +maybeTuple of Maybe (EigenstratSnpEntry, GenoLine) Nothing -> GenoLine -> m GenoLine forall a. a -> m a @@ -781,30 +781,30 @@ return (Int -> GenoEntry -> GenoLine forall a. Int -> a -> Vector a V.replicate Int -n GenoEntry +n GenoEntry Missing) - Just (EigenstratSnpEntry -snpEntry, GenoLine -genoLine) -> case EigenstratSnpEntry + Just (EigenstratSnpEntry +snpEntry, GenoLine +genoLine) -> case EigenstratSnpEntry -> EigenstratSnpEntry -> GenoLine -> Either [Char] GenoLine recodeAlleles EigenstratSnpEntry -consensusSnpEntry EigenstratSnpEntry -snpEntry GenoLine -genoLine of - Left [Char] -err -> do - let msg :: [Char] -msg = [Char] +consensusSnpEntry EigenstratSnpEntry +snpEntry GenoLine +genoLine of + Left [Char] +err -> do + let msg :: [Char] +msg = [Char] "Error in genotype data of package " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] -name [Char] -> ShowS +name [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] ": " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] -err +err IO GenoLine -> m GenoLine forall a. IO a -> m a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -820,31 +820,31 @@ forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonException PoseidonGenotypeException [Char] -msg - Right GenoLine -x -> GenoLine -> m GenoLine +msg + Right GenoLine +x -> GenoLine -> m GenoLine forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -x +x (EigenstratSnpEntry, GenoLine) -> m (EigenstratSnpEntry, GenoLine) forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return (EigenstratSnpEntry -consensusSnpEntry, [GenoLine] -> GenoLine +consensusSnpEntry, [GenoLine] -> GenoLine forall a. [Vector a] -> Vector a V.concat [GenoLine] -recodedGenotypes) +recodedGenotypes) -getConsensusSnpEntry :: (MonadIO m) => LogA -> [EigenstratSnpEntry] -> m EigenstratSnpEntry +getConsensusSnpEntry :: (MonadIO m) => LogA -> [EigenstratSnpEntry] -> m EigenstratSnpEntry getConsensusSnpEntry :: forall (m :: * -> *). MonadIO m => LogA -> [EigenstratSnpEntry] -> m EigenstratSnpEntry -getConsensusSnpEntry LogA -logA [EigenstratSnpEntry] -snpEntries = do - let chrom :: Chrom -chrom = EigenstratSnpEntry -> Chrom +getConsensusSnpEntry LogA +logA [EigenstratSnpEntry] +snpEntries = do + let chrom :: Chrom +chrom = EigenstratSnpEntry -> Chrom snpChrom (EigenstratSnpEntry -> Chrom) -> ([EigenstratSnpEntry] -> EigenstratSnpEntry) -> [EigenstratSnpEntry] @@ -855,9 +855,9 @@ head ([EigenstratSnpEntry] -> Chrom) -> [EigenstratSnpEntry] -> Chrom forall a b. (a -> b) -> a -> b $ [EigenstratSnpEntry] -snpEntries - pos :: Int -pos = EigenstratSnpEntry -> Int +snpEntries + pos :: Int +pos = EigenstratSnpEntry -> Int snpPos (EigenstratSnpEntry -> Int) -> ([EigenstratSnpEntry] -> EigenstratSnpEntry) -> [EigenstratSnpEntry] @@ -868,9 +868,9 @@ head ([EigenstratSnpEntry] -> Int) -> [EigenstratSnpEntry] -> Int forall a b. (a -> b) -> a -> b $ [EigenstratSnpEntry] -snpEntries - uniqueIds :: [ByteString] -uniqueIds = [ByteString] -> [ByteString] +snpEntries + uniqueIds :: [ByteString] +uniqueIds = [ByteString] -> [ByteString] forall a. Eq a => [a] -> [a] nub ([ByteString] -> [ByteString]) -> ([EigenstratSnpEntry] -> [ByteString]) @@ -885,9 +885,9 @@ -> [EigenstratSnpEntry] -> [ByteString] forall a b. (a -> b) -> a -> b $ [EigenstratSnpEntry] -snpEntries - uniqueGenPos :: [Double] -uniqueGenPos = [Double] -> [Double] +snpEntries + uniqueGenPos :: [Double] +uniqueGenPos = [Double] -> [Double] forall a. Ord a => [a] -> [a] sort ([Double] -> [Double]) -> ([EigenstratSnpEntry] -> [Double]) @@ -908,84 +908,84 @@ -> [EigenstratSnpEntry] -> [Double] forall a b. (a -> b) -> a -> b $ [EigenstratSnpEntry] -snpEntries - allAlleles :: [Char] -allAlleles = [[Char]] -> [Char] +snpEntries + allAlleles :: [Char] +allAlleles = [[Char]] -> [Char] forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat ([[Char]] -> [Char]) -> [[Char]] -> [Char] forall a b. (a -> b) -> a -> b $ [[Char -r, Char -a] | EigenstratSnpEntry Chrom +r, Char +a] | EigenstratSnpEntry Chrom _ Int _ Double _ ByteString -_ Char -r Char -a <- [EigenstratSnpEntry] -snpEntries] - uniqueAlleles :: [Char] -uniqueAlleles = ShowS +_ Char +r Char +a <- [EigenstratSnpEntry] +snpEntries] + uniqueAlleles :: [Char] +uniqueAlleles = ShowS forall a. Eq a => [a] -> [a] nub ShowS -> ShowS -> ShowS forall b c a. (b -> c) -> (a -> b) -> a -> c . (Char -> Bool) -> ShowS forall a. (a -> Bool) -> [a] -> [a] -filter (\Char -a -> Char -a Char -> Char -> Bool +filter (\Char +a -> Char +a Char -> Char -> Bool forall a. Eq a => a -> a -> Bool /= Char 'N' Bool -> Bool -> Bool && Char -a Char -> Char -> Bool +a Char -> Char -> Bool forall a. Eq a => a -> a -> Bool /= Char '0' Bool -> Bool -> Bool && Char -a Char -> Char -> Bool +a Char -> Char -> Bool forall a. Eq a => a -> a -> Bool /= Char 'X') ShowS -> ShowS forall a b. (a -> b) -> a -> b $ [Char] -allAlleles - ByteString -id_ <- case [ByteString] -uniqueIds of - [ByteString -i] -> ByteString -> m ByteString +allAlleles + ByteString +id_ <- case [ByteString] +uniqueIds of + [ByteString +i] -> ByteString -> m ByteString forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return ByteString -i +i [ByteString] _ -> do -- multiple Ids: Picking the first rs-number if possible, otherwise the first one. - let rsIds :: [ByteString] -rsIds = (ByteString -> Bool) -> [ByteString] -> [ByteString] + let rsIds :: [ByteString] +rsIds = (ByteString -> Bool) -> [ByteString] -> [ByteString] forall a. (a -> Bool) -> [a] -> [a] filter (ByteString -> ByteString -> Bool isPrefixOf ByteString "rs") [ByteString] -uniqueIds - selectedId :: ByteString -selectedId = case [ByteString] -rsIds of - (ByteString -i:[ByteString] +uniqueIds + selectedId :: ByteString +selectedId = case [ByteString] +rsIds of + (ByteString +i:[ByteString] _) -> ByteString -i +i [ByteString] _ -> [ByteString] -> ByteString forall a. HasCallStack => [a] -> a head [ByteString] -uniqueIds +uniqueIds LogA -> ReaderT Env IO () -> m () forall (m :: * -> *). MonadIO m => LogA -> ReaderT Env IO () -> m () logWithEnv LogA -logA (ReaderT Env IO () -> m ()) +logA (ReaderT Env IO () -> m ()) -> ([Char] -> ReaderT Env IO ()) -> [Char] -> m () forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> ReaderT Env IO () @@ -998,7 +998,7 @@ ++ [ByteString] -> [Char] forall a. Show a => a -> [Char] show [ByteString] -uniqueIds [Char] -> ShowS +uniqueIds [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] ". Choosing " [Char] -> ShowS @@ -1006,42 +1006,42 @@ ++ ByteString -> [Char] forall a. Show a => a -> [Char] show ByteString -selectedId +selectedId ByteString -> m ByteString forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return ByteString -selectedId - Double -genPos <- case [Double] -uniqueGenPos of - [Double -p] -> Double -> m Double +selectedId + Double +genPos <- case [Double] +uniqueGenPos of + [Double +p] -> Double -> m Double forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return Double -p +p [Double -0.0, Double -p] -> Double -> m Double +0.0, Double +p] -> Double -> m Double forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return Double -p -- 0.0 is considered "no data" in genetic position column +p -- 0.0 is considered "no data" in genetic position column [Double] _ -> do -- multiple non-zero genetic positions. Choosing the largest one. - let selectedGenPos :: Double -selectedGenPos = [Double] -> Double + let selectedGenPos :: Double +selectedGenPos = [Double] -> Double forall a. Ord a => [a] -> a forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum [Double] -uniqueGenPos +uniqueGenPos LogA -> ReaderT Env IO () -> m () forall (m :: * -> *). MonadIO m => LogA -> ReaderT Env IO () -> m () logWithEnv LogA -logA (ReaderT Env IO () -> m ()) +logA (ReaderT Env IO () -> m ()) -> ([Char] -> ReaderT Env IO ()) -> [Char] -> m () forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> ReaderT Env IO () @@ -1054,7 +1054,7 @@ ++ ByteString -> [Char] forall a. Show a => a -> [Char] show ByteString -id_ [Char] -> ShowS +id_ [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] ": " [Char] -> ShowS @@ -1063,7 +1063,7 @@ [Double] -> [Char] forall a. Show a => a -> [Char] show [Double] -uniqueGenPos [Char] -> ShowS +uniqueGenPos [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] ". Choosing " [Char] -> ShowS @@ -1071,14 +1071,14 @@ ++ Double -> [Char] forall a. Show a => a -> [Char] show Double -selectedGenPos +selectedGenPos Double -> m Double forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return Double -selectedGenPos +selectedGenPos case [Char] -uniqueAlleles of +uniqueAlleles of [] -> do -- no non-missing alleles found -- logWithEnv LogA . logDebug $ -- "SNP " ++ show id_ ++ " appears to have no data (both ref and alt allele are blank" @@ -1093,14 +1093,14 @@ -> Char -> EigenstratSnpEntry EigenstratSnpEntry Chrom -chrom Int -pos Double -genPos ByteString -id_ Char +chrom Int +pos Double +genPos ByteString +id_ Char 'N' Char 'N') - [Char -r] -> do -- only one non-missing allele found + [Char +r] -> do -- only one non-missing allele found -- logWithEnv LogA . logDebug $ -- "SNP " ++ show id_ ++ " appears to be monomorphic (only one of ref and alt alleles are non-blank)" EigenstratSnpEntry -> m EigenstratSnpEntry @@ -1114,15 +1114,15 @@ -> Char -> EigenstratSnpEntry EigenstratSnpEntry Chrom -chrom Int -pos Double -genPos ByteString -id_ Char +chrom Int +pos Double +genPos ByteString +id_ Char 'N' Char -r) - [Char -ref, Char -alt] -> +r) + [Char +ref, Char +alt] -> EigenstratSnpEntry -> m EigenstratSnpEntry forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a @@ -1134,12 +1134,12 @@ -> Char -> EigenstratSnpEntry EigenstratSnpEntry Chrom -chrom Int -pos Double -genPos ByteString -id_ Char -ref Char -alt) +chrom Int +pos Double +genPos ByteString +id_ Char +ref Char +alt) [Char] _ -> IO EigenstratSnpEntry -> m EigenstratSnpEntry forall a. IO a -> m a @@ -1161,70 +1161,70 @@ ++ [EigenstratSnpEntry] -> [Char] forall a. Show a => a -> [Char] show [EigenstratSnpEntry] -snpEntries) +snpEntries) recodeAlleles :: EigenstratSnpEntry -> EigenstratSnpEntry -> GenoLine -> Either String GenoLine recodeAlleles :: EigenstratSnpEntry -> EigenstratSnpEntry -> GenoLine -> Either [Char] GenoLine -recodeAlleles EigenstratSnpEntry -consensusSnpEntry EigenstratSnpEntry -snpEntry GenoLine -genoLine = do +recodeAlleles EigenstratSnpEntry +consensusSnpEntry EigenstratSnpEntry +snpEntry GenoLine +genoLine = do let (EigenstratSnpEntry Chrom _ Int _ Double _ ByteString -_ Char -consRefA Char -consAltA) = EigenstratSnpEntry -consensusSnpEntry +_ Char +consRefA Char +consAltA) = EigenstratSnpEntry +consensusSnpEntry let (EigenstratSnpEntry Chrom _ Int _ Double _ ByteString -_ Char -refA Char -altA) = EigenstratSnpEntry -snpEntry - let maybeRecodedGenoline :: Either [Char] GenoLine -maybeRecodedGenoline = case (Char -> Bool -isMissing Char -consRefA, Char -> Bool -isMissing Char -consAltA) of +_ Char +refA Char +altA) = EigenstratSnpEntry +snpEntry + let maybeRecodedGenoline :: Either [Char] GenoLine +maybeRecodedGenoline = case (Char -> Bool +isMissing Char +consRefA, Char -> Bool +isMissing Char +consAltA) of (Bool False, Bool False) -> Char -> Char -> Char -> Char -> Either [Char] GenoLine forall {a}. Eq a => a -> a -> a -> a -> Either [Char] GenoLine -maybeFlipGenoLine1 Char -consRefA Char -consAltA Char -refA Char -altA +maybeFlipGenoLine1 Char +consRefA Char +consAltA Char +refA Char +altA (Bool False, Bool True) -> Char -> Char -> Char -> Either [Char] GenoLine forall {a}. Eq a => a -> a -> a -> Either [Char] GenoLine -maybeFlipGenoLine2 Char -consRefA Char -refA Char -altA +maybeFlipGenoLine2 Char +consRefA Char +refA Char +altA (Bool True, Bool False) -> Char -> Char -> Char -> Either [Char] GenoLine forall {a}. Eq a => a -> a -> a -> Either [Char] GenoLine -maybeFlipGenoLine3 Char -consAltA Char -refA Char -altA +maybeFlipGenoLine3 Char +consAltA Char +refA Char +altA (Bool True, Bool True) -> Either [Char] GenoLine -maybeFlipGenoLine4 +maybeFlipGenoLine4 case Either [Char] GenoLine -maybeRecodedGenoline of - Left [Char] -err -> [Char] -> Either [Char] GenoLine +maybeRecodedGenoline of + Left [Char] +err -> [Char] -> Either [Char] GenoLine forall a b. a -> Either a b Left ([Char] "At snp " [Char] -> ShowS @@ -1232,82 +1232,82 @@ ++ EigenstratSnpEntry -> [Char] forall a. Show a => a -> [Char] show EigenstratSnpEntry -snpEntry [Char] -> ShowS +snpEntry [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] ": allele coding error due to inconsistent \ \alleles with consensus alleles ref = " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char -consRefA] [Char] -> ShowS +consRefA] [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] ", alt = " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char -consAltA] [Char] -> ShowS +consAltA] [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] ". Error: " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] -err) - Right GenoLine -recodedGenoLine -> GenoLine -> Either [Char] GenoLine +err) + Right GenoLine +recodedGenoLine -> GenoLine -> Either [Char] GenoLine forall a. a -> Either [Char] a forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -recodedGenoLine +recodedGenoLine where - isMissing :: Char -> Bool -isMissing Char + isMissing :: Char -> Bool +isMissing Char '0' = Bool True - isMissing Char + isMissing Char 'N' = Bool True - isMissing Char + isMissing Char _ = Bool False - maybeFlipGenoLine1 :: a -> a -> a -> a -> Either [Char] GenoLine -maybeFlipGenoLine1 a -consRefA a -consAltA a -refA a -altA + maybeFlipGenoLine1 :: a -> a -> a -> a -> Either [Char] GenoLine +maybeFlipGenoLine1 a +consRefA a +consAltA a +refA a +altA | (a -refA, a -altA) (a, a) -> (a, a) -> Bool +refA, a +altA) (a, a) -> (a, a) -> Bool forall a. Eq a => a -> a -> Bool == (a -consRefA, a -consAltA) = GenoLine -> Either [Char] GenoLine +consRefA, a +consAltA) = GenoLine -> Either [Char] GenoLine forall a. a -> Either [Char] a forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -genoLine -- simple concordance +genoLine -- simple concordance | (a -refA, a -altA) (a, a) -> (a, a) -> Bool +refA, a +altA) (a, a) -> (a, a) -> Bool forall a. Eq a => a -> a -> Bool == (a -consAltA, a -consRefA) = GenoLine -> Either [Char] GenoLine +consAltA, a +consRefA) = GenoLine -> Either [Char] GenoLine forall a. a -> Either [Char] a forall (m :: * -> *) a. Monad m => a -> m a return ((GenoEntry -> GenoEntry) -> GenoLine -> GenoLine forall a b. (a -> b) -> Vector a -> Vector b V.map GenoEntry -> GenoEntry -flipGeno GenoLine -genoLine) -- alleles flipped +flipGeno GenoLine +genoLine) -- alleles flipped | a -refA a -> a -> Bool +refA a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -consRefA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine +consRefA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry HomRef (Either [Char] GenoLine -> Either [Char] GenoLine) -> Either [Char] GenoLine -> Either [Char] GenoLine forall a b. (a -> b) -> a -> b @@ -1315,14 +1315,14 @@ forall a. a -> Either [Char] a forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -genoLine -- refs equal, alts different, need everything HomRef or Missing +genoLine -- refs equal, alts different, need everything HomRef or Missing | a -altA a -> a -> Bool +altA a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -consAltA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine +consAltA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry HomAlt (Either [Char] GenoLine -> Either [Char] GenoLine) -> Either [Char] GenoLine -> Either [Char] GenoLine forall a b. (a -> b) -> a -> b @@ -1330,14 +1330,14 @@ forall a. a -> Either [Char] a forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -genoLine -- alts equal, refs different, need everything HomAlt +genoLine -- alts equal, refs different, need everything HomAlt | a -refA a -> a -> Bool +refA a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -consAltA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine +consAltA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry HomRef (Either [Char] GenoLine -> Either [Char] GenoLine) -> Either [Char] GenoLine -> Either [Char] GenoLine forall a b. (a -> b) -> a -> b @@ -1347,15 +1347,15 @@ return ((GenoEntry -> GenoEntry) -> GenoLine -> GenoLine forall a b. (a -> b) -> Vector a -> Vector b V.map GenoEntry -> GenoEntry -flipGeno GenoLine -genoLine) -- need everything HomRef, then flip +flipGeno GenoLine +genoLine) -- need everything HomRef, then flip | a -altA a -> a -> Bool +altA a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -consRefA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine +consRefA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry HomAlt (Either [Char] GenoLine -> Either [Char] GenoLine) -> Either [Char] GenoLine -> Either [Char] GenoLine forall a b. (a -> b) -> a -> b @@ -1365,12 +1365,12 @@ return ((GenoEntry -> GenoEntry) -> GenoLine -> GenoLine forall a b. (a -> b) -> Vector a -> Vector b V.map GenoEntry -> GenoEntry -flipGeno GenoLine -genoLine) -- need everything HomAlt, then flip +flipGeno GenoLine +genoLine) -- need everything HomAlt, then flip | Bool otherwise = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry Missing (Either [Char] GenoLine -> Either [Char] GenoLine) -> Either [Char] GenoLine -> Either [Char] GenoLine forall a b. (a -> b) -> a -> b @@ -1378,19 +1378,19 @@ forall a. a -> Either [Char] a forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -genoLine - maybeFlipGenoLine2 :: a -> a -> a -> Either [Char] GenoLine -maybeFlipGenoLine2 a -consRefA a -refA a -altA +genoLine + maybeFlipGenoLine2 :: a -> a -> a -> Either [Char] GenoLine +maybeFlipGenoLine2 a +consRefA a +refA a +altA | a -refA a -> a -> Bool +refA a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -consRefA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine +consRefA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry HomRef (Either [Char] GenoLine -> Either [Char] GenoLine) -> Either [Char] GenoLine -> Either [Char] GenoLine forall a b. (a -> b) -> a -> b @@ -1398,14 +1398,14 @@ forall a. a -> Either [Char] a forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -genoLine -- refs equal, need everything HomRef or Missing +genoLine -- refs equal, need everything HomRef or Missing | a -altA a -> a -> Bool +altA a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -consRefA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine +consRefA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry HomAlt (Either [Char] GenoLine -> Either [Char] GenoLine) -> Either [Char] GenoLine -> Either [Char] GenoLine forall a b. (a -> b) -> a -> b @@ -1415,12 +1415,12 @@ return ((GenoEntry -> GenoEntry) -> GenoLine -> GenoLine forall a b. (a -> b) -> Vector a -> Vector b V.map GenoEntry -> GenoEntry -flipGeno GenoLine -genoLine) -- ref flipped, need everything HomAlt or Missing, then flip +flipGeno GenoLine +genoLine) -- ref flipped, need everything HomAlt or Missing, then flip | Bool otherwise = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry Missing (Either [Char] GenoLine -> Either [Char] GenoLine) -> Either [Char] GenoLine -> Either [Char] GenoLine forall a b. (a -> b) -> a -> b @@ -1428,19 +1428,19 @@ forall a. a -> Either [Char] a forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -genoLine - maybeFlipGenoLine3 :: a -> a -> a -> Either [Char] GenoLine -maybeFlipGenoLine3 a -consAltA a -refA a -altA +genoLine + maybeFlipGenoLine3 :: a -> a -> a -> Either [Char] GenoLine +maybeFlipGenoLine3 a +consAltA a +refA a +altA | a -refA a -> a -> Bool +refA a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -consAltA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine +consAltA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry HomRef (Either [Char] GenoLine -> Either [Char] GenoLine) -> Either [Char] GenoLine -> Either [Char] GenoLine forall a b. (a -> b) -> a -> b @@ -1450,15 +1450,15 @@ return ((GenoEntry -> GenoEntry) -> GenoLine -> GenoLine forall a b. (a -> b) -> Vector a -> Vector b V.map GenoEntry -> GenoEntry -flipGeno GenoLine -genoLine) -- alt flipped, need everything HomAlt or Missing, then flip +flipGeno GenoLine +genoLine) -- alt flipped, need everything HomAlt or Missing, then flip | a -altA a -> a -> Bool +altA a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -consAltA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine +consAltA = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry HomAlt (Either [Char] GenoLine -> Either [Char] GenoLine) -> Either [Char] GenoLine -> Either [Char] GenoLine forall a b. (a -> b) -> a -> b @@ -1466,11 +1466,11 @@ forall a. a -> Either [Char] a forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -genoLine -- alts equal, need everything HomAlt or Missing +genoLine -- alts equal, need everything HomAlt or Missing | Bool otherwise = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry Missing (Either [Char] GenoLine -> Either [Char] GenoLine) -> Either [Char] GenoLine -> Either [Char] GenoLine forall a b. (a -> b) -> a -> b @@ -1478,11 +1478,11 @@ forall a. a -> Either [Char] a forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -genoLine - maybeFlipGenoLine4 :: Either [Char] GenoLine -maybeFlipGenoLine4 = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine +genoLine + maybeFlipGenoLine4 :: Either [Char] GenoLine +maybeFlipGenoLine4 = GenoEntry -> Either [Char] GenoLine -> Either [Char] GenoLine forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry Missing (Either [Char] GenoLine -> Either [Char] GenoLine) -> Either [Char] GenoLine -> Either [Char] GenoLine forall a b. (a -> b) -> a -> b @@ -1490,37 +1490,37 @@ forall a. a -> Either [Char] a forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -genoLine - checked :: GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry -Missing Either [Char] b -action = if (GenoEntry -> Bool) -> GenoLine -> Bool +genoLine + checked :: GenoEntry -> Either [Char] b -> Either [Char] b +checked GenoEntry +Missing Either [Char] b +action = if (GenoEntry -> Bool) -> GenoLine -> Bool forall a. (a -> Bool) -> Vector a -> Bool V.any (GenoEntry -> GenoEntry -> Bool forall a. Eq a => a -> a -> Bool /= GenoEntry Missing) GenoLine -genoLine then [Char] -> Either [Char] b +genoLine then [Char] -> Either [Char] b forall a b. a -> Either a b Left [Char] "Requiring all genotype missing" else Either [Char] b -action - checked GenoEntry -t Either [Char] b -action = if (GenoEntry -> Bool) -> GenoLine -> Bool +action + checked GenoEntry +t Either [Char] b +action = if (GenoEntry -> Bool) -> GenoLine -> Bool forall a. (a -> Bool) -> Vector a -> Bool -V.any (\GenoEntry -g -> GenoEntry -g GenoEntry -> GenoEntry -> Bool +V.any (\GenoEntry +g -> GenoEntry +g GenoEntry -> GenoEntry -> Bool forall a. Eq a => a -> a -> Bool /= GenoEntry Missing Bool -> Bool -> Bool && GenoEntry -g GenoEntry -> GenoEntry -> Bool +g GenoEntry -> GenoEntry -> Bool forall a. Eq a => a -> a -> Bool /= GenoEntry -t) GenoLine -genoLine then [Char] -> Either [Char] b +t) GenoLine +genoLine then [Char] -> Either [Char] b forall a b. a -> Either a b Left ([Char] "requiring all genotypes missing or " [Char] -> ShowS @@ -1528,28 +1528,28 @@ ++ GenoEntry -> [Char] forall a. Show a => a -> [Char] show GenoEntry -t) else Either [Char] b -action - flipGeno :: GenoEntry -> GenoEntry -flipGeno GenoEntry +t) else Either [Char] b +action + flipGeno :: GenoEntry -> GenoEntry +flipGeno GenoEntry HomRef = GenoEntry HomAlt - flipGeno GenoEntry + flipGeno GenoEntry HomAlt = GenoEntry HomRef - flipGeno GenoEntry -g = GenoEntry -g + flipGeno GenoEntry +g = GenoEntry +g -printSNPCopyProgress :: (MonadIO m) => LogA -> UTCTime -> Pipe a a m () +printSNPCopyProgress :: (MonadIO m) => LogA -> UTCTime -> Pipe a a m () printSNPCopyProgress :: forall (m :: * -> *) a. MonadIO m => LogA -> UTCTime -> Pipe a a m () -printSNPCopyProgress LogA -logA UTCTime -startTime = do - IORef Int -counterRef <- IO (IORef Int) -> Proxy () a () a m (IORef Int) +printSNPCopyProgress LogA +logA UTCTime +startTime = do + IORef Int +counterRef <- IO (IORef Int) -> Proxy () a () a m (IORef Int) forall a. IO a -> Proxy () a () a m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO (IORef Int) -> Proxy () a () a m (IORef Int)) @@ -1569,10 +1569,10 @@ cat ((a -> Pipe a a m ()) -> Pipe a a m ()) -> (a -> Pipe a a m ()) -> Pipe a a m () forall a b. (a -> b) -> a -> b -$ \a -val -> do - Int -n <- IO Int -> Proxy () a () a m Int +$ \a +val -> do + Int +n <- IO Int -> Proxy () a () a m Int forall a. IO a -> Proxy () a () a m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Int -> Proxy () a () a m Int) @@ -1581,9 +1581,9 @@ $ IORef Int -> IO Int forall a. IORef a -> IO a readIORef IORef Int -counterRef - UTCTime -currentTime <- IO UTCTime -> Proxy () a () a m UTCTime +counterRef + UTCTime +currentTime <- IO UTCTime -> Proxy () a () a m UTCTime forall a. IO a -> Proxy () a () a m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO UTCTime @@ -1593,15 +1593,15 @@ MonadIO m => LogA -> ReaderT Env IO () -> m () logWithEnv LogA -logA (ReaderT Env IO () -> Pipe a a m ()) +logA (ReaderT Env IO () -> Pipe a a m ()) -> ReaderT Env IO () -> Pipe a a m () forall a b. (a -> b) -> a -> b $ Int -> NominalDiffTime -> ReaderT Env IO () -logProgress Int -n (UTCTime -> UTCTime -> NominalDiffTime +logProgress Int +n (UTCTime -> UTCTime -> NominalDiffTime diffUTCTime UTCTime -currentTime UTCTime -startTime) +currentTime UTCTime +startTime) IO () -> Pipe a a m () forall a. IO a -> Proxy () a () a m a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -1610,22 +1610,22 @@ $ IORef Int -> (Int -> Int) -> IO () forall a. IORef a -> (a -> a) -> IO () modifyIORef IORef Int -counterRef (Int -> Int -> Int +counterRef (Int -> Int -> Int forall a. Num a => a -> a -> a +Int 1) a -> Pipe a a m () forall (m :: * -> *) a x' x. Functor m => a -> Proxy x' x () a m () yield a -val +val where - logProgress :: Int -> NominalDiffTime -> PoseidonIO () - logProgress :: Int -> NominalDiffTime -> ReaderT Env IO () -logProgress Int -c NominalDiffTime -t + logProgress :: Int -> NominalDiffTime -> PoseidonIO () + logProgress :: Int -> NominalDiffTime -> ReaderT Env IO () +logProgress Int +c NominalDiffTime +t | Int -c Int -> Int -> Int +c Int -> Int -> Int forall a. Integral a => a -> a -> a `rem` Int 10000 Int -> Int -> Bool @@ -1642,19 +1642,19 @@ 9 (Int -> [Char] forall a. Show a => a -> [Char] show Int -c) [Char] -> ShowS +c) [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] " " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ Int -> [Char] -prettyTime (NominalDiffTime -> Int +prettyTime (NominalDiffTime -> Int forall b. Integral b => NominalDiffTime -> b forall a b. (RealFrac a, Integral b) => a -> b floor NominalDiffTime -t) +t) | Int -c Int -> Int -> Bool +c Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int 1000 = [Char] -> ReaderT Env IO () @@ -1667,85 +1667,85 @@ forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return () - prettyTime :: Int -> String - prettyTime :: Int -> [Char] -prettyTime Int -t + prettyTime :: Int -> String + prettyTime :: Int -> [Char] +prettyTime Int +t | Int -t Int -> Int -> Bool +t Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int 60 = Int -> [Char] forall a. Show a => a -> [Char] show Int -t [Char] -> ShowS +t [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] "s" | Int -t Int -> Int -> Bool +t Int -> Int -> Bool forall a. Ord a => a -> a -> Bool >= Int 60 Bool -> Bool -> Bool && Int -t Int -> Int -> Bool +t Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int 3600 = do - let (Int -minutes, Int -rest) = Int -t Int -> Int -> (Int, Int) + let (Int +minutes, Int +rest) = Int +t Int -> Int -> (Int, Int) forall a. Integral a => a -> a -> (a, a) `quotRem` Int 60 Int -> [Char] forall a. Show a => a -> [Char] show Int -minutes [Char] -> ShowS +minutes [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] "m " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ Int -> [Char] -prettyTime Int -rest +prettyTime Int +rest | Bool otherwise = do - let (Int -hours, Int -rest) = Int -t Int -> Int -> (Int, Int) + let (Int +hours, Int +rest) = Int +t Int -> Int -> (Int, Int) forall a. Integral a => a -> a -> (a, a) `quotRem` Int 3600 Int -> [Char] forall a. Show a => a -> [Char] show Int -hours [Char] -> ShowS +hours [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ [Char] "h " [Char] -> ShowS forall a. [a] -> [a] -> [a] ++ Int -> [Char] -prettyTime Int -rest +prettyTime Int +rest selectIndices :: [Int] -> (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) selectIndices :: [Int] -> (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) -selectIndices [Int] -indices (EigenstratSnpEntry -snpEntry, GenoLine -genoLine) = (EigenstratSnpEntry -snpEntry, [GenoEntry] -> GenoLine +selectIndices [Int] +indices (EigenstratSnpEntry +snpEntry, GenoLine +genoLine) = (EigenstratSnpEntry +snpEntry, [GenoEntry] -> GenoLine forall a. [a] -> Vector a V.fromList [GenoLine -genoLine GenoLine -> Int -> GenoEntry +genoLine GenoLine -> Int -> GenoEntry forall a. Vector a -> Int -> a V.! Int -i | Int -i <- [Int] -indices]) +i | Int +i <- [Int] +indices]) \ No newline at end of file diff --git a/src/Poseidon.Janno.html b/src/Poseidon.Janno.html index 46793daf..f51d9df7 100644 --- a/src/Poseidon.Janno.html +++ b/src/Poseidon.Janno.html @@ -1,4 +1,4 @@ -
{-# LANGUAGE DeriveGeneric       #-}
+
{-# LANGUAGE DeriveGeneric       #-}
 {-# LANGUAGE FlexibleInstances   #-}
 {-# LANGUAGE OverloadedStrings   #-}
 {-# LANGUAGE ScopedTypeVariables #-}
@@ -9,2818 +9,97 @@
 
 module Poseidon.Janno (
     JannoRow(..),
-    JannoSex (..),
-    JannoList (..),
-    Sex (..),
-    BCADAge (..),
-    JannoCountry (..),
-    makeJannoCountryUnsafe,
-    Latitude (..),
-    Longitude (..),
-    JannoDateType (..),
-    JannoCaptureType (..),
-    JannoGenotypePloidy (..),
-    Percent (..),
-    JannoUDG (..),
-    JURI (..),
-    RelationDegree (..),
-    JannoLibraryBuilt (..),
-    AccessionID (..),
-    makeAccessionID,
-    makeLatitude, makeLongitude,
-    writeJannoFile,
-    readJannoFile,
-    createMinimalJanno,
-    createMinimalSample,
-    jannoHeaderString,
-    CsvNamedRecord (..),
-    JannoRows (..),
-    JannoStringList,
-    filterLookup,
-    filterLookupOptional,
-    getCsvNR,
-    encodingOptions,
-    decodingOptions,
-    explicitNA,
-    removeUselessSuffix,
-    parseCsvParseError,
-    renderCsvParseError,
-    getMaybeJannoList
-) where
-
-import           Poseidon.Utils                       (PoseidonException (..),
-                                                       PoseidonIO, logDebug,
-                                                       logError, logWarning,
-                                                       renderPoseidonException)
-
-
-import           Control.Applicative                  (empty)
-import           Control.Exception                    (throwIO)
-import           Control.Monad                        (unless, when)
-import qualified Control.Monad.Except                 as E
-import           Control.Monad.IO.Class               (liftIO)
-import qualified Control.Monad.Writer                 as W
-import           Country                              (Country, alphaTwoUpper,
-                                                       decodeAlphaTwo)
-import           Data.Aeson                           (FromJSON, Options (..),
-                                                       ToJSON, Value (..),
-                                                       defaultOptions,
-                                                       genericToEncoding,
-                                                       parseJSON, toEncoding,
-                                                       toJSON, withText)
-import           Data.Aeson.Types                     (emptyObject)
-import           Data.Bifunctor                       (second)
-import qualified Data.ByteString.Char8                as Bchs
-import qualified Data.ByteString.Lazy.Char8           as Bch
-import           Data.Char                            (chr, isSpace, ord)
-import qualified Data.Csv                             as Csv
-import           Data.Either                          (lefts, rights)
-import qualified Data.HashMap.Strict                  as HM
-import           Data.List                            (elemIndex, foldl',
-                                                       intercalate, nub, sort,
-                                                       (\\))
-import           Data.Maybe                           (fromJust)
-import           Data.Text                            (pack, replace, unpack)
-import qualified Data.Text                            as T
-import qualified Data.Text.Encoding                   as T
-import qualified Data.Vector                          as V
-import           Generics.SOP.TH                      (deriveGeneric)
-import           GHC.Generics                         (Generic)
-import           Network.URI                          (isURIReference)
-import           Options.Applicative.Help.Levenshtein (editDistance)
-import           SequenceFormats.Eigenstrat           (EigenstratIndEntry (..),
-                                                       Sex (..))
-import qualified Text.Parsec                          as P
-import qualified Text.Parsec.String                   as P
-import qualified Text.Regex.TDFA                      as Reg
-
--- | A datatype for genetic sex
-newtype JannoSex = JannoSex { JannoSex -> Sex
-sfSex :: Sex }
-    deriving (JannoSex -> JannoSex -> Bool
-(JannoSex -> JannoSex -> Bool)
--> (JannoSex -> JannoSex -> Bool) -> Eq JannoSex
+    GeneticSex (..),
+    GroupName (..),
+    ListColumn (..),
+    Sex (..),
+    JannoCountryISO (..),
+    JannoLatitude (..),
+    JannoLongitude (..),
+    JannoDateType (..),
+    JannoDateBCADMedian (..),
+    JannoCaptureType (..),
+    JannoGenotypePloidy (..),
+    JannoUDG (..),
+    JannoRelationDegree (..),
+    JannoLibraryBuilt (..),
+    writeJannoFile,
+    readJannoFile,
+    createMinimalJanno,
+    createMinimalSample,
+    jannoHeaderString,
+    CsvNamedRecord (..),
+    JannoRows (..),
+    JannoStringList,
+    filterLookup,
+    filterLookupOptional,
+    getCsvNR,
+    encodingOptions,
+    decodingOptions,
+    explicitNA,
+    removeUselessSuffix,
+    parseCsvParseError,
+    renderCsvParseError,
+    getMaybeListColumn,
+) where
+
+import           Poseidon.ColumnTypes
+import           Poseidon.Utils                       (PoseidonException (..),
+                                                       PoseidonIO, logDebug,
+                                                       logError, logWarning,
+                                                       renderPoseidonException)
+
+import           Control.Exception                    (throwIO)
+import           Control.Monad                        (unless, when)
+import qualified Control.Monad.Except                 as E
+import           Control.Monad.IO.Class               (liftIO)
+import qualified Control.Monad.Writer                 as W
+import           Data.Bifunctor                       (second)
+import qualified Data.ByteString.Char8                as Bchs
+import qualified Data.ByteString.Lazy.Char8           as Bch
+import           Data.Char                            (chr, isSpace, ord)
+import qualified Data.Csv                             as Csv
+import           Data.Either                          (lefts, rights)
+import qualified Data.HashMap.Strict                  as HM
+import           Data.List                            (elemIndex, foldl',
+                                                       intercalate, nub, sort,
+                                                       (\\))
+import           Data.Maybe                           (fromJust)
+import qualified Data.Text                            as T
+import qualified Data.Vector                          as V
+import           Generics.SOP.TH                      (deriveGeneric)
+import           GHC.Generics                         (Generic)
+import           Options.Applicative.Help.Levenshtein (editDistance)
+import           SequenceFormats.Eigenstrat           (EigenstratIndEntry (..),
+                                                       Sex (..))
+import qualified Text.Parsec                          as P
+import qualified Text.Parsec.String                   as P
+
+-- | A general datatype for janno list columns
+newtype ListColumn a = ListColumn {forall a. ListColumn a -> [a]
+getListColumn :: [a]}
+    deriving (ListColumn a -> ListColumn a -> Bool
+(ListColumn a -> ListColumn a -> Bool)
+-> (ListColumn a -> ListColumn a -> Bool) -> Eq (ListColumn a)
+forall a. Eq a => ListColumn a -> ListColumn a -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: JannoSex -> JannoSex -> Bool
-== :: JannoSex -> JannoSex -> Bool
-$c/= :: JannoSex -> JannoSex -> Bool
-/= :: JannoSex -> JannoSex -> Bool
-Eq)
-
-instance Show JannoSex where
-    show :: JannoSex -> String
-show (JannoSex Sex
-Female)  = String
-"F"
-    show (JannoSex Sex
-Male)    = String
-"M"
-    show (JannoSex Sex
-Unknown) = String
-"U"
-
-instance Ord JannoSex where
-    compare :: JannoSex -> JannoSex -> Ordering
-compare (JannoSex Sex
-Female) (JannoSex Sex
-Male)    = Ordering
-GT
-    compare (JannoSex Sex
-Male) (JannoSex Sex
-Female)    = Ordering
-LT
-    compare (JannoSex Sex
-Male) (JannoSex Sex
-Unknown)   = Ordering
-GT
-    compare (JannoSex Sex
-Unknown) (JannoSex Sex
-Male)   = Ordering
-LT
-    compare (JannoSex Sex
-Female) (JannoSex Sex
-Unknown) = Ordering
-GT
-    compare (JannoSex Sex
-Unknown) (JannoSex Sex
-Female) = Ordering
-LT
-    compare JannoSex
-_ JannoSex
-_                                  = Ordering
-EQ
-
-makeJannoSex :: MonadFail m => String -> m JannoSex
-makeJannoSex :: forall (m :: * -> *). MonadFail m => String -> m JannoSex
-makeJannoSex String
-x
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"F"  = JannoSex -> m JannoSex
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (Sex -> JannoSex
-JannoSex Sex
-Female)
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"M"  = JannoSex -> m JannoSex
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (Sex -> JannoSex
-JannoSex Sex
-Male)
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"U"  = JannoSex -> m JannoSex
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (Sex -> JannoSex
-JannoSex Sex
-Unknown)
-    | Bool
-otherwise = String -> m JannoSex
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m JannoSex) -> String -> m JannoSex
-forall a b. (a -> b) -> a -> b
-$ String
-"Sex " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ ShowS
-forall a. Show a => a -> String
-show String
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ String
-" not in [F, M, U]"
-
-instance Csv.ToField JannoSex where
-    toField :: JannoSex -> ByteString
-toField JannoSex
-x = String -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField (String -> ByteString) -> String -> ByteString
-forall a b. (a -> b) -> a -> b
-$ JannoSex -> String
-forall a. Show a => a -> String
-show JannoSex
-x
-instance Csv.FromField JannoSex where
-    parseField :: ByteString -> Parser JannoSex
-parseField ByteString
-x = ByteString -> Parser String
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser String -> (String -> Parser JannoSex) -> Parser JannoSex
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= String -> Parser JannoSex
-forall (m :: * -> *). MonadFail m => String -> m JannoSex
-makeJannoSex
-instance ToJSON JannoSex where
-    toJSON :: JannoSex -> Value
-toJSON JannoSex
-x  = Text -> Value
-String (Text -> Value) -> Text -> Value
-forall a b. (a -> b) -> a -> b
-$ String -> Text
-T.pack (String -> Text) -> String -> Text
-forall a b. (a -> b) -> a -> b
-$ JannoSex -> String
-forall a. Show a => a -> String
-show JannoSex
-x
-instance FromJSON JannoSex where
-    parseJSON :: Value -> Parser JannoSex
-parseJSON = String -> (Text -> Parser JannoSex) -> Value -> Parser JannoSex
-forall a. String -> (Text -> Parser a) -> Value -> Parser a
-withText String
-"JannoSex" (String -> Parser JannoSex
-forall (m :: * -> *). MonadFail m => String -> m JannoSex
-makeJannoSex (String -> Parser JannoSex)
--> (Text -> String) -> Text -> Parser JannoSex
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. Text -> String
-T.unpack)
-
--- | A datatype for BC-AD ages
-newtype BCADAge =
-        BCADAge Int
-    deriving (BCADAge -> BCADAge -> Bool
-(BCADAge -> BCADAge -> Bool)
--> (BCADAge -> BCADAge -> Bool) -> Eq BCADAge
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: BCADAge -> BCADAge -> Bool
-== :: BCADAge -> BCADAge -> Bool
-$c/= :: BCADAge -> BCADAge -> Bool
-/= :: BCADAge -> BCADAge -> Bool
-Eq, Eq BCADAge
-Eq BCADAge
--> (BCADAge -> BCADAge -> Ordering)
--> (BCADAge -> BCADAge -> Bool)
--> (BCADAge -> BCADAge -> Bool)
--> (BCADAge -> BCADAge -> Bool)
--> (BCADAge -> BCADAge -> Bool)
--> (BCADAge -> BCADAge -> BCADAge)
--> (BCADAge -> BCADAge -> BCADAge)
--> Ord BCADAge
-BCADAge -> BCADAge -> Bool
-BCADAge -> BCADAge -> Ordering
-BCADAge -> BCADAge -> BCADAge
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: BCADAge -> BCADAge -> Ordering
-compare :: BCADAge -> BCADAge -> Ordering
-$c< :: BCADAge -> BCADAge -> Bool
-< :: BCADAge -> BCADAge -> Bool
-$c<= :: BCADAge -> BCADAge -> Bool
-<= :: BCADAge -> BCADAge -> Bool
-$c> :: BCADAge -> BCADAge -> Bool
-> :: BCADAge -> BCADAge -> Bool
-$c>= :: BCADAge -> BCADAge -> Bool
->= :: BCADAge -> BCADAge -> Bool
-$cmax :: BCADAge -> BCADAge -> BCADAge
-max :: BCADAge -> BCADAge -> BCADAge
-$cmin :: BCADAge -> BCADAge -> BCADAge
-min :: BCADAge -> BCADAge -> BCADAge
-Ord, (forall x. BCADAge -> Rep BCADAge x)
--> (forall x. Rep BCADAge x -> BCADAge) -> Generic BCADAge
-forall x. Rep BCADAge x -> BCADAge
-forall x. BCADAge -> Rep BCADAge x
-forall a.
-(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-$cfrom :: forall x. BCADAge -> Rep BCADAge x
-from :: forall x. BCADAge -> Rep BCADAge x
-$cto :: forall x. Rep BCADAge x -> BCADAge
-to :: forall x. Rep BCADAge x -> BCADAge
-Generic)
-
-instance Show BCADAge where
-    show :: BCADAge -> String
-show (BCADAge Int
-x) = Int -> String
-forall a. Show a => a -> String
-show Int
-x
-
-makeBCADAge :: MonadFail m => Int -> m BCADAge
-makeBCADAge :: forall (m :: * -> *). MonadFail m => Int -> m BCADAge
-makeBCADAge Int
-x =
-    let curYear :: Int
-curYear = Int
-2023 -- the current year
-    in if Int
-x Int -> Int -> Bool
-forall a. Ord a => a -> a -> Bool
->= Int
-curYear
-       then String -> m BCADAge
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m BCADAge) -> String -> m BCADAge
-forall a b. (a -> b) -> a -> b
-$ String
-"Age " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ Int -> String
-forall a. Show a => a -> String
-show Int
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ String
-" later than " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ Int -> String
-forall a. Show a => a -> String
-show Int
-curYear String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ String
-", which is impossible. " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++
-                   String
-"Did you accidentally enter a BP date?"
-      else BCADAge -> m BCADAge
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (Int -> BCADAge
-BCADAge Int
-x)
-
-instance Csv.ToField BCADAge where
-    toField :: BCADAge -> ByteString
-toField (BCADAge Int
-x) = Int -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField Int
-x
-instance Csv.FromField BCADAge where
-    parseField :: ByteString -> Parser BCADAge
-parseField ByteString
-x = ByteString -> Parser Int
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser Int -> (Int -> Parser BCADAge) -> Parser BCADAge
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= Int -> Parser BCADAge
-forall (m :: * -> *). MonadFail m => Int -> m BCADAge
-makeBCADAge
-instance ToJSON BCADAge where
-    toEncoding :: BCADAge -> Encoding
-toEncoding = Options -> BCADAge -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-instance FromJSON BCADAge-- where
-    --parseJSON = withScientific "BCADAge" $ \n ->
-    --    case toBoundedInteger n of
-    --        Nothing -> fail $ "Number" ++ show n ++ "doesn't fit into a bounded integer."
-    --        Just x -> makeBCADAge x
-
--- |A datatype to represent Date_Type in a janno file
-data JannoDateType =
-      C14
-    | Contextual
-    | Modern
-    deriving (JannoDateType -> JannoDateType -> Bool
-(JannoDateType -> JannoDateType -> Bool)
--> (JannoDateType -> JannoDateType -> Bool) -> Eq JannoDateType
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: JannoDateType -> JannoDateType -> Bool
-== :: JannoDateType -> JannoDateType -> Bool
-$c/= :: JannoDateType -> JannoDateType -> Bool
-/= :: JannoDateType -> JannoDateType -> Bool
-Eq, Eq JannoDateType
-Eq JannoDateType
--> (JannoDateType -> JannoDateType -> Ordering)
--> (JannoDateType -> JannoDateType -> Bool)
--> (JannoDateType -> JannoDateType -> Bool)
--> (JannoDateType -> JannoDateType -> Bool)
--> (JannoDateType -> JannoDateType -> Bool)
--> (JannoDateType -> JannoDateType -> JannoDateType)
--> (JannoDateType -> JannoDateType -> JannoDateType)
--> Ord JannoDateType
-JannoDateType -> JannoDateType -> Bool
-JannoDateType -> JannoDateType -> Ordering
-JannoDateType -> JannoDateType -> JannoDateType
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: JannoDateType -> JannoDateType -> Ordering
-compare :: JannoDateType -> JannoDateType -> Ordering
-$c< :: JannoDateType -> JannoDateType -> Bool
-< :: JannoDateType -> JannoDateType -> Bool
-$c<= :: JannoDateType -> JannoDateType -> Bool
-<= :: JannoDateType -> JannoDateType -> Bool
-$c> :: JannoDateType -> JannoDateType -> Bool
-> :: JannoDateType -> JannoDateType -> Bool
-$c>= :: JannoDateType -> JannoDateType -> Bool
->= :: JannoDateType -> JannoDateType -> Bool
-$cmax :: JannoDateType -> JannoDateType -> JannoDateType
-max :: JannoDateType -> JannoDateType -> JannoDateType
-$cmin :: JannoDateType -> JannoDateType -> JannoDateType
-min :: JannoDateType -> JannoDateType -> JannoDateType
-Ord, (forall x. JannoDateType -> Rep JannoDateType x)
--> (forall x. Rep JannoDateType x -> JannoDateType)
--> Generic JannoDateType
-forall x. Rep JannoDateType x -> JannoDateType
-forall x. JannoDateType -> Rep JannoDateType x
-forall a.
-(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-$cfrom :: forall x. JannoDateType -> Rep JannoDateType x
-from :: forall x. JannoDateType -> Rep JannoDateType x
-$cto :: forall x. Rep JannoDateType x -> JannoDateType
-to :: forall x. Rep JannoDateType x -> JannoDateType
-Generic, Int -> JannoDateType
-JannoDateType -> Int
-JannoDateType -> [JannoDateType]
-JannoDateType -> JannoDateType
-JannoDateType -> JannoDateType -> [JannoDateType]
-JannoDateType -> JannoDateType -> JannoDateType -> [JannoDateType]
-(JannoDateType -> JannoDateType)
--> (JannoDateType -> JannoDateType)
--> (Int -> JannoDateType)
--> (JannoDateType -> Int)
--> (JannoDateType -> [JannoDateType])
--> (JannoDateType -> JannoDateType -> [JannoDateType])
--> (JannoDateType -> JannoDateType -> [JannoDateType])
--> (JannoDateType
-    -> JannoDateType -> JannoDateType -> [JannoDateType])
--> Enum JannoDateType
-forall a.
-(a -> a)
--> (a -> a)
--> (Int -> a)
--> (a -> Int)
--> (a -> [a])
--> (a -> a -> [a])
--> (a -> a -> [a])
--> (a -> a -> a -> [a])
--> Enum a
-$csucc :: JannoDateType -> JannoDateType
-succ :: JannoDateType -> JannoDateType
-$cpred :: JannoDateType -> JannoDateType
-pred :: JannoDateType -> JannoDateType
-$ctoEnum :: Int -> JannoDateType
-toEnum :: Int -> JannoDateType
-$cfromEnum :: JannoDateType -> Int
-fromEnum :: JannoDateType -> Int
-$cenumFrom :: JannoDateType -> [JannoDateType]
-enumFrom :: JannoDateType -> [JannoDateType]
-$cenumFromThen :: JannoDateType -> JannoDateType -> [JannoDateType]
-enumFromThen :: JannoDateType -> JannoDateType -> [JannoDateType]
-$cenumFromTo :: JannoDateType -> JannoDateType -> [JannoDateType]
-enumFromTo :: JannoDateType -> JannoDateType -> [JannoDateType]
-$cenumFromThenTo :: JannoDateType -> JannoDateType -> JannoDateType -> [JannoDateType]
-enumFromThenTo :: JannoDateType -> JannoDateType -> JannoDateType -> [JannoDateType]
-Enum, JannoDateType
-JannoDateType -> JannoDateType -> Bounded JannoDateType
-forall a. a -> a -> Bounded a
-$cminBound :: JannoDateType
-minBound :: JannoDateType
-$cmaxBound :: JannoDateType
-maxBound :: JannoDateType
-Bounded)
-
-instance Show JannoDateType where
-    show :: JannoDateType -> String
-show JannoDateType
-C14        = String
-"C14"
-    show JannoDateType
-Contextual = String
-"contextual"
-    show JannoDateType
-Modern     = String
-"modern"
-
-makeJannoDateType :: MonadFail m => String -> m JannoDateType
-makeJannoDateType :: forall (m :: * -> *). MonadFail m => String -> m JannoDateType
-makeJannoDateType String
-x
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"C14"        = JannoDateType -> m JannoDateType
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoDateType
-C14
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"contextual" = JannoDateType -> m JannoDateType
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoDateType
-Contextual
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"modern"     = JannoDateType -> m JannoDateType
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoDateType
-Modern
-    | Bool
-otherwise         = String -> m JannoDateType
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m JannoDateType) -> String -> m JannoDateType
-forall a b. (a -> b) -> a -> b
-$ String
-"Date_Type " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ ShowS
-forall a. Show a => a -> String
-show String
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ String
-" not in [C14, contextual, modern]"
-
-instance Csv.ToField JannoDateType where
-    toField :: JannoDateType -> ByteString
-toField JannoDateType
-x = String -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField (String -> ByteString) -> String -> ByteString
-forall a b. (a -> b) -> a -> b
-$ JannoDateType -> String
-forall a. Show a => a -> String
-show JannoDateType
-x
-instance Csv.FromField JannoDateType where
-    parseField :: ByteString -> Parser JannoDateType
-parseField ByteString
-x = ByteString -> Parser String
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser String
--> (String -> Parser JannoDateType) -> Parser JannoDateType
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= String -> Parser JannoDateType
-forall (m :: * -> *). MonadFail m => String -> m JannoDateType
-makeJannoDateType
-instance ToJSON JannoDateType where
-    toEncoding :: JannoDateType -> Encoding
-toEncoding = Options -> JannoDateType -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-    --toEncoding x = text $ T.pack $ show x
-instance FromJSON JannoDateType-- where
-    --parseJSON = withText "JannoDateType" (makeJannoDateType . T.unpack)
-
--- |A datatype to represent Capture_Type in a janno file
-data JannoCaptureType =
-      Shotgun
-    | A1240K
-    | ArborComplete
-    | ArborPrimePlus
-    | ArborAncestralPlus
-    | TwistAncientDNA
-    | OtherCapture
-    | ReferenceGenome
-    deriving (JannoCaptureType -> JannoCaptureType -> Bool
-(JannoCaptureType -> JannoCaptureType -> Bool)
--> (JannoCaptureType -> JannoCaptureType -> Bool)
--> Eq JannoCaptureType
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: JannoCaptureType -> JannoCaptureType -> Bool
-== :: JannoCaptureType -> JannoCaptureType -> Bool
-$c/= :: JannoCaptureType -> JannoCaptureType -> Bool
-/= :: JannoCaptureType -> JannoCaptureType -> Bool
-Eq, Eq JannoCaptureType
-Eq JannoCaptureType
--> (JannoCaptureType -> JannoCaptureType -> Ordering)
--> (JannoCaptureType -> JannoCaptureType -> Bool)
--> (JannoCaptureType -> JannoCaptureType -> Bool)
--> (JannoCaptureType -> JannoCaptureType -> Bool)
--> (JannoCaptureType -> JannoCaptureType -> Bool)
--> (JannoCaptureType -> JannoCaptureType -> JannoCaptureType)
--> (JannoCaptureType -> JannoCaptureType -> JannoCaptureType)
--> Ord JannoCaptureType
-JannoCaptureType -> JannoCaptureType -> Bool
-JannoCaptureType -> JannoCaptureType -> Ordering
-JannoCaptureType -> JannoCaptureType -> JannoCaptureType
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: JannoCaptureType -> JannoCaptureType -> Ordering
-compare :: JannoCaptureType -> JannoCaptureType -> Ordering
-$c< :: JannoCaptureType -> JannoCaptureType -> Bool
-< :: JannoCaptureType -> JannoCaptureType -> Bool
-$c<= :: JannoCaptureType -> JannoCaptureType -> Bool
-<= :: JannoCaptureType -> JannoCaptureType -> Bool
-$c> :: JannoCaptureType -> JannoCaptureType -> Bool
-> :: JannoCaptureType -> JannoCaptureType -> Bool
-$c>= :: JannoCaptureType -> JannoCaptureType -> Bool
->= :: JannoCaptureType -> JannoCaptureType -> Bool
-$cmax :: JannoCaptureType -> JannoCaptureType -> JannoCaptureType
-max :: JannoCaptureType -> JannoCaptureType -> JannoCaptureType
-$cmin :: JannoCaptureType -> JannoCaptureType -> JannoCaptureType
-min :: JannoCaptureType -> JannoCaptureType -> JannoCaptureType
-Ord, (forall x. JannoCaptureType -> Rep JannoCaptureType x)
--> (forall x. Rep JannoCaptureType x -> JannoCaptureType)
--> Generic JannoCaptureType
-forall x. Rep JannoCaptureType x -> JannoCaptureType
-forall x. JannoCaptureType -> Rep JannoCaptureType x
-forall a.
-(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-$cfrom :: forall x. JannoCaptureType -> Rep JannoCaptureType x
-from :: forall x. JannoCaptureType -> Rep JannoCaptureType x
-$cto :: forall x. Rep JannoCaptureType x -> JannoCaptureType
-to :: forall x. Rep JannoCaptureType x -> JannoCaptureType
-Generic, Int -> JannoCaptureType
-JannoCaptureType -> Int
-JannoCaptureType -> [JannoCaptureType]
-JannoCaptureType -> JannoCaptureType
-JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
-JannoCaptureType
--> JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
-(JannoCaptureType -> JannoCaptureType)
--> (JannoCaptureType -> JannoCaptureType)
--> (Int -> JannoCaptureType)
--> (JannoCaptureType -> Int)
--> (JannoCaptureType -> [JannoCaptureType])
--> (JannoCaptureType -> JannoCaptureType -> [JannoCaptureType])
--> (JannoCaptureType -> JannoCaptureType -> [JannoCaptureType])
--> (JannoCaptureType
-    -> JannoCaptureType -> JannoCaptureType -> [JannoCaptureType])
--> Enum JannoCaptureType
-forall a.
-(a -> a)
--> (a -> a)
--> (Int -> a)
--> (a -> Int)
--> (a -> [a])
--> (a -> a -> [a])
--> (a -> a -> [a])
--> (a -> a -> a -> [a])
--> Enum a
-$csucc :: JannoCaptureType -> JannoCaptureType
-succ :: JannoCaptureType -> JannoCaptureType
-$cpred :: JannoCaptureType -> JannoCaptureType
-pred :: JannoCaptureType -> JannoCaptureType
-$ctoEnum :: Int -> JannoCaptureType
-toEnum :: Int -> JannoCaptureType
-$cfromEnum :: JannoCaptureType -> Int
-fromEnum :: JannoCaptureType -> Int
-$cenumFrom :: JannoCaptureType -> [JannoCaptureType]
-enumFrom :: JannoCaptureType -> [JannoCaptureType]
-$cenumFromThen :: JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
-enumFromThen :: JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
-$cenumFromTo :: JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
-enumFromTo :: JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
-$cenumFromThenTo :: JannoCaptureType
--> JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
-enumFromThenTo :: JannoCaptureType
--> JannoCaptureType -> JannoCaptureType -> [JannoCaptureType]
-Enum, JannoCaptureType
-JannoCaptureType -> JannoCaptureType -> Bounded JannoCaptureType
-forall a. a -> a -> Bounded a
-$cminBound :: JannoCaptureType
-minBound :: JannoCaptureType
-$cmaxBound :: JannoCaptureType
-maxBound :: JannoCaptureType
-Bounded)
-
-instance Show JannoCaptureType where
-    show :: JannoCaptureType -> String
-show JannoCaptureType
-Shotgun            = String
-"Shotgun"
-    show JannoCaptureType
-A1240K             = String
-"1240K"
-    show JannoCaptureType
-ArborComplete      = String
-"ArborComplete"
-    show JannoCaptureType
-ArborPrimePlus     = String
-"ArborPrimePlus"
-    show JannoCaptureType
-ArborAncestralPlus = String
-"ArborAncestralPlus"
-    show JannoCaptureType
-TwistAncientDNA    = String
-"TwistAncientDNA"
-    show JannoCaptureType
-OtherCapture       = String
-"OtherCapture"
-    show JannoCaptureType
-ReferenceGenome    = String
-"ReferenceGenome"
-
-makeJannoCaptureType :: MonadFail m => String -> m JannoCaptureType
-makeJannoCaptureType :: forall (m :: * -> *). MonadFail m => String -> m JannoCaptureType
-makeJannoCaptureType String
-x
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"Shotgun"            = JannoCaptureType -> m JannoCaptureType
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoCaptureType
-Shotgun
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"1240K"              = JannoCaptureType -> m JannoCaptureType
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoCaptureType
-A1240K
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"ArborComplete"      = JannoCaptureType -> m JannoCaptureType
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoCaptureType
-ArborComplete
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"ArborPrimePlus"     = JannoCaptureType -> m JannoCaptureType
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoCaptureType
-ArborPrimePlus
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"ArborAncestralPlus" = JannoCaptureType -> m JannoCaptureType
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoCaptureType
-ArborAncestralPlus
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"TwistAncientDNA"    = JannoCaptureType -> m JannoCaptureType
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoCaptureType
-TwistAncientDNA
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"OtherCapture"       = JannoCaptureType -> m JannoCaptureType
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoCaptureType
-OtherCapture
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"ReferenceGenome"    = JannoCaptureType -> m JannoCaptureType
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoCaptureType
-ReferenceGenome
-    | Bool
-otherwise                 = String -> m JannoCaptureType
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m JannoCaptureType) -> String -> m JannoCaptureType
-forall a b. (a -> b) -> a -> b
-$ String
-"Capture_Type " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ ShowS
-forall a. Show a => a -> String
-show String
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++
-                                      String
-" not in [Shotgun, 1240K, ArborComplete, ArborPrimePlus, ArborAncestralPlus, TwistAncientDNA, OtherCapture, ReferenceGenome]"
-
-instance Csv.ToField JannoCaptureType where
-    toField :: JannoCaptureType -> ByteString
-toField JannoCaptureType
-x = String -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField (String -> ByteString) -> String -> ByteString
-forall a b. (a -> b) -> a -> b
-$ JannoCaptureType -> String
-forall a. Show a => a -> String
-show JannoCaptureType
-x
-instance Csv.FromField JannoCaptureType where
-    parseField :: ByteString -> Parser JannoCaptureType
-parseField ByteString
-x = ByteString -> Parser String
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser String
--> (String -> Parser JannoCaptureType) -> Parser JannoCaptureType
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= String -> Parser JannoCaptureType
-forall (m :: * -> *). MonadFail m => String -> m JannoCaptureType
-makeJannoCaptureType
-instance ToJSON JannoCaptureType where
-    toEncoding :: JannoCaptureType -> Encoding
-toEncoding = Options -> JannoCaptureType -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-    --toEncoding x = text $ T.pack $ show x
-instance FromJSON JannoCaptureType-- where
-    --parseJSON = withText "JannoCaptureType" (makeJannoCaptureType . T.unpack)
-
--- |A datatype to represent Genotype_Ploidy in a janno file
-data JannoGenotypePloidy =
-      Diploid
-    | Haploid
-    deriving (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-(JannoGenotypePloidy -> JannoGenotypePloidy -> Bool)
--> (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool)
--> Eq JannoGenotypePloidy
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-== :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-$c/= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-/= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-Eq, Eq JannoGenotypePloidy
-Eq JannoGenotypePloidy
--> (JannoGenotypePloidy -> JannoGenotypePloidy -> Ordering)
--> (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool)
--> (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool)
--> (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool)
--> (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool)
--> (JannoGenotypePloidy
-    -> JannoGenotypePloidy -> JannoGenotypePloidy)
--> (JannoGenotypePloidy
-    -> JannoGenotypePloidy -> JannoGenotypePloidy)
--> Ord JannoGenotypePloidy
-JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-JannoGenotypePloidy -> JannoGenotypePloidy -> Ordering
-JannoGenotypePloidy -> JannoGenotypePloidy -> JannoGenotypePloidy
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: JannoGenotypePloidy -> JannoGenotypePloidy -> Ordering
-compare :: JannoGenotypePloidy -> JannoGenotypePloidy -> Ordering
-$c< :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-< :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-$c<= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-<= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-$c> :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-> :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-$c>= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
->= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-$cmax :: JannoGenotypePloidy -> JannoGenotypePloidy -> JannoGenotypePloidy
-max :: JannoGenotypePloidy -> JannoGenotypePloidy -> JannoGenotypePloidy
-$cmin :: JannoGenotypePloidy -> JannoGenotypePloidy -> JannoGenotypePloidy
-min :: JannoGenotypePloidy -> JannoGenotypePloidy -> JannoGenotypePloidy
-Ord, (forall x. JannoGenotypePloidy -> Rep JannoGenotypePloidy x)
--> (forall x. Rep JannoGenotypePloidy x -> JannoGenotypePloidy)
--> Generic JannoGenotypePloidy
-forall x. Rep JannoGenotypePloidy x -> JannoGenotypePloidy
-forall x. JannoGenotypePloidy -> Rep JannoGenotypePloidy x
-forall a.
-(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-$cfrom :: forall x. JannoGenotypePloidy -> Rep JannoGenotypePloidy x
-from :: forall x. JannoGenotypePloidy -> Rep JannoGenotypePloidy x
-$cto :: forall x. Rep JannoGenotypePloidy x -> JannoGenotypePloidy
-to :: forall x. Rep JannoGenotypePloidy x -> JannoGenotypePloidy
-Generic, Int -> JannoGenotypePloidy
-JannoGenotypePloidy -> Int
-JannoGenotypePloidy -> [JannoGenotypePloidy]
-JannoGenotypePloidy -> JannoGenotypePloidy
-JannoGenotypePloidy -> JannoGenotypePloidy -> [JannoGenotypePloidy]
-JannoGenotypePloidy
--> JannoGenotypePloidy
--> JannoGenotypePloidy
--> [JannoGenotypePloidy]
-(JannoGenotypePloidy -> JannoGenotypePloidy)
--> (JannoGenotypePloidy -> JannoGenotypePloidy)
--> (Int -> JannoGenotypePloidy)
--> (JannoGenotypePloidy -> Int)
--> (JannoGenotypePloidy -> [JannoGenotypePloidy])
--> (JannoGenotypePloidy
-    -> JannoGenotypePloidy -> [JannoGenotypePloidy])
--> (JannoGenotypePloidy
-    -> JannoGenotypePloidy -> [JannoGenotypePloidy])
--> (JannoGenotypePloidy
-    -> JannoGenotypePloidy
-    -> JannoGenotypePloidy
-    -> [JannoGenotypePloidy])
--> Enum JannoGenotypePloidy
-forall a.
-(a -> a)
--> (a -> a)
--> (Int -> a)
--> (a -> Int)
--> (a -> [a])
--> (a -> a -> [a])
--> (a -> a -> [a])
--> (a -> a -> a -> [a])
--> Enum a
-$csucc :: JannoGenotypePloidy -> JannoGenotypePloidy
-succ :: JannoGenotypePloidy -> JannoGenotypePloidy
-$cpred :: JannoGenotypePloidy -> JannoGenotypePloidy
-pred :: JannoGenotypePloidy -> JannoGenotypePloidy
-$ctoEnum :: Int -> JannoGenotypePloidy
-toEnum :: Int -> JannoGenotypePloidy
-$cfromEnum :: JannoGenotypePloidy -> Int
-fromEnum :: JannoGenotypePloidy -> Int
-$cenumFrom :: JannoGenotypePloidy -> [JannoGenotypePloidy]
-enumFrom :: JannoGenotypePloidy -> [JannoGenotypePloidy]
-$cenumFromThen :: JannoGenotypePloidy -> JannoGenotypePloidy -> [JannoGenotypePloidy]
-enumFromThen :: JannoGenotypePloidy -> JannoGenotypePloidy -> [JannoGenotypePloidy]
-$cenumFromTo :: JannoGenotypePloidy -> JannoGenotypePloidy -> [JannoGenotypePloidy]
-enumFromTo :: JannoGenotypePloidy -> JannoGenotypePloidy -> [JannoGenotypePloidy]
-$cenumFromThenTo :: JannoGenotypePloidy
--> JannoGenotypePloidy
--> JannoGenotypePloidy
--> [JannoGenotypePloidy]
-enumFromThenTo :: JannoGenotypePloidy
--> JannoGenotypePloidy
--> JannoGenotypePloidy
--> [JannoGenotypePloidy]
-Enum, JannoGenotypePloidy
-JannoGenotypePloidy
--> JannoGenotypePloidy -> Bounded JannoGenotypePloidy
-forall a. a -> a -> Bounded a
-$cminBound :: JannoGenotypePloidy
-minBound :: JannoGenotypePloidy
-$cmaxBound :: JannoGenotypePloidy
-maxBound :: JannoGenotypePloidy
-Bounded)
-
-instance Show JannoGenotypePloidy where
-    show :: JannoGenotypePloidy -> String
-show JannoGenotypePloidy
-Diploid = String
-"diploid"
-    show JannoGenotypePloidy
-Haploid = String
-"haploid"
-
-makeJannoGenotypePloidy :: MonadFail m => String -> m JannoGenotypePloidy
-makeJannoGenotypePloidy :: forall (m :: * -> *).
-MonadFail m =>
-String -> m JannoGenotypePloidy
-makeJannoGenotypePloidy String
-x
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"diploid" = JannoGenotypePloidy -> m JannoGenotypePloidy
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoGenotypePloidy
-Diploid
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"haploid" = JannoGenotypePloidy -> m JannoGenotypePloidy
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoGenotypePloidy
-Haploid
-    | Bool
-otherwise      = String -> m JannoGenotypePloidy
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m JannoGenotypePloidy)
--> String -> m JannoGenotypePloidy
-forall a b. (a -> b) -> a -> b
-$ String
-"Genotype_Ploidy " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ ShowS
-forall a. Show a => a -> String
-show String
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ String
-" not in [diploid, haploid]"
-
-instance Csv.ToField JannoGenotypePloidy where
-    toField :: JannoGenotypePloidy -> ByteString
-toField JannoGenotypePloidy
-x = String -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField (String -> ByteString) -> String -> ByteString
-forall a b. (a -> b) -> a -> b
-$ JannoGenotypePloidy -> String
-forall a. Show a => a -> String
-show JannoGenotypePloidy
-x
-instance Csv.FromField JannoGenotypePloidy where
-    parseField :: ByteString -> Parser JannoGenotypePloidy
-parseField ByteString
-x = ByteString -> Parser String
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser String
--> (String -> Parser JannoGenotypePloidy)
--> Parser JannoGenotypePloidy
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= String -> Parser JannoGenotypePloidy
-forall (m :: * -> *).
-MonadFail m =>
-String -> m JannoGenotypePloidy
-makeJannoGenotypePloidy
-instance ToJSON JannoGenotypePloidy where
-    toEncoding :: JannoGenotypePloidy -> Encoding
-toEncoding = Options -> JannoGenotypePloidy -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-    --toEncoding x = text $ T.pack $ show x
-instance FromJSON JannoGenotypePloidy-- where
-    --parseJSON = withText "JannoGenotypePloidy" (makeJannoGenotypePloidy . T.unpack)
-
--- |A datatype to represent UDG in a janno file
-data JannoUDG =
-      Minus
-    | Half
-    | Plus
-    | Mixed
-    deriving (JannoUDG -> JannoUDG -> Bool
-(JannoUDG -> JannoUDG -> Bool)
--> (JannoUDG -> JannoUDG -> Bool) -> Eq JannoUDG
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: JannoUDG -> JannoUDG -> Bool
-== :: JannoUDG -> JannoUDG -> Bool
-$c/= :: JannoUDG -> JannoUDG -> Bool
-/= :: JannoUDG -> JannoUDG -> Bool
-Eq, Eq JannoUDG
-Eq JannoUDG
--> (JannoUDG -> JannoUDG -> Ordering)
--> (JannoUDG -> JannoUDG -> Bool)
--> (JannoUDG -> JannoUDG -> Bool)
--> (JannoUDG -> JannoUDG -> Bool)
--> (JannoUDG -> JannoUDG -> Bool)
--> (JannoUDG -> JannoUDG -> JannoUDG)
--> (JannoUDG -> JannoUDG -> JannoUDG)
--> Ord JannoUDG
-JannoUDG -> JannoUDG -> Bool
-JannoUDG -> JannoUDG -> Ordering
-JannoUDG -> JannoUDG -> JannoUDG
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: JannoUDG -> JannoUDG -> Ordering
-compare :: JannoUDG -> JannoUDG -> Ordering
-$c< :: JannoUDG -> JannoUDG -> Bool
-< :: JannoUDG -> JannoUDG -> Bool
-$c<= :: JannoUDG -> JannoUDG -> Bool
-<= :: JannoUDG -> JannoUDG -> Bool
-$c> :: JannoUDG -> JannoUDG -> Bool
-> :: JannoUDG -> JannoUDG -> Bool
-$c>= :: JannoUDG -> JannoUDG -> Bool
->= :: JannoUDG -> JannoUDG -> Bool
-$cmax :: JannoUDG -> JannoUDG -> JannoUDG
-max :: JannoUDG -> JannoUDG -> JannoUDG
-$cmin :: JannoUDG -> JannoUDG -> JannoUDG
-min :: JannoUDG -> JannoUDG -> JannoUDG
-Ord, (forall x. JannoUDG -> Rep JannoUDG x)
--> (forall x. Rep JannoUDG x -> JannoUDG) -> Generic JannoUDG
-forall x. Rep JannoUDG x -> JannoUDG
-forall x. JannoUDG -> Rep JannoUDG x
-forall a.
-(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-$cfrom :: forall x. JannoUDG -> Rep JannoUDG x
-from :: forall x. JannoUDG -> Rep JannoUDG x
-$cto :: forall x. Rep JannoUDG x -> JannoUDG
-to :: forall x. Rep JannoUDG x -> JannoUDG
-Generic, Int -> JannoUDG
-JannoUDG -> Int
-JannoUDG -> [JannoUDG]
-JannoUDG -> JannoUDG
-JannoUDG -> JannoUDG -> [JannoUDG]
-JannoUDG -> JannoUDG -> JannoUDG -> [JannoUDG]
-(JannoUDG -> JannoUDG)
--> (JannoUDG -> JannoUDG)
--> (Int -> JannoUDG)
--> (JannoUDG -> Int)
--> (JannoUDG -> [JannoUDG])
--> (JannoUDG -> JannoUDG -> [JannoUDG])
--> (JannoUDG -> JannoUDG -> [JannoUDG])
--> (JannoUDG -> JannoUDG -> JannoUDG -> [JannoUDG])
--> Enum JannoUDG
-forall a.
-(a -> a)
--> (a -> a)
--> (Int -> a)
--> (a -> Int)
--> (a -> [a])
--> (a -> a -> [a])
--> (a -> a -> [a])
--> (a -> a -> a -> [a])
--> Enum a
-$csucc :: JannoUDG -> JannoUDG
-succ :: JannoUDG -> JannoUDG
-$cpred :: JannoUDG -> JannoUDG
-pred :: JannoUDG -> JannoUDG
-$ctoEnum :: Int -> JannoUDG
-toEnum :: Int -> JannoUDG
-$cfromEnum :: JannoUDG -> Int
-fromEnum :: JannoUDG -> Int
-$cenumFrom :: JannoUDG -> [JannoUDG]
-enumFrom :: JannoUDG -> [JannoUDG]
-$cenumFromThen :: JannoUDG -> JannoUDG -> [JannoUDG]
-enumFromThen :: JannoUDG -> JannoUDG -> [JannoUDG]
-$cenumFromTo :: JannoUDG -> JannoUDG -> [JannoUDG]
-enumFromTo :: JannoUDG -> JannoUDG -> [JannoUDG]
-$cenumFromThenTo :: JannoUDG -> JannoUDG -> JannoUDG -> [JannoUDG]
-enumFromThenTo :: JannoUDG -> JannoUDG -> JannoUDG -> [JannoUDG]
-Enum, JannoUDG
-JannoUDG -> JannoUDG -> Bounded JannoUDG
-forall a. a -> a -> Bounded a
-$cminBound :: JannoUDG
-minBound :: JannoUDG
-$cmaxBound :: JannoUDG
-maxBound :: JannoUDG
-Bounded)
-
-instance Show JannoUDG where
-    show :: JannoUDG -> String
-show JannoUDG
-Minus = String
-"minus"
-    show JannoUDG
-Half  = String
-"half"
-    show JannoUDG
-Plus  = String
-"plus"
-    show JannoUDG
-Mixed = String
-"mixed"
-
-makeJannoUDG :: MonadFail m => String -> m JannoUDG
-makeJannoUDG :: forall (m :: * -> *). MonadFail m => String -> m JannoUDG
-makeJannoUDG String
-x
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"minus" = JannoUDG -> m JannoUDG
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoUDG
-Minus
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"half"  = JannoUDG -> m JannoUDG
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoUDG
-Half
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"plus"  = JannoUDG -> m JannoUDG
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoUDG
-Plus
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"mixed" = JannoUDG -> m JannoUDG
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoUDG
-Mixed
-    | Bool
-otherwise    = String -> m JannoUDG
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m JannoUDG) -> String -> m JannoUDG
-forall a b. (a -> b) -> a -> b
-$ String
-"UDG " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ ShowS
-forall a. Show a => a -> String
-show String
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ String
-" not in [minus, half, plus, mixed]"
-
-instance Csv.ToField JannoUDG where
-    toField :: JannoUDG -> ByteString
-toField JannoUDG
-x = String -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField (String -> ByteString) -> String -> ByteString
-forall a b. (a -> b) -> a -> b
-$ JannoUDG -> String
-forall a. Show a => a -> String
-show JannoUDG
-x
-instance Csv.FromField JannoUDG where
-    parseField :: ByteString -> Parser JannoUDG
-parseField ByteString
-x = ByteString -> Parser String
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser String -> (String -> Parser JannoUDG) -> Parser JannoUDG
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= String -> Parser JannoUDG
-forall (m :: * -> *). MonadFail m => String -> m JannoUDG
-makeJannoUDG
-instance ToJSON JannoUDG where
-    toEncoding :: JannoUDG -> Encoding
-toEncoding = Options -> JannoUDG -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-    --toEncoding x = text $ T.pack $ show x
-instance FromJSON JannoUDG-- where
-    --parseJSON = withText "JannoUDG" (makeJannoUDG . T.unpack)
-
--- |A datatype to represent Library_Built in a janno file
-data JannoLibraryBuilt =
-      DS
-    | SS
-    | MixedSSDS
-    | Other -- the "other" option is deprecated and should be removed at some point
-    deriving (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-(JannoLibraryBuilt -> JannoLibraryBuilt -> Bool)
--> (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool)
--> Eq JannoLibraryBuilt
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-== :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-$c/= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-/= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-Eq, Eq JannoLibraryBuilt
-Eq JannoLibraryBuilt
--> (JannoLibraryBuilt -> JannoLibraryBuilt -> Ordering)
--> (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool)
--> (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool)
--> (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool)
--> (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool)
--> (JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt)
--> (JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt)
--> Ord JannoLibraryBuilt
-JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-JannoLibraryBuilt -> JannoLibraryBuilt -> Ordering
-JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: JannoLibraryBuilt -> JannoLibraryBuilt -> Ordering
-compare :: JannoLibraryBuilt -> JannoLibraryBuilt -> Ordering
-$c< :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-< :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-$c<= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-<= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-$c> :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-> :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-$c>= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
->= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-$cmax :: JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt
-max :: JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt
-$cmin :: JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt
-min :: JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt
-Ord, (forall x. JannoLibraryBuilt -> Rep JannoLibraryBuilt x)
--> (forall x. Rep JannoLibraryBuilt x -> JannoLibraryBuilt)
--> Generic JannoLibraryBuilt
-forall x. Rep JannoLibraryBuilt x -> JannoLibraryBuilt
-forall x. JannoLibraryBuilt -> Rep JannoLibraryBuilt x
-forall a.
-(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-$cfrom :: forall x. JannoLibraryBuilt -> Rep JannoLibraryBuilt x
-from :: forall x. JannoLibraryBuilt -> Rep JannoLibraryBuilt x
-$cto :: forall x. Rep JannoLibraryBuilt x -> JannoLibraryBuilt
-to :: forall x. Rep JannoLibraryBuilt x -> JannoLibraryBuilt
-Generic, Int -> JannoLibraryBuilt
-JannoLibraryBuilt -> Int
-JannoLibraryBuilt -> [JannoLibraryBuilt]
-JannoLibraryBuilt -> JannoLibraryBuilt
-JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
-JannoLibraryBuilt
--> JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
-(JannoLibraryBuilt -> JannoLibraryBuilt)
--> (JannoLibraryBuilt -> JannoLibraryBuilt)
--> (Int -> JannoLibraryBuilt)
--> (JannoLibraryBuilt -> Int)
--> (JannoLibraryBuilt -> [JannoLibraryBuilt])
--> (JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt])
--> (JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt])
--> (JannoLibraryBuilt
-    -> JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt])
--> Enum JannoLibraryBuilt
-forall a.
-(a -> a)
--> (a -> a)
--> (Int -> a)
--> (a -> Int)
--> (a -> [a])
--> (a -> a -> [a])
--> (a -> a -> [a])
--> (a -> a -> a -> [a])
--> Enum a
-$csucc :: JannoLibraryBuilt -> JannoLibraryBuilt
-succ :: JannoLibraryBuilt -> JannoLibraryBuilt
-$cpred :: JannoLibraryBuilt -> JannoLibraryBuilt
-pred :: JannoLibraryBuilt -> JannoLibraryBuilt
-$ctoEnum :: Int -> JannoLibraryBuilt
-toEnum :: Int -> JannoLibraryBuilt
-$cfromEnum :: JannoLibraryBuilt -> Int
-fromEnum :: JannoLibraryBuilt -> Int
-$cenumFrom :: JannoLibraryBuilt -> [JannoLibraryBuilt]
-enumFrom :: JannoLibraryBuilt -> [JannoLibraryBuilt]
-$cenumFromThen :: JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
-enumFromThen :: JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
-$cenumFromTo :: JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
-enumFromTo :: JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
-$cenumFromThenTo :: JannoLibraryBuilt
--> JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
-enumFromThenTo :: JannoLibraryBuilt
--> JannoLibraryBuilt -> JannoLibraryBuilt -> [JannoLibraryBuilt]
-Enum, JannoLibraryBuilt
-JannoLibraryBuilt -> JannoLibraryBuilt -> Bounded JannoLibraryBuilt
-forall a. a -> a -> Bounded a
-$cminBound :: JannoLibraryBuilt
-minBound :: JannoLibraryBuilt
-$cmaxBound :: JannoLibraryBuilt
-maxBound :: JannoLibraryBuilt
-Bounded)
-
-instance Show JannoLibraryBuilt where
-    show :: JannoLibraryBuilt -> String
-show JannoLibraryBuilt
-DS        = String
-"ds"
-    show JannoLibraryBuilt
-SS        = String
-"ss"
-    show JannoLibraryBuilt
-MixedSSDS = String
-"mixed"
-    show JannoLibraryBuilt
-Other     = String
-"other"
-
-makeJannoLibraryBuilt :: MonadFail m => String -> m JannoLibraryBuilt
-makeJannoLibraryBuilt :: forall (m :: * -> *). MonadFail m => String -> m JannoLibraryBuilt
-makeJannoLibraryBuilt String
-x
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"ds"    = JannoLibraryBuilt -> m JannoLibraryBuilt
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoLibraryBuilt
-DS
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"ss"    = JannoLibraryBuilt -> m JannoLibraryBuilt
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoLibraryBuilt
-SS
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"mixed" = JannoLibraryBuilt -> m JannoLibraryBuilt
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoLibraryBuilt
-MixedSSDS
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"other" = JannoLibraryBuilt -> m JannoLibraryBuilt
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure JannoLibraryBuilt
-Other
-    | Bool
-otherwise    = String -> m JannoLibraryBuilt
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m JannoLibraryBuilt) -> String -> m JannoLibraryBuilt
-forall a b. (a -> b) -> a -> b
-$ String
-"Library_Built " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ ShowS
-forall a. Show a => a -> String
-show String
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ String
-" not in [ds, ss, mixed]"
-
-instance Csv.ToField JannoLibraryBuilt where
-    toField :: JannoLibraryBuilt -> ByteString
-toField JannoLibraryBuilt
-x = String -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField (String -> ByteString) -> String -> ByteString
-forall a b. (a -> b) -> a -> b
-$ JannoLibraryBuilt -> String
-forall a. Show a => a -> String
-show JannoLibraryBuilt
-x
-instance Csv.FromField JannoLibraryBuilt where
-    parseField :: ByteString -> Parser JannoLibraryBuilt
-parseField ByteString
-x = ByteString -> Parser String
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser String
--> (String -> Parser JannoLibraryBuilt) -> Parser JannoLibraryBuilt
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= String -> Parser JannoLibraryBuilt
-forall (m :: * -> *). MonadFail m => String -> m JannoLibraryBuilt
-makeJannoLibraryBuilt
-instance ToJSON JannoLibraryBuilt where
-    toEncoding :: JannoLibraryBuilt -> Encoding
-toEncoding = Options -> JannoLibraryBuilt -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-    --toEncoding x = text $ T.pack $ show x
-instance FromJSON JannoLibraryBuilt --where
-    --parseJSON = withText "JannoLibraryBuilt" (makeJannoLibraryBuilt . T.unpack)
-
--- | A datatype for countries in ISO-alpha2 code format
-newtype JannoCountry = JannoCountry Country
-    deriving (JannoCountry -> JannoCountry -> Bool
-(JannoCountry -> JannoCountry -> Bool)
--> (JannoCountry -> JannoCountry -> Bool) -> Eq JannoCountry
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: JannoCountry -> JannoCountry -> Bool
-== :: JannoCountry -> JannoCountry -> Bool
-$c/= :: JannoCountry -> JannoCountry -> Bool
-/= :: JannoCountry -> JannoCountry -> Bool
-Eq, Eq JannoCountry
-Eq JannoCountry
--> (JannoCountry -> JannoCountry -> Ordering)
--> (JannoCountry -> JannoCountry -> Bool)
--> (JannoCountry -> JannoCountry -> Bool)
--> (JannoCountry -> JannoCountry -> Bool)
--> (JannoCountry -> JannoCountry -> Bool)
--> (JannoCountry -> JannoCountry -> JannoCountry)
--> (JannoCountry -> JannoCountry -> JannoCountry)
--> Ord JannoCountry
-JannoCountry -> JannoCountry -> Bool
-JannoCountry -> JannoCountry -> Ordering
-JannoCountry -> JannoCountry -> JannoCountry
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: JannoCountry -> JannoCountry -> Ordering
-compare :: JannoCountry -> JannoCountry -> Ordering
-$c< :: JannoCountry -> JannoCountry -> Bool
-< :: JannoCountry -> JannoCountry -> Bool
-$c<= :: JannoCountry -> JannoCountry -> Bool
-<= :: JannoCountry -> JannoCountry -> Bool
-$c> :: JannoCountry -> JannoCountry -> Bool
-> :: JannoCountry -> JannoCountry -> Bool
-$c>= :: JannoCountry -> JannoCountry -> Bool
->= :: JannoCountry -> JannoCountry -> Bool
-$cmax :: JannoCountry -> JannoCountry -> JannoCountry
-max :: JannoCountry -> JannoCountry -> JannoCountry
-$cmin :: JannoCountry -> JannoCountry -> JannoCountry
-min :: JannoCountry -> JannoCountry -> JannoCountry
-Ord)
-
-instance Show JannoCountry where
-    show :: JannoCountry -> String
-show (JannoCountry Country
-x) = Text -> String
-T.unpack (Text -> String) -> Text -> String
-forall a b. (a -> b) -> a -> b
-$ Country -> Text
-alphaTwoUpper Country
-x
-
-makeJannoCountryEither :: String -> Either PoseidonException JannoCountry
-makeJannoCountryEither :: String -> Either PoseidonException JannoCountry
-makeJannoCountryEither String
-x =
-    case Text -> Maybe Country
-decodeAlphaTwo (String -> Text
-T.pack String
-x) of
-        Just Country
-c  -> JannoCountry -> Either PoseidonException JannoCountry
-forall a b. b -> Either a b
-Right (JannoCountry -> Either PoseidonException JannoCountry)
--> JannoCountry -> Either PoseidonException JannoCountry
-forall a b. (a -> b) -> a -> b
-$ Country -> JannoCountry
-JannoCountry Country
-c
-        Maybe Country
-Nothing -> PoseidonException -> Either PoseidonException JannoCountry
-forall a b. a -> Either a b
-Left (PoseidonException -> Either PoseidonException JannoCountry)
--> (String -> PoseidonException)
--> String
--> Either PoseidonException JannoCountry
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. String -> PoseidonException
-PoseidonGenericException (String -> Either PoseidonException JannoCountry)
--> String -> Either PoseidonException JannoCountry
-forall a b. (a -> b) -> a -> b
-$ String
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ String
-" is not a valid ISO-alpha2 code describing an existing country"
-
-makeJannoCountryUnsafe :: String -> JannoCountry
-makeJannoCountryUnsafe :: String -> JannoCountry
-makeJannoCountryUnsafe String
-x = case String -> Either PoseidonException JannoCountry
-makeJannoCountryEither String
-x of
-    Left PoseidonException
-e  -> String -> JannoCountry
-forall a. HasCallStack => String -> a
-error (String -> JannoCountry)
--> (PoseidonException -> String)
--> PoseidonException
--> JannoCountry
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. PoseidonException -> String
-forall a. Show a => a -> String
-show (PoseidonException -> JannoCountry)
--> PoseidonException -> JannoCountry
-forall a b. (a -> b) -> a -> b
-$ PoseidonException
-e
-    Right JannoCountry
-r -> JannoCountry
-r
-
-makeJannoCountry :: (MonadFail m) => String -> m JannoCountry
-makeJannoCountry :: forall (m :: * -> *). MonadFail m => String -> m JannoCountry
-makeJannoCountry String
-x = case String -> Either PoseidonException JannoCountry
-makeJannoCountryEither String
-x of
-    Left PoseidonException
-e  -> String -> m JannoCountry
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m JannoCountry)
--> (PoseidonException -> String)
--> PoseidonException
--> m JannoCountry
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. PoseidonException -> String
-forall a. Show a => a -> String
-show (PoseidonException -> m JannoCountry)
--> PoseidonException -> m JannoCountry
-forall a b. (a -> b) -> a -> b
-$ PoseidonException
-e
-    Right JannoCountry
-r -> JannoCountry -> m JannoCountry
-forall a. a -> m a
-forall (m :: * -> *) a. Monad m => a -> m a
-return JannoCountry
-r
-
-instance Csv.ToField JannoCountry where
-    toField :: JannoCountry -> ByteString
-toField JannoCountry
-x = String -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField (String -> ByteString) -> String -> ByteString
-forall a b. (a -> b) -> a -> b
-$ JannoCountry -> String
-forall a. Show a => a -> String
-show JannoCountry
-x
-instance Csv.FromField JannoCountry where
-    parseField :: ByteString -> Parser JannoCountry
-parseField ByteString
-x = ByteString -> Parser String
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser String
--> (String -> Parser JannoCountry) -> Parser JannoCountry
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= String -> Parser JannoCountry
-forall (m :: * -> *). MonadFail m => String -> m JannoCountry
-makeJannoCountry
-instance ToJSON JannoCountry where
-    toJSON :: JannoCountry -> Value
-toJSON JannoCountry
-x  = Text -> Value
-String (Text -> Value) -> Text -> Value
-forall a b. (a -> b) -> a -> b
-$ String -> Text
-T.pack (String -> Text) -> String -> Text
-forall a b. (a -> b) -> a -> b
-$ JannoCountry -> String
-forall a. Show a => a -> String
-show JannoCountry
-x
-instance FromJSON JannoCountry where
-    parseJSON :: Value -> Parser JannoCountry
-parseJSON = String
--> (Text -> Parser JannoCountry) -> Value -> Parser JannoCountry
-forall a. String -> (Text -> Parser a) -> Value -> Parser a
-withText String
-"JannoCountry" (String -> Parser JannoCountry
-forall (m :: * -> *). MonadFail m => String -> m JannoCountry
-makeJannoCountry (String -> Parser JannoCountry)
--> (Text -> String) -> Text -> Parser JannoCountry
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. Text -> String
-T.unpack)
-
--- | A datatype for Latitudes
-newtype Latitude =
-        Latitude Double
-    deriving (Latitude -> Latitude -> Bool
-(Latitude -> Latitude -> Bool)
--> (Latitude -> Latitude -> Bool) -> Eq Latitude
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: Latitude -> Latitude -> Bool
-== :: Latitude -> Latitude -> Bool
-$c/= :: Latitude -> Latitude -> Bool
-/= :: Latitude -> Latitude -> Bool
-Eq, Eq Latitude
-Eq Latitude
--> (Latitude -> Latitude -> Ordering)
--> (Latitude -> Latitude -> Bool)
--> (Latitude -> Latitude -> Bool)
--> (Latitude -> Latitude -> Bool)
--> (Latitude -> Latitude -> Bool)
--> (Latitude -> Latitude -> Latitude)
--> (Latitude -> Latitude -> Latitude)
--> Ord Latitude
-Latitude -> Latitude -> Bool
-Latitude -> Latitude -> Ordering
-Latitude -> Latitude -> Latitude
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: Latitude -> Latitude -> Ordering
-compare :: Latitude -> Latitude -> Ordering
-$c< :: Latitude -> Latitude -> Bool
-< :: Latitude -> Latitude -> Bool
-$c<= :: Latitude -> Latitude -> Bool
-<= :: Latitude -> Latitude -> Bool
-$c> :: Latitude -> Latitude -> Bool
-> :: Latitude -> Latitude -> Bool
-$c>= :: Latitude -> Latitude -> Bool
->= :: Latitude -> Latitude -> Bool
-$cmax :: Latitude -> Latitude -> Latitude
-max :: Latitude -> Latitude -> Latitude
-$cmin :: Latitude -> Latitude -> Latitude
-min :: Latitude -> Latitude -> Latitude
-Ord, (forall x. Latitude -> Rep Latitude x)
--> (forall x. Rep Latitude x -> Latitude) -> Generic Latitude
-forall x. Rep Latitude x -> Latitude
-forall x. Latitude -> Rep Latitude x
-forall a.
-(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-$cfrom :: forall x. Latitude -> Rep Latitude x
-from :: forall x. Latitude -> Rep Latitude x
-$cto :: forall x. Rep Latitude x -> Latitude
-to :: forall x. Rep Latitude x -> Latitude
-Generic)
-
-instance Show Latitude where
-    show :: Latitude -> String
-show (Latitude Double
-x) = Double -> String
-forall a. Show a => a -> String
-show Double
-x
-
-makeLatitude :: MonadFail m => Double -> m Latitude
-makeLatitude :: forall (m :: * -> *). MonadFail m => Double -> m Latitude
-makeLatitude Double
-x
-    | Double
-x Double -> Double -> Bool
-forall a. Ord a => a -> a -> Bool
->= -Double
-90 Bool -> Bool -> Bool
-&& Double
-x Double -> Double -> Bool
-forall a. Ord a => a -> a -> Bool
-<= Double
-90 = Latitude -> m Latitude
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (Double -> Latitude
-Latitude Double
-x)
-    | Bool
-otherwise           = String -> m Latitude
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m Latitude) -> String -> m Latitude
-forall a b. (a -> b) -> a -> b
-$ String
-"Latitude " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ Double -> String
-forall a. Show a => a -> String
-show Double
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ String
-" not between -90 and 90"
-
-instance Csv.ToField Latitude where
-    toField :: Latitude -> ByteString
-toField (Latitude Double
-x) = Double -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField Double
-x
-instance Csv.FromField Latitude where
-    parseField :: ByteString -> Parser Latitude
-parseField ByteString
-x = ByteString -> Parser Double
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser Double -> (Double -> Parser Latitude) -> Parser Latitude
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= Double -> Parser Latitude
-forall (m :: * -> *). MonadFail m => Double -> m Latitude
-makeLatitude
-instance ToJSON Latitude where
-    toEncoding :: Latitude -> Encoding
-toEncoding = Options -> Latitude -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-instance FromJSON Latitude-- where
-    --parseJSON = withScientific "Latitude" $ \n -> (makeLatitude . toRealFloat) n
-
--- | A datatype for Longitudes
-newtype Longitude =
-        Longitude Double
-    deriving (Longitude -> Longitude -> Bool
-(Longitude -> Longitude -> Bool)
--> (Longitude -> Longitude -> Bool) -> Eq Longitude
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: Longitude -> Longitude -> Bool
-== :: Longitude -> Longitude -> Bool
-$c/= :: Longitude -> Longitude -> Bool
-/= :: Longitude -> Longitude -> Bool
-Eq, Eq Longitude
-Eq Longitude
--> (Longitude -> Longitude -> Ordering)
--> (Longitude -> Longitude -> Bool)
--> (Longitude -> Longitude -> Bool)
--> (Longitude -> Longitude -> Bool)
--> (Longitude -> Longitude -> Bool)
--> (Longitude -> Longitude -> Longitude)
--> (Longitude -> Longitude -> Longitude)
--> Ord Longitude
-Longitude -> Longitude -> Bool
-Longitude -> Longitude -> Ordering
-Longitude -> Longitude -> Longitude
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: Longitude -> Longitude -> Ordering
-compare :: Longitude -> Longitude -> Ordering
-$c< :: Longitude -> Longitude -> Bool
-< :: Longitude -> Longitude -> Bool
-$c<= :: Longitude -> Longitude -> Bool
-<= :: Longitude -> Longitude -> Bool
-$c> :: Longitude -> Longitude -> Bool
-> :: Longitude -> Longitude -> Bool
-$c>= :: Longitude -> Longitude -> Bool
->= :: Longitude -> Longitude -> Bool
-$cmax :: Longitude -> Longitude -> Longitude
-max :: Longitude -> Longitude -> Longitude
-$cmin :: Longitude -> Longitude -> Longitude
-min :: Longitude -> Longitude -> Longitude
-Ord, (forall x. Longitude -> Rep Longitude x)
--> (forall x. Rep Longitude x -> Longitude) -> Generic Longitude
-forall x. Rep Longitude x -> Longitude
-forall x. Longitude -> Rep Longitude x
-forall a.
-(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-$cfrom :: forall x. Longitude -> Rep Longitude x
-from :: forall x. Longitude -> Rep Longitude x
-$cto :: forall x. Rep Longitude x -> Longitude
-to :: forall x. Rep Longitude x -> Longitude
-Generic)
-
-instance Show Longitude where
-    show :: Longitude -> String
-show (Longitude Double
-x) = Double -> String
-forall a. Show a => a -> String
-show Double
-x
-
-makeLongitude :: MonadFail m => Double -> m Longitude
-makeLongitude :: forall (m :: * -> *). MonadFail m => Double -> m Longitude
-makeLongitude Double
-x
-    | Double
-x Double -> Double -> Bool
-forall a. Ord a => a -> a -> Bool
->= -Double
-180 Bool -> Bool -> Bool
-&& Double
-x Double -> Double -> Bool
-forall a. Ord a => a -> a -> Bool
-<= Double
-180 = Longitude -> m Longitude
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (Double -> Longitude
-Longitude Double
-x)
-    | Bool
-otherwise             = String -> m Longitude
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m Longitude) -> String -> m Longitude
-forall a b. (a -> b) -> a -> b
-$ String
-"Longitude " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ Double -> String
-forall a. Show a => a -> String
-show Double
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ String
-" not between -180 and 180"
-
-instance Csv.ToField Longitude where
-    toField :: Longitude -> ByteString
-toField (Longitude Double
-x) = Double -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField Double
-x
-instance Csv.FromField Longitude where
-    parseField :: ByteString -> Parser Longitude
-parseField ByteString
-x = ByteString -> Parser Double
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser Double -> (Double -> Parser Longitude) -> Parser Longitude
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= Double -> Parser Longitude
-forall (m :: * -> *). MonadFail m => Double -> m Longitude
-makeLongitude
-instance ToJSON Longitude where
-    toEncoding :: Longitude -> Encoding
-toEncoding = Options -> Longitude -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-instance FromJSON Longitude-- where
-    --parseJSON = withScientific "Longitude" $ \n -> (makeLongitude . toRealFloat) n
-
--- | A datatype for Percent values
-newtype Percent =
-        Percent Double
-    deriving (Percent -> Percent -> Bool
-(Percent -> Percent -> Bool)
--> (Percent -> Percent -> Bool) -> Eq Percent
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: Percent -> Percent -> Bool
-== :: Percent -> Percent -> Bool
-$c/= :: Percent -> Percent -> Bool
-/= :: Percent -> Percent -> Bool
-Eq, Eq Percent
-Eq Percent
--> (Percent -> Percent -> Ordering)
--> (Percent -> Percent -> Bool)
--> (Percent -> Percent -> Bool)
--> (Percent -> Percent -> Bool)
--> (Percent -> Percent -> Bool)
--> (Percent -> Percent -> Percent)
--> (Percent -> Percent -> Percent)
--> Ord Percent
-Percent -> Percent -> Bool
-Percent -> Percent -> Ordering
-Percent -> Percent -> Percent
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: Percent -> Percent -> Ordering
-compare :: Percent -> Percent -> Ordering
-$c< :: Percent -> Percent -> Bool
-< :: Percent -> Percent -> Bool
-$c<= :: Percent -> Percent -> Bool
-<= :: Percent -> Percent -> Bool
-$c> :: Percent -> Percent -> Bool
-> :: Percent -> Percent -> Bool
-$c>= :: Percent -> Percent -> Bool
->= :: Percent -> Percent -> Bool
-$cmax :: Percent -> Percent -> Percent
-max :: Percent -> Percent -> Percent
-$cmin :: Percent -> Percent -> Percent
-min :: Percent -> Percent -> Percent
-Ord, (forall x. Percent -> Rep Percent x)
--> (forall x. Rep Percent x -> Percent) -> Generic Percent
-forall x. Rep Percent x -> Percent
-forall x. Percent -> Rep Percent x
-forall a.
-(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-$cfrom :: forall x. Percent -> Rep Percent x
-from :: forall x. Percent -> Rep Percent x
-$cto :: forall x. Rep Percent x -> Percent
-to :: forall x. Rep Percent x -> Percent
-Generic)
-
-instance Show Percent where
-    show :: Percent -> String
-show (Percent Double
-x) = Double -> String
-forall a. Show a => a -> String
-show Double
-x
-
-makePercent :: MonadFail m => Double -> m Percent
-makePercent :: forall (m :: * -> *). MonadFail m => Double -> m Percent
-makePercent Double
-x
-    | Double
-x Double -> Double -> Bool
-forall a. Ord a => a -> a -> Bool
->= Double
-0 Bool -> Bool -> Bool
-&& Double
-x Double -> Double -> Bool
-forall a. Ord a => a -> a -> Bool
-<= Double
-100 = Percent -> m Percent
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (Double -> Percent
-Percent Double
-x)
-    | Bool
-otherwise          = String -> m Percent
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m Percent) -> String -> m Percent
-forall a b. (a -> b) -> a -> b
-$ String
-"Percentage " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ Double -> String
-forall a. Show a => a -> String
-show Double
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ String
-" not between 0 and 100"
-
-instance Csv.ToField Percent where
-    toField :: Percent -> ByteString
-toField (Percent Double
-x) = Double -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField Double
-x
-instance Csv.FromField Percent where
-    parseField :: ByteString -> Parser Percent
-parseField ByteString
-x = ByteString -> Parser Double
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser Double -> (Double -> Parser Percent) -> Parser Percent
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= Double -> Parser Percent
-forall (m :: * -> *). MonadFail m => Double -> m Percent
-makePercent
-instance ToJSON Percent where
-    toEncoding :: Percent -> Encoding
-toEncoding = Options -> Percent -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-instance FromJSON Percent-- where
-    --parseJSON = withScientific "Percent" $ \n -> (makePercent . toRealFloat) n
-
--- | A datatype to represent URIs in a janno file
-newtype JURI =
-        JURI String
-    deriving (JURI -> JURI -> Bool
-(JURI -> JURI -> Bool) -> (JURI -> JURI -> Bool) -> Eq JURI
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: JURI -> JURI -> Bool
-== :: JURI -> JURI -> Bool
-$c/= :: JURI -> JURI -> Bool
-/= :: JURI -> JURI -> Bool
-Eq, Eq JURI
-Eq JURI
--> (JURI -> JURI -> Ordering)
--> (JURI -> JURI -> Bool)
--> (JURI -> JURI -> Bool)
--> (JURI -> JURI -> Bool)
--> (JURI -> JURI -> Bool)
--> (JURI -> JURI -> JURI)
--> (JURI -> JURI -> JURI)
--> Ord JURI
-JURI -> JURI -> Bool
-JURI -> JURI -> Ordering
-JURI -> JURI -> JURI
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: JURI -> JURI -> Ordering
-compare :: JURI -> JURI -> Ordering
-$c< :: JURI -> JURI -> Bool
-< :: JURI -> JURI -> Bool
-$c<= :: JURI -> JURI -> Bool
-<= :: JURI -> JURI -> Bool
-$c> :: JURI -> JURI -> Bool
-> :: JURI -> JURI -> Bool
-$c>= :: JURI -> JURI -> Bool
->= :: JURI -> JURI -> Bool
-$cmax :: JURI -> JURI -> JURI
-max :: JURI -> JURI -> JURI
-$cmin :: JURI -> JURI -> JURI
-min :: JURI -> JURI -> JURI
-Ord, (forall x. JURI -> Rep JURI x)
--> (forall x. Rep JURI x -> JURI) -> Generic JURI
-forall x. Rep JURI x -> JURI
-forall x. JURI -> Rep JURI x
-forall a.
-(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-$cfrom :: forall x. JURI -> Rep JURI x
-from :: forall x. JURI -> Rep JURI x
-$cto :: forall x. Rep JURI x -> JURI
-to :: forall x. Rep JURI x -> JURI
-Generic)
-
-instance Show JURI where
-    show :: JURI -> String
-show (JURI String
-x) = String
-x
-
-makeJURI :: MonadFail m => String -> m JURI
-makeJURI :: forall (m :: * -> *). MonadFail m => String -> m JURI
-makeJURI String
-x
-    | String -> Bool
-isURIReference String
-x   = JURI -> m JURI
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (JURI -> m JURI) -> JURI -> m JURI
-forall a b. (a -> b) -> a -> b
-$ String -> JURI
-JURI String
-x
-    | Bool
-otherwise          = String -> m JURI
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m JURI) -> String -> m JURI
-forall a b. (a -> b) -> a -> b
-$ String
-"URI " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ ShowS
-forall a. Show a => a -> String
-show String
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ String
-" not well structured"
-
-instance Csv.ToField JURI where
-    toField :: JURI -> ByteString
-toField JURI
-x = String -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField (String -> ByteString) -> String -> ByteString
-forall a b. (a -> b) -> a -> b
-$ JURI -> String
-forall a. Show a => a -> String
-show JURI
-x
-instance Csv.FromField JURI where
-    parseField :: ByteString -> Parser JURI
-parseField ByteString
-x = ByteString -> Parser String
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser String -> (String -> Parser JURI) -> Parser JURI
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= String -> Parser JURI
-forall (m :: * -> *). MonadFail m => String -> m JURI
-makeJURI
-instance ToJSON JURI where
-    toEncoding :: JURI -> Encoding
-toEncoding = Options -> JURI -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-    --toEncoding x = text $ T.pack $ show x
-instance FromJSON JURI-- where
-    --parseJSON = withText "JURI" (makeJURI . T.unpack)
-
--- |A datatype to represent Relationship degree lists in a janno file
-type JannoRelationDegreeList = JannoList RelationDegree
-
-data RelationDegree =
-      Identical
-    | First
-    | Second
-    | ThirdToFifth
-    | SixthToTenth
-    | Unrelated
-    | OtherDegree
-    deriving (RelationDegree -> RelationDegree -> Bool
-(RelationDegree -> RelationDegree -> Bool)
--> (RelationDegree -> RelationDegree -> Bool) -> Eq RelationDegree
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: RelationDegree -> RelationDegree -> Bool
-== :: RelationDegree -> RelationDegree -> Bool
-$c/= :: RelationDegree -> RelationDegree -> Bool
-/= :: RelationDegree -> RelationDegree -> Bool
-Eq, Eq RelationDegree
-Eq RelationDegree
--> (RelationDegree -> RelationDegree -> Ordering)
--> (RelationDegree -> RelationDegree -> Bool)
--> (RelationDegree -> RelationDegree -> Bool)
--> (RelationDegree -> RelationDegree -> Bool)
--> (RelationDegree -> RelationDegree -> Bool)
--> (RelationDegree -> RelationDegree -> RelationDegree)
--> (RelationDegree -> RelationDegree -> RelationDegree)
--> Ord RelationDegree
-RelationDegree -> RelationDegree -> Bool
-RelationDegree -> RelationDegree -> Ordering
-RelationDegree -> RelationDegree -> RelationDegree
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: RelationDegree -> RelationDegree -> Ordering
-compare :: RelationDegree -> RelationDegree -> Ordering
-$c< :: RelationDegree -> RelationDegree -> Bool
-< :: RelationDegree -> RelationDegree -> Bool
-$c<= :: RelationDegree -> RelationDegree -> Bool
-<= :: RelationDegree -> RelationDegree -> Bool
-$c> :: RelationDegree -> RelationDegree -> Bool
-> :: RelationDegree -> RelationDegree -> Bool
-$c>= :: RelationDegree -> RelationDegree -> Bool
->= :: RelationDegree -> RelationDegree -> Bool
-$cmax :: RelationDegree -> RelationDegree -> RelationDegree
-max :: RelationDegree -> RelationDegree -> RelationDegree
-$cmin :: RelationDegree -> RelationDegree -> RelationDegree
-min :: RelationDegree -> RelationDegree -> RelationDegree
-Ord, (forall x. RelationDegree -> Rep RelationDegree x)
--> (forall x. Rep RelationDegree x -> RelationDegree)
--> Generic RelationDegree
-forall x. Rep RelationDegree x -> RelationDegree
-forall x. RelationDegree -> Rep RelationDegree x
-forall a.
-(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-$cfrom :: forall x. RelationDegree -> Rep RelationDegree x
-from :: forall x. RelationDegree -> Rep RelationDegree x
-$cto :: forall x. Rep RelationDegree x -> RelationDegree
-to :: forall x. Rep RelationDegree x -> RelationDegree
-Generic, Int -> RelationDegree
-RelationDegree -> Int
-RelationDegree -> [RelationDegree]
-RelationDegree -> RelationDegree
-RelationDegree -> RelationDegree -> [RelationDegree]
-RelationDegree
--> RelationDegree -> RelationDegree -> [RelationDegree]
-(RelationDegree -> RelationDegree)
--> (RelationDegree -> RelationDegree)
--> (Int -> RelationDegree)
--> (RelationDegree -> Int)
--> (RelationDegree -> [RelationDegree])
--> (RelationDegree -> RelationDegree -> [RelationDegree])
--> (RelationDegree -> RelationDegree -> [RelationDegree])
--> (RelationDegree
-    -> RelationDegree -> RelationDegree -> [RelationDegree])
--> Enum RelationDegree
-forall a.
-(a -> a)
--> (a -> a)
--> (Int -> a)
--> (a -> Int)
--> (a -> [a])
--> (a -> a -> [a])
--> (a -> a -> [a])
--> (a -> a -> a -> [a])
--> Enum a
-$csucc :: RelationDegree -> RelationDegree
-succ :: RelationDegree -> RelationDegree
-$cpred :: RelationDegree -> RelationDegree
-pred :: RelationDegree -> RelationDegree
-$ctoEnum :: Int -> RelationDegree
-toEnum :: Int -> RelationDegree
-$cfromEnum :: RelationDegree -> Int
-fromEnum :: RelationDegree -> Int
-$cenumFrom :: RelationDegree -> [RelationDegree]
-enumFrom :: RelationDegree -> [RelationDegree]
-$cenumFromThen :: RelationDegree -> RelationDegree -> [RelationDegree]
-enumFromThen :: RelationDegree -> RelationDegree -> [RelationDegree]
-$cenumFromTo :: RelationDegree -> RelationDegree -> [RelationDegree]
-enumFromTo :: RelationDegree -> RelationDegree -> [RelationDegree]
-$cenumFromThenTo :: RelationDegree
--> RelationDegree -> RelationDegree -> [RelationDegree]
-enumFromThenTo :: RelationDegree
--> RelationDegree -> RelationDegree -> [RelationDegree]
-Enum, RelationDegree
-RelationDegree -> RelationDegree -> Bounded RelationDegree
-forall a. a -> a -> Bounded a
-$cminBound :: RelationDegree
-minBound :: RelationDegree
-$cmaxBound :: RelationDegree
-maxBound :: RelationDegree
-Bounded)
-
-instance Show RelationDegree where
-    show :: RelationDegree -> String
-show RelationDegree
-Identical    = String
-"identical"
-    show RelationDegree
-First        = String
-"first"
-    show RelationDegree
-Second       = String
-"second"
-    show RelationDegree
-ThirdToFifth = String
-"thirdToFifth"
-    show RelationDegree
-SixthToTenth = String
-"sixthToTenth"
-    show RelationDegree
-Unrelated    = String
-"unrelated"
-    show RelationDegree
-OtherDegree  = String
-"other"
-
-makeRelationDegree :: MonadFail m => String -> m RelationDegree
-makeRelationDegree :: forall (m :: * -> *). MonadFail m => String -> m RelationDegree
-makeRelationDegree String
-x
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"identical"    = RelationDegree -> m RelationDegree
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure RelationDegree
-Identical
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"first"        = RelationDegree -> m RelationDegree
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure RelationDegree
-First
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"second"       = RelationDegree -> m RelationDegree
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure RelationDegree
-Second
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"thirdToFifth" = RelationDegree -> m RelationDegree
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure RelationDegree
-ThirdToFifth
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"sixthToTenth" = RelationDegree -> m RelationDegree
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure RelationDegree
-SixthToTenth
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"unrelated"    = RelationDegree -> m RelationDegree
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure RelationDegree
-Unrelated -- this should be omitted in the documentation
-                                           -- relations of type "unrelated" don't have to be
-                                           -- listed explicitly
-    | String
-x String -> String -> Bool
-forall a. Eq a => a -> a -> Bool
-== String
-"other"        = RelationDegree -> m RelationDegree
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure RelationDegree
-OtherDegree
-    | Bool
-otherwise           = String -> m RelationDegree
-forall a. String -> m a
-forall (m :: * -> *) a. MonadFail m => String -> m a
-fail (String -> m RelationDegree) -> String -> m RelationDegree
-forall a b. (a -> b) -> a -> b
-$ String
-"Relation degree " String -> ShowS
-forall a. [a] -> [a] -> [a]
-++ ShowS
-forall a. Show a => a -> String
-show String
-x String -> ShowS
-forall a. [a] -> [a] -> [a]
-++
-                                   String
-" not in [identical, first, second, thirdToFifth, sixthToTenth, other]"
-
-instance Csv.ToField RelationDegree where
-    toField :: RelationDegree -> ByteString
-toField RelationDegree
-x = String -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField (String -> ByteString) -> String -> ByteString
-forall a b. (a -> b) -> a -> b
-$ RelationDegree -> String
-forall a. Show a => a -> String
-show RelationDegree
-x
-instance Csv.FromField RelationDegree where
-    parseField :: ByteString -> Parser RelationDegree
-parseField ByteString
-x = ByteString -> Parser String
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser String
--> (String -> Parser RelationDegree) -> Parser RelationDegree
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= String -> Parser RelationDegree
-forall (m :: * -> *). MonadFail m => String -> m RelationDegree
-makeRelationDegree
-instance ToJSON RelationDegree where
-    toEncoding :: RelationDegree -> Encoding
-toEncoding = Options -> RelationDegree -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-    --toEncoding x = text $ T.pack $ show x
-instance FromJSON RelationDegree-- where
-    --parseJSON = withText "RelationDegree" (makeRelationDegree . T.unpack)
-
--- |A datatype to represent AccessionIDs in a janno file
-data AccessionID =
-      INSDCProject String
-    | INSDCStudy String
-    | INSDCBioSample String
-    | INSDCSample String
-    | INSDCExperiment String
-    | INSDCRun String
-    | INSDCAnalysis String
-    | OtherID String
-    deriving (AccessionID -> AccessionID -> Bool
-(AccessionID -> AccessionID -> Bool)
--> (AccessionID -> AccessionID -> Bool) -> Eq AccessionID
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: AccessionID -> AccessionID -> Bool
-== :: AccessionID -> AccessionID -> Bool
-$c/= :: AccessionID -> AccessionID -> Bool
-/= :: AccessionID -> AccessionID -> Bool
-Eq, Eq AccessionID
-Eq AccessionID
--> (AccessionID -> AccessionID -> Ordering)
--> (AccessionID -> AccessionID -> Bool)
--> (AccessionID -> AccessionID -> Bool)
--> (AccessionID -> AccessionID -> Bool)
--> (AccessionID -> AccessionID -> Bool)
--> (AccessionID -> AccessionID -> AccessionID)
--> (AccessionID -> AccessionID -> AccessionID)
--> Ord AccessionID
-AccessionID -> AccessionID -> Bool
-AccessionID -> AccessionID -> Ordering
-AccessionID -> AccessionID -> AccessionID
-forall a.
-Eq a
--> (a -> a -> Ordering)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> Bool)
--> (a -> a -> a)
--> (a -> a -> a)
--> Ord a
-$ccompare :: AccessionID -> AccessionID -> Ordering
-compare :: AccessionID -> AccessionID -> Ordering
-$c< :: AccessionID -> AccessionID -> Bool
-< :: AccessionID -> AccessionID -> Bool
-$c<= :: AccessionID -> AccessionID -> Bool
-<= :: AccessionID -> AccessionID -> Bool
-$c> :: AccessionID -> AccessionID -> Bool
-> :: AccessionID -> AccessionID -> Bool
-$c>= :: AccessionID -> AccessionID -> Bool
->= :: AccessionID -> AccessionID -> Bool
-$cmax :: AccessionID -> AccessionID -> AccessionID
-max :: AccessionID -> AccessionID -> AccessionID
-$cmin :: AccessionID -> AccessionID -> AccessionID
-min :: AccessionID -> AccessionID -> AccessionID
-Ord, (forall x. AccessionID -> Rep AccessionID x)
--> (forall x. Rep AccessionID x -> AccessionID)
--> Generic AccessionID
-forall x. Rep AccessionID x -> AccessionID
-forall x. AccessionID -> Rep AccessionID x
-forall a.
-(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-$cfrom :: forall x. AccessionID -> Rep AccessionID x
-from :: forall x. AccessionID -> Rep AccessionID x
-$cto :: forall x. Rep AccessionID x -> AccessionID
-to :: forall x. Rep AccessionID x -> AccessionID
-Generic)
-
-instance Show AccessionID where
-    show :: AccessionID -> String
-show (INSDCProject String
-x)    = String
-x
-    show (INSDCStudy String
-x)      = String
-x
-    show (INSDCBioSample String
-x)  = String
-x
-    show (INSDCSample String
-x)     = String
-x
-    show (INSDCExperiment String
-x) = String
-x
-    show (INSDCRun String
-x)        = String
-x
-    show (INSDCAnalysis String
-x)   = String
-x
-    show (OtherID String
-x)         = String
-x
-
--- the patterns are documented at:
--- https://ena-docs.readthedocs.io/en/latest/submit/general-guide/accessions.html
-makeAccessionID :: MonadFail m => String -> m AccessionID
-makeAccessionID :: forall (m :: * -> *). MonadFail m => String -> m AccessionID
-makeAccessionID String
-x
-    | String
-x String -> String -> Bool
-forall source source1 target.
-(RegexMaker Regex CompOption ExecOption source,
- RegexContext Regex source1 target) =>
-source1 -> source -> target
-Reg.=~ (String
-"PRJ[EDN][A-Z][0-9]+"  :: String) = AccessionID -> m AccessionID
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
-forall a b. (a -> b) -> a -> b
-$ String -> AccessionID
-INSDCProject String
-x
-    | String
-x String -> String -> Bool
-forall source source1 target.
-(RegexMaker Regex CompOption ExecOption source,
- RegexContext Regex source1 target) =>
-source1 -> source -> target
-Reg.=~ (String
-"[EDS]RP[0-9]{6,}"     :: String) = AccessionID -> m AccessionID
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
-forall a b. (a -> b) -> a -> b
-$ String -> AccessionID
-INSDCStudy String
-x
-    | String
-x String -> String -> Bool
-forall source source1 target.
-(RegexMaker Regex CompOption ExecOption source,
- RegexContext Regex source1 target) =>
-source1 -> source -> target
-Reg.=~ (String
-"SAM[EDN][A-Z]?[0-9]+" :: String) = AccessionID -> m AccessionID
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
-forall a b. (a -> b) -> a -> b
-$ String -> AccessionID
-INSDCBioSample String
-x
-    | String
-x String -> String -> Bool
-forall source source1 target.
-(RegexMaker Regex CompOption ExecOption source,
- RegexContext Regex source1 target) =>
-source1 -> source -> target
-Reg.=~ (String
-"[EDS]RS[0-9]{6,}"     :: String) = AccessionID -> m AccessionID
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
-forall a b. (a -> b) -> a -> b
-$ String -> AccessionID
-INSDCSample String
-x
-    | String
-x String -> String -> Bool
-forall source source1 target.
-(RegexMaker Regex CompOption ExecOption source,
- RegexContext Regex source1 target) =>
-source1 -> source -> target
-Reg.=~ (String
-"[EDS]RX[0-9]{6,}"     :: String) = AccessionID -> m AccessionID
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
-forall a b. (a -> b) -> a -> b
-$ String -> AccessionID
-INSDCExperiment String
-x
-    | String
-x String -> String -> Bool
-forall source source1 target.
-(RegexMaker Regex CompOption ExecOption source,
- RegexContext Regex source1 target) =>
-source1 -> source -> target
-Reg.=~ (String
-"[EDS]RR[0-9]{6,}"     :: String) = AccessionID -> m AccessionID
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
-forall a b. (a -> b) -> a -> b
-$ String -> AccessionID
-INSDCRun String
-x
-    | String
-x String -> String -> Bool
-forall source source1 target.
-(RegexMaker Regex CompOption ExecOption source,
- RegexContext Regex source1 target) =>
-source1 -> source -> target
-Reg.=~ (String
-"[EDS]RZ[0-9]{6,}"     :: String) = AccessionID -> m AccessionID
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
-forall a b. (a -> b) -> a -> b
-$ String -> AccessionID
-INSDCAnalysis String
-x
-    | Bool
-otherwise                                   = AccessionID -> m AccessionID
-forall a. a -> m a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
-forall a b. (a -> b) -> a -> b
-$ String -> AccessionID
-OtherID String
-x
-
-instance Csv.ToField AccessionID where
-    toField :: AccessionID -> ByteString
-toField AccessionID
-x = String -> ByteString
-forall a. ToField a => a -> ByteString
-Csv.toField (String -> ByteString) -> String -> ByteString
-forall a b. (a -> b) -> a -> b
-$ AccessionID -> String
-forall a. Show a => a -> String
-show AccessionID
-x
-instance Csv.FromField AccessionID where
-    parseField :: ByteString -> Parser AccessionID
-parseField ByteString
-x = ByteString -> Parser String
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField ByteString
-x Parser String
--> (String -> Parser AccessionID) -> Parser AccessionID
-forall a b. Parser a -> (a -> Parser b) -> Parser b
-forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
->>= String -> Parser AccessionID
-forall (m :: * -> *). MonadFail m => String -> m AccessionID
-makeAccessionID
-instance ToJSON AccessionID where
-    toEncoding :: AccessionID -> Encoding
-toEncoding = Options -> AccessionID -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-    --toEncoding x = text $ T.pack $ show x
-instance FromJSON AccessionID-- where
-    --parseJSON = withText "AccessionID" (makeAccessionID . T.unpack)
-
--- | A general datatype for janno list columns
-newtype JannoList a = JannoList {forall a. JannoList a -> [a]
-getJannoList :: [a]}
-    deriving (JannoList a -> JannoList a -> Bool
-(JannoList a -> JannoList a -> Bool)
--> (JannoList a -> JannoList a -> Bool) -> Eq (JannoList a)
-forall a. Eq a => JannoList a -> JannoList a -> Bool
-forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
-$c== :: forall a. Eq a => JannoList a -> JannoList a -> Bool
-== :: JannoList a -> JannoList a -> Bool
-$c/= :: forall a. Eq a => JannoList a -> JannoList a -> Bool
-/= :: JannoList a -> JannoList a -> Bool
-Eq, Eq (JannoList a)
-Eq (JannoList a)
--> (JannoList a -> JannoList a -> Ordering)
--> (JannoList a -> JannoList a -> Bool)
--> (JannoList a -> JannoList a -> Bool)
--> (JannoList a -> JannoList a -> Bool)
--> (JannoList a -> JannoList a -> Bool)
--> (JannoList a -> JannoList a -> JannoList a)
--> (JannoList a -> JannoList a -> JannoList a)
--> Ord (JannoList a)
-JannoList a -> JannoList a -> Bool
-JannoList a -> JannoList a -> Ordering
-JannoList a -> JannoList a -> JannoList a
+$c== :: forall a. Eq a => ListColumn a -> ListColumn a -> Bool
+== :: ListColumn a -> ListColumn a -> Bool
+$c/= :: forall a. Eq a => ListColumn a -> ListColumn a -> Bool
+/= :: ListColumn a -> ListColumn a -> Bool
+Eq, Eq (ListColumn a)
+Eq (ListColumn a)
+-> (ListColumn a -> ListColumn a -> Ordering)
+-> (ListColumn a -> ListColumn a -> Bool)
+-> (ListColumn a -> ListColumn a -> Bool)
+-> (ListColumn a -> ListColumn a -> Bool)
+-> (ListColumn a -> ListColumn a -> Bool)
+-> (ListColumn a -> ListColumn a -> ListColumn a)
+-> (ListColumn a -> ListColumn a -> ListColumn a)
+-> Ord (ListColumn a)
+ListColumn a -> ListColumn a -> Bool
+ListColumn a -> ListColumn a -> Ordering
+ListColumn a -> ListColumn a -> ListColumn a
 forall a.
 Eq a
 -> (a -> a -> Ordering)
@@ -2831,74 +110,73 @@
 -> (a -> a -> a)
 -> (a -> a -> a)
 -> Ord a
-forall {a}. Ord a => Eq (JannoList a)
-forall a. Ord a => JannoList a -> JannoList a -> Bool
-forall a. Ord a => JannoList a -> JannoList a -> Ordering
-forall a. Ord a => JannoList a -> JannoList a -> JannoList a
-$ccompare :: forall a. Ord a => JannoList a -> JannoList a -> Ordering
-compare :: JannoList a -> JannoList a -> Ordering
-$c< :: forall a. Ord a => JannoList a -> JannoList a -> Bool
-< :: JannoList a -> JannoList a -> Bool
-$c<= :: forall a. Ord a => JannoList a -> JannoList a -> Bool
-<= :: JannoList a -> JannoList a -> Bool
-$c> :: forall a. Ord a => JannoList a -> JannoList a -> Bool
-> :: JannoList a -> JannoList a -> Bool
-$c>= :: forall a. Ord a => JannoList a -> JannoList a -> Bool
->= :: JannoList a -> JannoList a -> Bool
-$cmax :: forall a. Ord a => JannoList a -> JannoList a -> JannoList a
-max :: JannoList a -> JannoList a -> JannoList a
-$cmin :: forall a. Ord a => JannoList a -> JannoList a -> JannoList a
-min :: JannoList a -> JannoList a -> JannoList a
-Ord, (forall x. JannoList a -> Rep (JannoList a) x)
--> (forall x. Rep (JannoList a) x -> JannoList a)
--> Generic (JannoList a)
-forall x. Rep (JannoList a) x -> JannoList a
-forall x. JannoList a -> Rep (JannoList a) x
+forall {a}. Ord a => Eq (ListColumn a)
+forall a. Ord a => ListColumn a -> ListColumn a -> Bool
+forall a. Ord a => ListColumn a -> ListColumn a -> Ordering
+forall a. Ord a => ListColumn a -> ListColumn a -> ListColumn a
+$ccompare :: forall a. Ord a => ListColumn a -> ListColumn a -> Ordering
+compare :: ListColumn a -> ListColumn a -> Ordering
+$c< :: forall a. Ord a => ListColumn a -> ListColumn a -> Bool
+< :: ListColumn a -> ListColumn a -> Bool
+$c<= :: forall a. Ord a => ListColumn a -> ListColumn a -> Bool
+<= :: ListColumn a -> ListColumn a -> Bool
+$c> :: forall a. Ord a => ListColumn a -> ListColumn a -> Bool
+> :: ListColumn a -> ListColumn a -> Bool
+$c>= :: forall a. Ord a => ListColumn a -> ListColumn a -> Bool
+>= :: ListColumn a -> ListColumn a -> Bool
+$cmax :: forall a. Ord a => ListColumn a -> ListColumn a -> ListColumn a
+max :: ListColumn a -> ListColumn a -> ListColumn a
+$cmin :: forall a. Ord a => ListColumn a -> ListColumn a -> ListColumn a
+min :: ListColumn a -> ListColumn a -> ListColumn a
+Ord, (forall x. ListColumn a -> Rep (ListColumn a) x)
+-> (forall x. Rep (ListColumn a) x -> ListColumn a)
+-> Generic (ListColumn a)
+forall x. Rep (ListColumn a) x -> ListColumn a
+forall x. ListColumn a -> Rep (ListColumn a) x
 forall a.
 (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
-forall a x. Rep (JannoList a) x -> JannoList a
-forall a x. JannoList a -> Rep (JannoList a) x
-$cfrom :: forall a x. JannoList a -> Rep (JannoList a) x
-from :: forall x. JannoList a -> Rep (JannoList a) x
-$cto :: forall a x. Rep (JannoList a) x -> JannoList a
-to :: forall x. Rep (JannoList a) x -> JannoList a
-Generic, Int -> JannoList a -> ShowS
-[JannoList a] -> ShowS
-JannoList a -> String
-(Int -> JannoList a -> ShowS)
--> (JannoList a -> String)
--> ([JannoList a] -> ShowS)
--> Show (JannoList a)
-forall a. Show a => Int -> JannoList a -> ShowS
-forall a. Show a => [JannoList a] -> ShowS
-forall a. Show a => JannoList a -> String
+forall a x. Rep (ListColumn a) x -> ListColumn a
+forall a x. ListColumn a -> Rep (ListColumn a) x
+$cfrom :: forall a x. ListColumn a -> Rep (ListColumn a) x
+from :: forall x. ListColumn a -> Rep (ListColumn a) x
+$cto :: forall a x. Rep (ListColumn a) x -> ListColumn a
+to :: forall x. Rep (ListColumn a) x -> ListColumn a
+Generic, Int -> ListColumn a -> ShowS
+[ListColumn a] -> ShowS
+ListColumn a -> String
+(Int -> ListColumn a -> ShowS)
+-> (ListColumn a -> String)
+-> ([ListColumn a] -> ShowS)
+-> Show (ListColumn a)
+forall a. Show a => Int -> ListColumn a -> ShowS
+forall a. Show a => [ListColumn a] -> ShowS
+forall a. Show a => ListColumn a -> String
 forall a.
 (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
-$cshowsPrec :: forall a. Show a => Int -> JannoList a -> ShowS
-showsPrec :: Int -> JannoList a -> ShowS
-$cshow :: forall a. Show a => JannoList a -> String
-show :: JannoList a -> String
-$cshowList :: forall a. Show a => [JannoList a] -> ShowS
-showList :: [JannoList a] -> ShowS
+$cshowsPrec :: forall a. Show a => Int -> ListColumn a -> ShowS
+showsPrec :: Int -> ListColumn a -> ShowS
+$cshow :: forall a. Show a => ListColumn a -> String
+show :: ListColumn a -> String
+$cshowList :: forall a. Show a => [ListColumn a] -> ShowS
+showList :: [ListColumn a] -> ShowS
 Show)
-
-getMaybeJannoList :: Maybe (JannoList a) -> [a]
-getMaybeJannoList :: forall a. Maybe (JannoList a) -> [a]
-getMaybeJannoList Maybe (JannoList a)
+
+getMaybeListColumn :: Maybe (ListColumn a) -> [a]
+getMaybeListColumn :: forall a. Maybe (ListColumn a) -> [a]
+getMaybeListColumn Maybe (ListColumn a)
 Nothing  = []
-getMaybeJannoList (Just JannoList a
-x) = JannoList a -> [a]
-forall a. JannoList a -> [a]
-getJannoList JannoList a
-x
-
-type JannoStringList = JannoList String
-type JannoIntList = JannoList Int
-
-instance (Csv.ToField a, Show a) => Csv.ToField (JannoList a) where
-    toField :: JannoList a -> ByteString
-toField JannoList a
-x = ByteString -> [ByteString] -> ByteString
+getMaybeListColumn (Just ListColumn a
+x) = ListColumn a -> [a]
+forall a. ListColumn a -> [a]
+getListColumn ListColumn a
+x
+
+type JannoStringList = ListColumn String
+
+instance (Csv.ToField a, Show a) => Csv.ToField (ListColumn a) where
+    toField :: ListColumn a -> ByteString
+toField ListColumn a
+x = ByteString -> [ByteString] -> ByteString
 Bchs.intercalate ByteString
 ";" ([ByteString] -> ByteString) -> [ByteString] -> ByteString
 forall a b. (a -> b) -> a -> b
@@ -2908,22 +186,22 @@
 forall a. ToField a => a -> ByteString
 Csv.toField ([a] -> [ByteString]) -> [a] -> [ByteString]
 forall a b. (a -> b) -> a -> b
-$ JannoList a -> [a]
-forall a. JannoList a -> [a]
-getJannoList JannoList a
-x
-instance (Csv.FromField a) => Csv.FromField (JannoList a) where
-    parseField :: ByteString -> Parser (JannoList a)
-parseField ByteString
-x = ([a] -> JannoList a) -> Parser [a] -> Parser (JannoList a)
+$ ListColumn a -> [a]
+forall a. ListColumn a -> [a]
+getListColumn ListColumn a
+x
+instance (Csv.FromField a) => Csv.FromField (ListColumn a) where
+    parseField :: ByteString -> Parser (ListColumn a)
+parseField ByteString
+x = ([a] -> ListColumn a) -> Parser [a] -> Parser (ListColumn a)
 forall a b. (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
-fmap [a] -> JannoList a
-forall a. [a] -> JannoList a
-JannoList (Parser [a] -> Parser (JannoList a))
+fmap [a] -> ListColumn a
+forall a. [a] -> ListColumn a
+ListColumn (Parser [a] -> Parser (ListColumn a))
 -> ([ByteString] -> Parser [a])
 -> [ByteString]
--> Parser (JannoList a)
+-> Parser (ListColumn a)
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . (ByteString -> Parser a) -> [ByteString] -> Parser [a]
 forall (t :: * -> *) (m :: * -> *) a b.
@@ -2932,64 +210,18 @@
 forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
 mapM ByteString -> Parser a
 forall a. FromField a => ByteString -> Parser a
-Csv.parseField ([ByteString] -> Parser (JannoList a))
--> [ByteString] -> Parser (JannoList a)
+Csv.parseField ([ByteString] -> Parser (ListColumn a))
+-> [ByteString] -> Parser (ListColumn a)
 forall a b. (a -> b) -> a -> b
 $ (Char -> Bool) -> ByteString -> [ByteString]
 Bchs.splitWith (Char -> Char -> Bool
 forall a. Eq a => a -> a -> Bool
 ==Char
 ';') ByteString
-x
-instance (ToJSON a) => ToJSON (JannoList a) where
-    toEncoding :: JannoList a -> Encoding
-toEncoding (JannoList [a]
-x) = [a] -> Encoding
-forall a. ToJSON a => a -> Encoding
-toEncoding [a]
-x
-instance (FromJSON a) => FromJSON (JannoList a) where
-    parseJSON :: Value -> Parser (JannoList a)
-parseJSON Value
-x
-        | Value -> Bool
-isAesonString Value
-x = [a] -> JannoList a
-forall a. [a] -> JannoList a
-JannoList ([a] -> JannoList a) -> (a -> [a]) -> a -> JannoList a
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. a -> [a]
-forall {a}. a -> [a]
-singleton (a -> JannoList a) -> Parser a -> Parser (JannoList a)
-forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
-<$> Value -> Parser a
-forall a. FromJSON a => Value -> Parser a
-parseJSON Value
-x
-        | Bool
-otherwise = [a] -> JannoList a
-forall a. [a] -> JannoList a
-JannoList ([a] -> JannoList a) -> Parser [a] -> Parser (JannoList a)
-forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
-<$> Value -> Parser [a]
-forall a. FromJSON a => Value -> Parser a
-parseJSON Value
-x
-        where
-            isAesonString :: Value -> Bool
-isAesonString (String Text
-_) = Bool
-True
-            isAesonString Value
-_          = Bool
-False
-            singleton :: a -> [a]
-singleton a
-a = [a
-a]
-
--- | A datatype to collect additional, unpecified .janno file columns (a hashmap in cassava/Data.Csv)
-newtype CsvNamedRecord = CsvNamedRecord Csv.NamedRecord deriving (Int -> CsvNamedRecord -> ShowS
+x
+
+-- | A datatype to collect additional, unpecified .janno file columns (a hashmap in cassava/Data.Csv)
+newtype CsvNamedRecord = CsvNamedRecord Csv.NamedRecord deriving (Int -> CsvNamedRecord -> ShowS
 [CsvNamedRecord] -> ShowS
 CsvNamedRecord -> String
 (Int -> CsvNamedRecord -> ShowS)
@@ -3004,7 +236,7 @@
 show :: CsvNamedRecord -> String
 $cshowList :: [CsvNamedRecord] -> ShowS
 showList :: [CsvNamedRecord] -> ShowS
-Show, CsvNamedRecord -> CsvNamedRecord -> Bool
+Show, CsvNamedRecord -> CsvNamedRecord -> Bool
 (CsvNamedRecord -> CsvNamedRecord -> Bool)
 -> (CsvNamedRecord -> CsvNamedRecord -> Bool) -> Eq CsvNamedRecord
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -3012,7 +244,7 @@
 == :: CsvNamedRecord -> CsvNamedRecord -> Bool
 $c/= :: CsvNamedRecord -> CsvNamedRecord -> Bool
 /= :: CsvNamedRecord -> CsvNamedRecord -> Bool
-Eq, (forall x. CsvNamedRecord -> Rep CsvNamedRecord x)
+Eq, (forall x. CsvNamedRecord -> Rep CsvNamedRecord x)
 -> (forall x. Rep CsvNamedRecord x -> CsvNamedRecord)
 -> Generic CsvNamedRecord
 forall x. Rep CsvNamedRecord x -> CsvNamedRecord
@@ -3024,95 +256,16 @@
 $cto :: forall x. Rep CsvNamedRecord x -> CsvNamedRecord
 to :: forall x. Rep CsvNamedRecord x -> CsvNamedRecord
 Generic)
-
-getCsvNR :: CsvNamedRecord -> Csv.NamedRecord
-getCsvNR :: CsvNamedRecord -> NamedRecord
-getCsvNR (CsvNamedRecord NamedRecord
-x) = NamedRecord
-x
-
--- Aeson does not encode ByteStrings, so that's why we have to go through Text
-instance ToJSON CsvNamedRecord where
-    toJSON :: CsvNamedRecord -> Value
-toJSON (CsvNamedRecord NamedRecord
-x) =
-        let listOfBSTuples :: [(ByteString, ByteString)]
-listOfBSTuples = NamedRecord -> [(ByteString, ByteString)]
-forall k v. HashMap k v -> [(k, v)]
-HM.toList NamedRecord
-x
-            listOfTextTuples :: [(Text, Text)]
-listOfTextTuples = ((ByteString, ByteString) -> (Text, Text))
--> [(ByteString, ByteString)] -> [(Text, Text)]
-forall a b. (a -> b) -> [a] -> [b]
-map (\(ByteString
-a,ByteString
-b) -> (ByteString -> Text
-T.decodeUtf8 ByteString
-a, ByteString -> Text
-T.decodeUtf8 ByteString
-b)) [(ByteString, ByteString)]
-listOfBSTuples
-        in [(Text, Text)] -> Value
-forall a. ToJSON a => a -> Value
-toJSON [(Text, Text)]
-listOfTextTuples
-instance FromJSON CsvNamedRecord where
-    parseJSON :: Value -> Parser CsvNamedRecord
-parseJSON Value
-x
-        | Value
-x Value -> Value -> Bool
-forall a. Eq a => a -> a -> Bool
-== Value
-emptyObject = CsvNamedRecord -> Parser CsvNamedRecord
-forall a. a -> Parser a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (CsvNamedRecord -> Parser CsvNamedRecord)
--> CsvNamedRecord -> Parser CsvNamedRecord
-forall a b. (a -> b) -> a -> b
-$ NamedRecord -> CsvNamedRecord
-CsvNamedRecord (NamedRecord -> CsvNamedRecord) -> NamedRecord -> CsvNamedRecord
-forall a b. (a -> b) -> a -> b
-$ [(ByteString, ByteString)] -> NamedRecord
-forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
-HM.fromList []
-        | Bool
-otherwise = do
-            [(Text, Text)]
-listOfTextTuples <- Value -> Parser [(Text, Text)]
-forall a. FromJSON a => Value -> Parser a
-parseJSON Value
-x -- :: [(T.Text, T.Text)]
-            let listOfBSTuples :: [(ByteString, ByteString)]
-listOfBSTuples = ((Text, Text) -> (ByteString, ByteString))
--> [(Text, Text)] -> [(ByteString, ByteString)]
-forall a b. (a -> b) -> [a] -> [b]
-map (\(Text
-a,Text
-b) -> (Text -> ByteString
-T.encodeUtf8 Text
-a, Text -> ByteString
-T.encodeUtf8 Text
-b)) [(Text, Text)]
-listOfTextTuples
-            CsvNamedRecord -> Parser CsvNamedRecord
-forall a. a -> Parser a
-forall (f :: * -> *) a. Applicative f => a -> f a
-pure (CsvNamedRecord -> Parser CsvNamedRecord)
--> CsvNamedRecord -> Parser CsvNamedRecord
-forall a b. (a -> b) -> a -> b
-$ NamedRecord -> CsvNamedRecord
-CsvNamedRecord (NamedRecord -> CsvNamedRecord) -> NamedRecord -> CsvNamedRecord
-forall a b. (a -> b) -> a -> b
-$ [(ByteString, ByteString)] -> NamedRecord
-forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
-HM.fromList [(ByteString, ByteString)]
-listOfBSTuples
-
--- | A  data type to represent a janno file
-newtype JannoRows = JannoRows [JannoRow]
-    deriving (Int -> JannoRows -> ShowS
+
+getCsvNR :: CsvNamedRecord -> Csv.NamedRecord
+getCsvNR :: CsvNamedRecord -> NamedRecord
+getCsvNR (CsvNamedRecord NamedRecord
+x) = NamedRecord
+x
+
+-- | A  data type to represent a janno file
+newtype JannoRows = JannoRows [JannoRow]
+    deriving (Int -> JannoRows -> ShowS
 [JannoRows] -> ShowS
 JannoRows -> String
 (Int -> JannoRows -> ShowS)
@@ -3127,7 +280,7 @@
 show :: JannoRows -> String
 $cshowList :: [JannoRows] -> ShowS
 showList :: [JannoRows] -> ShowS
-Show, JannoRows -> JannoRows -> Bool
+Show, JannoRows -> JannoRows -> Bool
 (JannoRows -> JannoRows -> Bool)
 -> (JannoRows -> JannoRows -> Bool) -> Eq JannoRows
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -3135,7 +288,7 @@
 == :: JannoRows -> JannoRows -> Bool
 $c/= :: JannoRows -> JannoRows -> Bool
 /= :: JannoRows -> JannoRows -> Bool
-Eq, (forall x. JannoRows -> Rep JannoRows x)
+Eq, (forall x. JannoRows -> Rep JannoRows x)
 -> (forall x. Rep JannoRows x -> JannoRows) -> Generic JannoRows
 forall x. Rep JannoRows x -> JannoRows
 forall x. JannoRows -> Rep JannoRows x
@@ -3146,32 +299,32 @@
 $cto :: forall x. Rep JannoRows x -> JannoRows
 to :: forall x. Rep JannoRows x -> JannoRows
 Generic)
-
-instance Semigroup JannoRows where
-    (JannoRows [JannoRow]
-j1) <> :: JannoRows -> JannoRows -> JannoRows
-<> (JannoRows [JannoRow]
-j2) = [JannoRow] -> JannoRows
+
+instance Semigroup JannoRows where
+    (JannoRows [JannoRow]
+j1) <> :: JannoRows -> JannoRows -> JannoRows
+<> (JannoRows [JannoRow]
+j2) = [JannoRow] -> JannoRows
 JannoRows ([JannoRow] -> JannoRows) -> [JannoRow] -> JannoRows
 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-j1 [JannoRow] -> [JannoRow] -> [JannoRow]
-`combineTwoJannos` [JannoRow]
-j2
-        where
-        combineTwoJannos :: [JannoRow] -> [JannoRow] -> [JannoRow]
-        combineTwoJannos :: [JannoRow] -> [JannoRow] -> [JannoRow]
-combineTwoJannos [JannoRow]
-janno1 [JannoRow]
-janno2 =
-            let simpleJannoSum :: [JannoRow]
-simpleJannoSum = [JannoRow]
-janno1 [JannoRow] -> [JannoRow] -> [JannoRow]
+j1 [JannoRow] -> [JannoRow] -> [JannoRow]
+`combineTwoJannos` [JannoRow]
+j2
+        where
+        combineTwoJannos :: [JannoRow] -> [JannoRow] -> [JannoRow]
+        combineTwoJannos :: [JannoRow] -> [JannoRow] -> [JannoRow]
+combineTwoJannos [JannoRow]
+janno1 [JannoRow]
+janno2 =
+            let simpleJannoSum :: [JannoRow]
+simpleJannoSum = [JannoRow]
+janno1 [JannoRow] -> [JannoRow] -> [JannoRow]
 forall a. [a] -> [a] -> [a]
 ++ [JannoRow]
-janno2
-                toAddColNames :: [ByteString]
-toAddColNames = NamedRecord -> [ByteString]
+janno2
+                toAddColNames :: [ByteString]
+toAddColNames = NamedRecord -> [ByteString]
 forall k v. HashMap k v -> [k]
 HM.keys ([NamedRecord] -> NamedRecord
 forall k v. (Eq k, Hashable k) => [HashMap k v] -> HashMap k v
@@ -3183,64 +336,64 @@
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . JannoRow -> CsvNamedRecord
 jAdditionalColumns) [JannoRow]
-simpleJannoSum))
-                toAddEmptyCols :: NamedRecord
-toAddEmptyCols = [(ByteString, ByteString)] -> NamedRecord
+simpleJannoSum))
+                toAddEmptyCols :: NamedRecord
+toAddEmptyCols = [(ByteString, ByteString)] -> NamedRecord
 forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
 HM.fromList ((ByteString -> (ByteString, ByteString))
 -> [ByteString] -> [(ByteString, ByteString)]
 forall a b. (a -> b) -> [a] -> [b]
-map (\ByteString
-k -> (ByteString
-k, ByteString
+map (\ByteString
+k -> (ByteString
+k, ByteString
 "n/a")) [ByteString]
-toAddColNames)
-            in (JannoRow -> JannoRow) -> [JannoRow] -> [JannoRow]
+toAddColNames)
+            in (JannoRow -> JannoRow) -> [JannoRow] -> [JannoRow]
 forall a b. (a -> b) -> [a] -> [b]
 map (NamedRecord -> JannoRow -> JannoRow
-addEmptyAddColsToJannoRow NamedRecord
-toAddEmptyCols) [JannoRow]
-simpleJannoSum
-        addEmptyAddColsToJannoRow :: Csv.NamedRecord -> JannoRow -> JannoRow
-        addEmptyAddColsToJannoRow :: NamedRecord -> JannoRow -> JannoRow
-addEmptyAddColsToJannoRow NamedRecord
-toAdd JannoRow
-x =
-            JannoRow
-x { jAdditionalColumns :: CsvNamedRecord
+addEmptyAddColsToJannoRow NamedRecord
+toAddEmptyCols) [JannoRow]
+simpleJannoSum
+        addEmptyAddColsToJannoRow :: Csv.NamedRecord -> JannoRow -> JannoRow
+        addEmptyAddColsToJannoRow :: NamedRecord -> JannoRow -> JannoRow
+addEmptyAddColsToJannoRow NamedRecord
+toAdd JannoRow
+x =
+            JannoRow
+x { jAdditionalColumns :: CsvNamedRecord
 jAdditionalColumns = NamedRecord -> CsvNamedRecord
 CsvNamedRecord (NamedRecord -> CsvNamedRecord) -> NamedRecord -> CsvNamedRecord
 forall a b. (a -> b) -> a -> b
 $ NamedRecord -> NamedRecord -> NamedRecord
-fillAddCols NamedRecord
-toAdd (CsvNamedRecord -> NamedRecord
+fillAddCols NamedRecord
+toAdd (CsvNamedRecord -> NamedRecord
 getCsvNR (CsvNamedRecord -> NamedRecord) -> CsvNamedRecord -> NamedRecord
 forall a b. (a -> b) -> a -> b
 $ JannoRow -> CsvNamedRecord
 jAdditionalColumns JannoRow
-x) }
-        fillAddCols :: Csv.NamedRecord -> Csv.NamedRecord -> Csv.NamedRecord
-        fillAddCols :: NamedRecord -> NamedRecord -> NamedRecord
-fillAddCols NamedRecord
-toAdd NamedRecord
-cur = NamedRecord -> NamedRecord -> NamedRecord
+x) }
+        fillAddCols :: Csv.NamedRecord -> Csv.NamedRecord -> Csv.NamedRecord
+        fillAddCols :: NamedRecord -> NamedRecord -> NamedRecord
+fillAddCols NamedRecord
+toAdd NamedRecord
+cur = NamedRecord -> NamedRecord -> NamedRecord
 forall k v.
 (Eq k, Hashable k) =>
 HashMap k v -> HashMap k v -> HashMap k v
 HM.union NamedRecord
-cur (NamedRecord
-toAdd NamedRecord -> NamedRecord -> NamedRecord
+cur (NamedRecord
+toAdd NamedRecord -> NamedRecord -> NamedRecord
 forall k v w.
 (Eq k, Hashable k) =>
 HashMap k v -> HashMap k w -> HashMap k v
 `HM.difference` NamedRecord
-cur)
-
-instance Monoid JannoRows where
-    mempty :: JannoRows
+cur)
+
+instance Monoid JannoRows where
+    mempty :: JannoRows
 mempty = [JannoRow] -> JannoRows
 JannoRows []
-    mconcat :: [JannoRows] -> JannoRows
+    mconcat :: [JannoRows] -> JannoRows
 mconcat = (JannoRows -> JannoRows -> JannoRows)
 -> JannoRows -> [JannoRows] -> JannoRows
 forall b a. (b -> a -> b) -> b -> [a] -> b
@@ -3252,117 +405,107 @@
 mappend JannoRows
 forall a. Monoid a => a
 mempty
-
-instance ToJSON JannoRows where
-    toEncoding :: JannoRows -> Encoding
-toEncoding = Options -> JannoRows -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-instance FromJSON JannoRows
-
--- | A data type to represent a sample/janno file row
--- See https://github.com/poseidon-framework/poseidon2-schema/blob/master/janno_columns.tsv
--- for more details
-data JannoRow = JannoRow
-    { JannoRow -> String
+
+-- | A data type to represent a sample/janno file row
+-- See https://github.com/poseidon-framework/poseidon2-schema/blob/master/janno_columns.tsv
+-- for more details
+data JannoRow = JannoRow
+    { JannoRow -> String
 jPoseidonID                 :: String
-    , JannoRow -> JannoSex
-jGeneticSex                 :: JannoSex
-    , JannoRow -> JannoStringList
-jGroupName                  :: JannoStringList
-    , JannoRow -> Maybe JannoStringList
-jAlternativeIDs             :: Maybe JannoStringList
-    , JannoRow -> Maybe JannoStringList
-jRelationTo                 :: Maybe JannoStringList
-    , JannoRow -> Maybe JannoRelationDegreeList
-jRelationDegree             :: Maybe JannoRelationDegreeList
-    , JannoRow -> Maybe JannoStringList
-jRelationType               :: Maybe JannoStringList
-    , JannoRow -> Maybe String
-jRelationNote               :: Maybe String
-    , JannoRow -> Maybe String
-jCollectionID               :: Maybe String
-    , JannoRow -> Maybe String
-jCountry                    :: Maybe String
-    , JannoRow -> Maybe JannoCountry
-jCountryISO                 :: Maybe JannoCountry
-    , JannoRow -> Maybe String
-jLocation                   :: Maybe String
-    , JannoRow -> Maybe String
-jSite                       :: Maybe String
-    , JannoRow -> Maybe Latitude
-jLatitude                   :: Maybe Latitude
-    , JannoRow -> Maybe Longitude
-jLongitude                  :: Maybe Longitude
-    , JannoRow -> Maybe JannoDateType
-jDateType                   :: Maybe JannoDateType
-    , JannoRow -> Maybe JannoStringList
-jDateC14Labnr               :: Maybe JannoStringList
-    , JannoRow -> Maybe JannoIntList
-jDateC14UncalBP             :: Maybe JannoIntList
-    , JannoRow -> Maybe JannoIntList
-jDateC14UncalBPErr          :: Maybe JannoIntList
-    , JannoRow -> Maybe BCADAge
-jDateBCADStart              :: Maybe BCADAge
-    , JannoRow -> Maybe BCADAge
-jDateBCADMedian             :: Maybe BCADAge
-    , JannoRow -> Maybe BCADAge
-jDateBCADStop               :: Maybe BCADAge
-    , JannoRow -> Maybe String
-jDateNote                   :: Maybe String
-    , JannoRow -> Maybe String
-jMTHaplogroup               :: Maybe String
-    , JannoRow -> Maybe String
-jYHaplogroup                :: Maybe String
-    , JannoRow -> Maybe JannoStringList
-jSourceTissue               :: Maybe JannoStringList
-    , JannoRow -> Maybe Int
-jNrLibraries                :: Maybe Int
-    , JannoRow -> Maybe JannoStringList
-jLibraryNames               :: Maybe JannoStringList
-    , JannoRow -> Maybe (JannoList JannoCaptureType)
-jCaptureType                :: Maybe (JannoList JannoCaptureType)
-    , JannoRow -> Maybe JannoUDG
-jUDG                        :: Maybe JannoUDG
-    , JannoRow -> Maybe JannoLibraryBuilt
-jLibraryBuilt               :: Maybe JannoLibraryBuilt
-    , JannoRow -> Maybe JannoGenotypePloidy
-jGenotypePloidy             :: Maybe JannoGenotypePloidy
-    , JannoRow -> Maybe JURI
-jDataPreparationPipelineURL :: Maybe JURI
-    , JannoRow -> Maybe Percent
-jEndogenous                 :: Maybe Percent
-    , JannoRow -> Maybe Int
-jNrSNPs                     :: Maybe Int
-    , JannoRow -> Maybe Double
-jCoverageOnTargets          :: Maybe Double
-    , JannoRow -> Maybe Percent
-jDamage                     :: Maybe Percent
-    , JannoRow -> Maybe JannoStringList
-jContamination              :: Maybe JannoStringList
-    , JannoRow -> Maybe JannoStringList
-jContaminationErr           :: Maybe JannoStringList
-    , JannoRow -> Maybe JannoStringList
-jContaminationMeas          :: Maybe JannoStringList
-    , JannoRow -> Maybe String
-jContaminationNote          :: Maybe String
-    , JannoRow -> Maybe (JannoList AccessionID)
-jGeneticSourceAccessionIDs  :: Maybe (JannoList AccessionID)
-    , JannoRow -> Maybe String
-jPrimaryContact             :: Maybe String
-    , JannoRow -> Maybe JannoStringList
-jPublication                :: Maybe JannoStringList
-    , JannoRow -> Maybe String
-jComments                   :: Maybe String
-    , JannoRow -> Maybe JannoStringList
-jKeywords                   :: Maybe JannoStringList
-    , JannoRow -> CsvNamedRecord
+    , JannoRow -> GeneticSex
+jGeneticSex                 :: GeneticSex
+    , JannoRow -> ListColumn GroupName
+jGroupName                  :: ListColumn GroupName
+    , JannoRow -> Maybe (ListColumn JannoAlternativeID)
+jAlternativeIDs             :: Maybe (ListColumn JannoAlternativeID)
+    , JannoRow -> Maybe (ListColumn JannoRelationTo)
+jRelationTo                 :: Maybe (ListColumn JannoRelationTo)
+    , JannoRow -> Maybe (ListColumn JannoRelationDegree)
+jRelationDegree             :: Maybe (ListColumn JannoRelationDegree)
+    , JannoRow -> Maybe (ListColumn JannoRelationType)
+jRelationType               :: Maybe (ListColumn JannoRelationType)
+    , JannoRow -> Maybe JannoRelationNote
+jRelationNote               :: Maybe JannoRelationNote
+    , JannoRow -> Maybe JannoCollectionID
+jCollectionID               :: Maybe JannoCollectionID
+    , JannoRow -> Maybe JannoCountry
+jCountry                    :: Maybe JannoCountry
+    , JannoRow -> Maybe JannoCountryISO
+jCountryISO                 :: Maybe JannoCountryISO
+    , JannoRow -> Maybe JannoLocation
+jLocation                   :: Maybe JannoLocation
+    , JannoRow -> Maybe JannoSite
+jSite                       :: Maybe JannoSite
+    , JannoRow -> Maybe JannoLatitude
+jLatitude                   :: Maybe JannoLatitude
+    , JannoRow -> Maybe JannoLongitude
+jLongitude                  :: Maybe JannoLongitude
+    , JannoRow -> Maybe JannoDateType
+jDateType                   :: Maybe JannoDateType
+    , JannoRow -> Maybe (ListColumn JannoDateC14Labnr)
+jDateC14Labnr               :: Maybe (ListColumn JannoDateC14Labnr)
+    , JannoRow -> Maybe (ListColumn JannoDateC14UncalBP)
+jDateC14UncalBP             :: Maybe (ListColumn JannoDateC14UncalBP)
+    , JannoRow -> Maybe (ListColumn JannoDateC14UncalBPErr)
+jDateC14UncalBPErr          :: Maybe (ListColumn JannoDateC14UncalBPErr)
+    , JannoRow -> Maybe JannoDateBCADStart
+jDateBCADStart              :: Maybe JannoDateBCADStart
+    , JannoRow -> Maybe JannoDateBCADMedian
+jDateBCADMedian             :: Maybe JannoDateBCADMedian
+    , JannoRow -> Maybe JannoDateBCADStop
+jDateBCADStop               :: Maybe JannoDateBCADStop
+    , JannoRow -> Maybe JannoDateNote
+jDateNote                   :: Maybe JannoDateNote
+    , JannoRow -> Maybe JannoMTHaplogroup
+jMTHaplogroup               :: Maybe JannoMTHaplogroup
+    , JannoRow -> Maybe JannoYHaplogroup
+jYHaplogroup                :: Maybe JannoYHaplogroup
+    , JannoRow -> Maybe (ListColumn JannoSourceTissue)
+jSourceTissue               :: Maybe (ListColumn JannoSourceTissue)
+    , JannoRow -> Maybe JannoNrLibraries
+jNrLibraries                :: Maybe JannoNrLibraries
+    , JannoRow -> Maybe (ListColumn JannoLibraryName)
+jLibraryNames               :: Maybe (ListColumn JannoLibraryName)
+    , JannoRow -> Maybe (ListColumn JannoCaptureType)
+jCaptureType                :: Maybe (ListColumn JannoCaptureType)
+    , JannoRow -> Maybe JannoUDG
+jUDG                        :: Maybe JannoUDG
+    , JannoRow -> Maybe JannoLibraryBuilt
+jLibraryBuilt               :: Maybe JannoLibraryBuilt
+    , JannoRow -> Maybe JannoGenotypePloidy
+jGenotypePloidy             :: Maybe JannoGenotypePloidy
+    , JannoRow -> Maybe JannoDataPreparationPipelineURL
+jDataPreparationPipelineURL :: Maybe JannoDataPreparationPipelineURL
+    , JannoRow -> Maybe JannoEndogenous
+jEndogenous                 :: Maybe JannoEndogenous
+    , JannoRow -> Maybe JannoNrSNPs
+jNrSNPs                     :: Maybe JannoNrSNPs
+    , JannoRow -> Maybe JannoCoverageOnTargets
+jCoverageOnTargets          :: Maybe JannoCoverageOnTargets
+    , JannoRow -> Maybe JannoDamage
+jDamage                     :: Maybe JannoDamage
+    , JannoRow -> Maybe (ListColumn JannoContamination)
+jContamination              :: Maybe (ListColumn JannoContamination)
+    , JannoRow -> Maybe (ListColumn JannoContaminationErr)
+jContaminationErr           :: Maybe (ListColumn JannoContaminationErr)
+    , JannoRow -> Maybe (ListColumn JannoContaminationMeas)
+jContaminationMeas          :: Maybe (ListColumn JannoContaminationMeas)
+    , JannoRow -> Maybe JannoContaminationNote
+jContaminationNote          :: Maybe JannoContaminationNote
+    , JannoRow -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+jGeneticSourceAccessionIDs  :: Maybe (ListColumn JannoGeneticSourceAccessionID)
+    , JannoRow -> Maybe JannoPrimaryContact
+jPrimaryContact             :: Maybe JannoPrimaryContact
+    , JannoRow -> Maybe (ListColumn JannoPublication)
+jPublication                :: Maybe (ListColumn JannoPublication)
+    , JannoRow -> Maybe JannoComment
+jComments                   :: Maybe JannoComment
+    , JannoRow -> Maybe (ListColumn JannoKeyword)
+jKeywords                   :: Maybe (ListColumn JannoKeyword)
+    , JannoRow -> CsvNamedRecord
 jAdditionalColumns          :: CsvNamedRecord
-    }
-    deriving (Int -> JannoRow -> ShowS
+    }
+    deriving (Int -> JannoRow -> ShowS
 [JannoRow] -> ShowS
 JannoRow -> String
 (Int -> JannoRow -> ShowS)
@@ -3375,7 +518,7 @@
 show :: JannoRow -> String
 $cshowList :: [JannoRow] -> ShowS
 showList :: [JannoRow] -> ShowS
-Show, JannoRow -> JannoRow -> Bool
+Show, JannoRow -> JannoRow -> Bool
 (JannoRow -> JannoRow -> Bool)
 -> (JannoRow -> JannoRow -> Bool) -> Eq JannoRow
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -3383,7 +526,7 @@
 == :: JannoRow -> JannoRow -> Bool
 $c/= :: JannoRow -> JannoRow -> Bool
 /= :: JannoRow -> JannoRow -> Bool
-Eq, (forall x. JannoRow -> Rep JannoRow x)
+Eq, (forall x. JannoRow -> Rep JannoRow x)
 -> (forall x. Rep JannoRow x -> JannoRow) -> Generic JannoRow
 forall x. Rep JannoRow x -> JannoRow
 forall x. JannoRow -> Rep JannoRow x
@@ -3394,123 +537,101 @@
 $cto :: forall x. Rep JannoRow x -> JannoRow
 to :: forall x. Rep JannoRow x -> JannoRow
 Generic)
-
--- This header also defines the output column order when writing to csv!
-jannoHeader :: [Bchs.ByteString]
-jannoHeader :: [ByteString]
+
+-- This header also defines the output column order when writing to csv!
+jannoHeader :: [Bchs.ByteString]
+jannoHeader :: [ByteString]
 jannoHeader = [
-      ByteString
+      ByteString
 "Poseidon_ID"
-    , ByteString
+    , ByteString
 "Genetic_Sex"
-    , ByteString
+    , ByteString
 "Group_Name"
-    , ByteString
+    , ByteString
 "Alternative_IDs"
-    , ByteString
-"Relation_To"
-    , ByteString
-"Relation_Degree"
-    , ByteString
-"Relation_Type"
-    , ByteString
+    , ByteString
+"Relation_To", ByteString
+"Relation_Degree", ByteString
+"Relation_Type", ByteString
 "Relation_Note"
-    , ByteString
+    , ByteString
 "Collection_ID"
-    , ByteString
-"Country"
-    , ByteString
+    , ByteString
+"Country", ByteString
 "Country_ISO"
-    , ByteString
-"Location"
-    , ByteString
-"Site"
-    , ByteString
-"Latitude"
-    , ByteString
+    , ByteString
+"Location", ByteString
+"Site", ByteString
+"Latitude", ByteString
 "Longitude"
-    , ByteString
+    , ByteString
 "Date_Type"
-    , ByteString
-"Date_C14_Labnr"
-    , ByteString
-"Date_C14_Uncal_BP"
-    , ByteString
+    , ByteString
+"Date_C14_Labnr", ByteString
+"Date_C14_Uncal_BP", ByteString
 "Date_C14_Uncal_BP_Err"
-    , ByteString
-"Date_BC_AD_Start"
-    , ByteString
-"Date_BC_AD_Median"
-    , ByteString
+    , ByteString
+"Date_BC_AD_Start", ByteString
+"Date_BC_AD_Median", ByteString
 "Date_BC_AD_Stop"
-    , ByteString
+    , ByteString
 "Date_Note"
-    , ByteString
-"MT_Haplogroup"
-    , ByteString
+    , ByteString
+"MT_Haplogroup", ByteString
 "Y_Haplogroup"
-    , ByteString
+    , ByteString
 "Source_Tissue"
-    , ByteString
-"Nr_Libraries"
-    , ByteString
+    , ByteString
+"Nr_Libraries", ByteString
 "Library_Names"
-    , ByteString
-"Capture_Type"
-    , ByteString
-"UDG"
-    , ByteString
-"Library_Built"
-    , ByteString
+    , ByteString
+"Capture_Type", ByteString
+"UDG", ByteString
+"Library_Built", ByteString
 "Genotype_Ploidy"
-    , ByteString
+    , ByteString
 "Data_Preparation_Pipeline_URL"
-    , ByteString
-"Endogenous"
-    , ByteString
-"Nr_SNPs"
-    , ByteString
-"Coverage_on_Target_SNPs"
-    , ByteString
+    , ByteString
+"Endogenous", ByteString
+"Nr_SNPs", ByteString
+"Coverage_on_Target_SNPs", ByteString
 "Damage"
-    , ByteString
-"Contamination"
-    , ByteString
-"Contamination_Err"
-    , ByteString
-"Contamination_Meas"
-    , ByteString
+    , ByteString
+"Contamination", ByteString
+"Contamination_Err", ByteString
+"Contamination_Meas", ByteString
 "Contamination_Note"
-    , ByteString
+    , ByteString
 "Genetic_Source_Accession_IDs"
-    , ByteString
+    , ByteString
 "Primary_Contact"
-    , ByteString
+    , ByteString
 "Publication"
-    , ByteString
+    , ByteString
 "Note"
-    , ByteString
+    , ByteString
 "Keywords"
-    ]
-
-instance Csv.DefaultOrdered JannoRow where
-    headerOrder :: JannoRow -> Header
-headerOrder JannoRow
+    ]
+
+instance Csv.DefaultOrdered JannoRow where
+    headerOrder :: JannoRow -> Header
+headerOrder JannoRow
 _ = [ByteString] -> Header
 Csv.header [ByteString]
 jannoHeader
-
-jannoHeaderString :: [String]
-jannoHeaderString :: JannoRowWarnings
+
+jannoHeaderString :: [String]
+jannoHeaderString :: JannoRowWarnings
 jannoHeaderString = (ByteString -> String) -> [ByteString] -> JannoRowWarnings
 forall a b. (a -> b) -> [a] -> [b]
 map ByteString -> String
 Bchs.unpack [ByteString]
 jannoHeader
-
--- This hashmap represents an empty janno file with all normal, specified columns
-jannoRefHashMap :: HM.HashMap Bchs.ByteString ()
-jannoRefHashMap :: HashMap ByteString ()
+
+-- This hashmap represents an empty janno file with all normal, specified columns
+jannoRefHashMap :: HM.HashMap Bchs.ByteString ()
+jannoRefHashMap :: HashMap ByteString ()
 jannoRefHashMap = [(ByteString, ())] -> HashMap ByteString ()
 forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
 HM.fromList ([(ByteString, ())] -> HashMap ByteString ())
@@ -3519,1529 +640,1520 @@
 $ (ByteString -> (ByteString, ()))
 -> [ByteString] -> [(ByteString, ())]
 forall a b. (a -> b) -> [a] -> [b]
-map (\ByteString
-x -> (ByteString
-x, ())) [ByteString]
+map (\ByteString
+x -> (ByteString
+x, ())) [ByteString]
 jannoHeader
-
-instance ToJSON JannoRow where
-    toEncoding :: JannoRow -> Encoding
-toEncoding = Options -> JannoRow -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding (Options
-defaultOptions {omitNothingFields :: Bool
-omitNothingFields = Bool
-True})
-
-instance FromJSON JannoRow
-
-instance Csv.FromNamedRecord JannoRow where
-    parseNamedRecord :: NamedRecord -> Parser JannoRow
-parseNamedRecord NamedRecord
-m = String
--> JannoSex
--> JannoStringList
--> Maybe JannoStringList
--> Maybe JannoStringList
--> Maybe JannoRelationDegreeList
--> Maybe JannoStringList
--> Maybe String
--> Maybe String
--> Maybe String
+
+instance Csv.FromNamedRecord JannoRow where
+    parseNamedRecord :: NamedRecord -> Parser JannoRow
+parseNamedRecord NamedRecord
+m = String
+-> GeneticSex
+-> ListColumn GroupName
+-> Maybe (ListColumn JannoAlternativeID)
+-> Maybe (ListColumn JannoRelationTo)
+-> Maybe (ListColumn JannoRelationDegree)
+-> Maybe (ListColumn JannoRelationType)
+-> Maybe JannoRelationNote
+-> Maybe JannoCollectionID
 -> Maybe JannoCountry
--> Maybe String
--> Maybe String
--> Maybe Latitude
--> Maybe Longitude
+-> Maybe JannoCountryISO
+-> Maybe JannoLocation
+-> Maybe JannoSite
+-> Maybe JannoLatitude
+-> Maybe JannoLongitude
 -> Maybe JannoDateType
--> Maybe JannoStringList
--> Maybe JannoIntList
--> Maybe JannoIntList
--> Maybe BCADAge
--> Maybe BCADAge
--> Maybe BCADAge
--> Maybe String
--> Maybe String
--> Maybe String
--> Maybe JannoStringList
--> Maybe Int
--> Maybe JannoStringList
--> Maybe (JannoList JannoCaptureType)
+-> Maybe (ListColumn JannoDateC14Labnr)
+-> Maybe (ListColumn JannoDateC14UncalBP)
+-> Maybe (ListColumn JannoDateC14UncalBPErr)
+-> Maybe JannoDateBCADStart
+-> Maybe JannoDateBCADMedian
+-> Maybe JannoDateBCADStop
+-> Maybe JannoDateNote
+-> Maybe JannoMTHaplogroup
+-> Maybe JannoYHaplogroup
+-> Maybe (ListColumn JannoSourceTissue)
+-> Maybe JannoNrLibraries
+-> Maybe (ListColumn JannoLibraryName)
+-> Maybe (ListColumn JannoCaptureType)
 -> Maybe JannoUDG
 -> Maybe JannoLibraryBuilt
 -> Maybe JannoGenotypePloidy
--> Maybe JURI
--> Maybe Percent
--> Maybe Int
--> Maybe Double
--> Maybe Percent
--> Maybe JannoStringList
--> Maybe JannoStringList
--> Maybe JannoStringList
--> Maybe String
--> Maybe (JannoList AccessionID)
--> Maybe String
--> Maybe JannoStringList
--> Maybe String
--> Maybe JannoStringList
+-> Maybe JannoDataPreparationPipelineURL
+-> Maybe JannoEndogenous
+-> Maybe JannoNrSNPs
+-> Maybe JannoCoverageOnTargets
+-> Maybe JannoDamage
+-> Maybe (ListColumn JannoContamination)
+-> Maybe (ListColumn JannoContaminationErr)
+-> Maybe (ListColumn JannoContaminationMeas)
+-> Maybe JannoContaminationNote
+-> Maybe (ListColumn JannoGeneticSourceAccessionID)
+-> Maybe JannoPrimaryContact
+-> Maybe (ListColumn JannoPublication)
+-> Maybe JannoComment
+-> Maybe (ListColumn JannoKeyword)
 -> CsvNamedRecord
 -> JannoRow
 JannoRow
-        (String
- -> JannoSex
- -> JannoStringList
- -> Maybe JannoStringList
- -> Maybe JannoStringList
- -> Maybe JannoRelationDegreeList
- -> Maybe JannoStringList
- -> Maybe String
- -> Maybe String
- -> Maybe String
+        (String
+ -> GeneticSex
+ -> ListColumn GroupName
+ -> Maybe (ListColumn JannoAlternativeID)
+ -> Maybe (ListColumn JannoRelationTo)
+ -> Maybe (ListColumn JannoRelationDegree)
+ -> Maybe (ListColumn JannoRelationType)
+ -> Maybe JannoRelationNote
+ -> Maybe JannoCollectionID
  -> Maybe JannoCountry
- -> Maybe String
- -> Maybe String
- -> Maybe Latitude
- -> Maybe Longitude
+ -> Maybe JannoCountryISO
+ -> Maybe JannoLocation
+ -> Maybe JannoSite
+ -> Maybe JannoLatitude
+ -> Maybe JannoLongitude
  -> Maybe JannoDateType
- -> Maybe JannoStringList
- -> Maybe JannoIntList
- -> Maybe JannoIntList
- -> Maybe BCADAge
- -> Maybe BCADAge
- -> Maybe BCADAge
- -> Maybe String
- -> Maybe String
- -> Maybe String
- -> Maybe JannoStringList
- -> Maybe Int
- -> Maybe JannoStringList
- -> Maybe (JannoList JannoCaptureType)
+ -> Maybe (ListColumn JannoDateC14Labnr)
+ -> Maybe (ListColumn JannoDateC14UncalBP)
+ -> Maybe (ListColumn JannoDateC14UncalBPErr)
+ -> Maybe JannoDateBCADStart
+ -> Maybe JannoDateBCADMedian
+ -> Maybe JannoDateBCADStop
+ -> Maybe JannoDateNote
+ -> Maybe JannoMTHaplogroup
+ -> Maybe JannoYHaplogroup
+ -> Maybe (ListColumn JannoSourceTissue)
+ -> Maybe JannoNrLibraries
+ -> Maybe (ListColumn JannoLibraryName)
+ -> Maybe (ListColumn JannoCaptureType)
  -> Maybe JannoUDG
  -> Maybe JannoLibraryBuilt
  -> Maybe JannoGenotypePloidy
- -> Maybe JURI
- -> Maybe Percent
- -> Maybe Int
- -> Maybe Double
- -> Maybe Percent
- -> Maybe JannoStringList
- -> Maybe JannoStringList
- -> Maybe JannoStringList
- -> Maybe String
- -> Maybe (JannoList AccessionID)
- -> Maybe String
- -> Maybe JannoStringList
- -> Maybe String
- -> Maybe JannoStringList
+ -> Maybe JannoDataPreparationPipelineURL
+ -> Maybe JannoEndogenous
+ -> Maybe JannoNrSNPs
+ -> Maybe JannoCoverageOnTargets
+ -> Maybe JannoDamage
+ -> Maybe (ListColumn JannoContamination)
+ -> Maybe (ListColumn JannoContaminationErr)
+ -> Maybe (ListColumn JannoContaminationMeas)
+ -> Maybe JannoContaminationNote
+ -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+ -> Maybe JannoPrimaryContact
+ -> Maybe (ListColumn JannoPublication)
+ -> Maybe JannoComment
+ -> Maybe (ListColumn JannoKeyword)
  -> CsvNamedRecord
  -> JannoRow)
 -> Parser String
 -> Parser
-     (JannoSex
-      -> JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoRelationDegreeList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
+     (GeneticSex
+      -> ListColumn GroupName
+      -> Maybe (ListColumn JannoAlternativeID)
+      -> Maybe (ListColumn JannoRelationTo)
+      -> Maybe (ListColumn JannoRelationDegree)
+      -> Maybe (ListColumn JannoRelationType)
+      -> Maybe JannoRelationNote
+      -> Maybe JannoCollectionID
       -> Maybe JannoCountry
-      -> Maybe String
-      -> Maybe String
-      -> Maybe Latitude
-      -> Maybe Longitude
+      -> Maybe JannoCountryISO
+      -> Maybe JannoLocation
+      -> Maybe JannoSite
+      -> Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> NamedRecord -> ByteString -> Parser String
 forall a. FromField a => NamedRecord -> ByteString -> Parser a
 filterLookup         NamedRecord
-m ByteString
+m ByteString
 "Poseidon_ID"
-        Parser
-  (JannoSex
-   -> JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoRelationDegreeList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
+        Parser
+  (GeneticSex
+   -> ListColumn GroupName
+   -> Maybe (ListColumn JannoAlternativeID)
+   -> Maybe (ListColumn JannoRelationTo)
+   -> Maybe (ListColumn JannoRelationDegree)
+   -> Maybe (ListColumn JannoRelationType)
+   -> Maybe JannoRelationNote
+   -> Maybe JannoCollectionID
    -> Maybe JannoCountry
-   -> Maybe String
-   -> Maybe String
-   -> Maybe Latitude
-   -> Maybe Longitude
+   -> Maybe JannoCountryISO
+   -> Maybe JannoLocation
+   -> Maybe JannoSite
+   -> Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser JannoSex
+-> Parser GeneticSex
 -> Parser
-     (JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoRelationDegreeList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
+     (ListColumn GroupName
+      -> Maybe (ListColumn JannoAlternativeID)
+      -> Maybe (ListColumn JannoRelationTo)
+      -> Maybe (ListColumn JannoRelationDegree)
+      -> Maybe (ListColumn JannoRelationType)
+      -> Maybe JannoRelationNote
+      -> Maybe JannoCollectionID
       -> Maybe JannoCountry
-      -> Maybe String
-      -> Maybe String
-      -> Maybe Latitude
-      -> Maybe Longitude
+      -> Maybe JannoCountryISO
+      -> Maybe JannoLocation
+      -> Maybe JannoSite
+      -> Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser JannoSex
+<*> NamedRecord -> ByteString -> Parser GeneticSex
 forall a. FromField a => NamedRecord -> ByteString -> Parser a
 filterLookup         NamedRecord
-m ByteString
+m ByteString
 "Genetic_Sex"
-        Parser
-  (JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoRelationDegreeList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
+        Parser
+  (ListColumn GroupName
+   -> Maybe (ListColumn JannoAlternativeID)
+   -> Maybe (ListColumn JannoRelationTo)
+   -> Maybe (ListColumn JannoRelationDegree)
+   -> Maybe (ListColumn JannoRelationType)
+   -> Maybe JannoRelationNote
+   -> Maybe JannoCollectionID
    -> Maybe JannoCountry
-   -> Maybe String
-   -> Maybe String
-   -> Maybe Latitude
-   -> Maybe Longitude
+   -> Maybe JannoCountryISO
+   -> Maybe JannoLocation
+   -> Maybe JannoSite
+   -> Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser JannoStringList
+-> Parser (ListColumn GroupName)
 -> Parser
-     (Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoRelationDegreeList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
+     (Maybe (ListColumn JannoAlternativeID)
+      -> Maybe (ListColumn JannoRelationTo)
+      -> Maybe (ListColumn JannoRelationDegree)
+      -> Maybe (ListColumn JannoRelationType)
+      -> Maybe JannoRelationNote
+      -> Maybe JannoCollectionID
       -> Maybe JannoCountry
-      -> Maybe String
-      -> Maybe String
-      -> Maybe Latitude
-      -> Maybe Longitude
+      -> Maybe JannoCountryISO
+      -> Maybe JannoLocation
+      -> Maybe JannoSite
+      -> Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser JannoStringList
+<*> NamedRecord -> ByteString -> Parser (ListColumn GroupName)
 forall a. FromField a => NamedRecord -> ByteString -> Parser a
 filterLookup         NamedRecord
-m ByteString
+m ByteString
 "Group_Name"
-        Parser
-  (Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoRelationDegreeList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
+        Parser
+  (Maybe (ListColumn JannoAlternativeID)
+   -> Maybe (ListColumn JannoRelationTo)
+   -> Maybe (ListColumn JannoRelationDegree)
+   -> Maybe (ListColumn JannoRelationType)
+   -> Maybe JannoRelationNote
+   -> Maybe JannoCollectionID
    -> Maybe JannoCountry
-   -> Maybe String
-   -> Maybe String
-   -> Maybe Latitude
-   -> Maybe Longitude
+   -> Maybe JannoCountryISO
+   -> Maybe JannoLocation
+   -> Maybe JannoSite
+   -> Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoStringList)
+-> Parser (Maybe (ListColumn JannoAlternativeID))
 -> Parser
-     (Maybe JannoStringList
-      -> Maybe JannoRelationDegreeList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
+     (Maybe (ListColumn JannoRelationTo)
+      -> Maybe (ListColumn JannoRelationDegree)
+      -> Maybe (ListColumn JannoRelationType)
+      -> Maybe JannoRelationNote
+      -> Maybe JannoCollectionID
       -> Maybe JannoCountry
-      -> Maybe String
-      -> Maybe String
-      -> Maybe Latitude
-      -> Maybe Longitude
+      -> Maybe JannoCountryISO
+      -> Maybe JannoLocation
+      -> Maybe JannoSite
+      -> Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoStringList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoAlternativeID))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Alternative_IDs"
-        Parser
-  (Maybe JannoStringList
-   -> Maybe JannoRelationDegreeList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
+        Parser
+  (Maybe (ListColumn JannoRelationTo)
+   -> Maybe (ListColumn JannoRelationDegree)
+   -> Maybe (ListColumn JannoRelationType)
+   -> Maybe JannoRelationNote
+   -> Maybe JannoCollectionID
    -> Maybe JannoCountry
-   -> Maybe String
-   -> Maybe String
-   -> Maybe Latitude
-   -> Maybe Longitude
+   -> Maybe JannoCountryISO
+   -> Maybe JannoLocation
+   -> Maybe JannoSite
+   -> Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoStringList)
+-> Parser (Maybe (ListColumn JannoRelationTo))
 -> Parser
-     (Maybe JannoRelationDegreeList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
+     (Maybe (ListColumn JannoRelationDegree)
+      -> Maybe (ListColumn JannoRelationType)
+      -> Maybe JannoRelationNote
+      -> Maybe JannoCollectionID
       -> Maybe JannoCountry
-      -> Maybe String
-      -> Maybe String
-      -> Maybe Latitude
-      -> Maybe Longitude
+      -> Maybe JannoCountryISO
+      -> Maybe JannoLocation
+      -> Maybe JannoSite
+      -> Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoStringList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoRelationTo))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Relation_To"
-        Parser
-  (Maybe JannoRelationDegreeList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
+        Parser
+  (Maybe (ListColumn JannoRelationDegree)
+   -> Maybe (ListColumn JannoRelationType)
+   -> Maybe JannoRelationNote
+   -> Maybe JannoCollectionID
    -> Maybe JannoCountry
-   -> Maybe String
-   -> Maybe String
-   -> Maybe Latitude
-   -> Maybe Longitude
+   -> Maybe JannoCountryISO
+   -> Maybe JannoLocation
+   -> Maybe JannoSite
+   -> Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoRelationDegreeList)
+-> Parser (Maybe (ListColumn JannoRelationDegree))
 -> Parser
-     (Maybe JannoStringList
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
+     (Maybe (ListColumn JannoRelationType)
+      -> Maybe JannoRelationNote
+      -> Maybe JannoCollectionID
       -> Maybe JannoCountry
-      -> Maybe String
-      -> Maybe String
-      -> Maybe Latitude
-      -> Maybe Longitude
+      -> Maybe JannoCountryISO
+      -> Maybe JannoLocation
+      -> Maybe JannoSite
+      -> Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoRelationDegreeList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoRelationDegree))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Relation_Degree"
-        Parser
-  (Maybe JannoStringList
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
+        Parser
+  (Maybe (ListColumn JannoRelationType)
+   -> Maybe JannoRelationNote
+   -> Maybe JannoCollectionID
    -> Maybe JannoCountry
-   -> Maybe String
-   -> Maybe String
-   -> Maybe Latitude
-   -> Maybe Longitude
+   -> Maybe JannoCountryISO
+   -> Maybe JannoLocation
+   -> Maybe JannoSite
+   -> Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoStringList)
+-> Parser (Maybe (ListColumn JannoRelationType))
 -> Parser
-     (Maybe String
-      -> Maybe String
-      -> Maybe String
+     (Maybe JannoRelationNote
+      -> Maybe JannoCollectionID
       -> Maybe JannoCountry
-      -> Maybe String
-      -> Maybe String
-      -> Maybe Latitude
-      -> Maybe Longitude
+      -> Maybe JannoCountryISO
+      -> Maybe JannoLocation
+      -> Maybe JannoSite
+      -> Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoStringList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoRelationType))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Relation_Type"
-        Parser
-  (Maybe String
-   -> Maybe String
-   -> Maybe String
+        Parser
+  (Maybe JannoRelationNote
+   -> Maybe JannoCollectionID
    -> Maybe JannoCountry
-   -> Maybe String
-   -> Maybe String
-   -> Maybe Latitude
-   -> Maybe Longitude
+   -> Maybe JannoCountryISO
+   -> Maybe JannoLocation
+   -> Maybe JannoSite
+   -> Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe String)
+-> Parser (Maybe JannoRelationNote)
 -> Parser
-     (Maybe String
-      -> Maybe String
+     (Maybe JannoCollectionID
       -> Maybe JannoCountry
-      -> Maybe String
-      -> Maybe String
-      -> Maybe Latitude
-      -> Maybe Longitude
+      -> Maybe JannoCountryISO
+      -> Maybe JannoLocation
+      -> Maybe JannoSite
+      -> Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe String)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoRelationNote)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Relation_Note"
-        Parser
-  (Maybe String
-   -> Maybe String
+        Parser
+  (Maybe JannoCollectionID
    -> Maybe JannoCountry
-   -> Maybe String
-   -> Maybe String
-   -> Maybe Latitude
-   -> Maybe Longitude
+   -> Maybe JannoCountryISO
+   -> Maybe JannoLocation
+   -> Maybe JannoSite
+   -> Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe String)
+-> Parser (Maybe JannoCollectionID)
 -> Parser
-     (Maybe String
-      -> Maybe JannoCountry
-      -> Maybe String
-      -> Maybe String
-      -> Maybe Latitude
-      -> Maybe Longitude
+     (Maybe JannoCountry
+      -> Maybe JannoCountryISO
+      -> Maybe JannoLocation
+      -> Maybe JannoSite
+      -> Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe String)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoCollectionID)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Collection_ID"
-        Parser
-  (Maybe String
-   -> Maybe JannoCountry
-   -> Maybe String
-   -> Maybe String
-   -> Maybe Latitude
-   -> Maybe Longitude
+        Parser
+  (Maybe JannoCountry
+   -> Maybe JannoCountryISO
+   -> Maybe JannoLocation
+   -> Maybe JannoSite
+   -> Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe String)
+-> Parser (Maybe JannoCountry)
 -> Parser
-     (Maybe JannoCountry
-      -> Maybe String
-      -> Maybe String
-      -> Maybe Latitude
-      -> Maybe Longitude
+     (Maybe JannoCountryISO
+      -> Maybe JannoLocation
+      -> Maybe JannoSite
+      -> Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe String)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoCountry)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Country"
-        Parser
-  (Maybe JannoCountry
-   -> Maybe String
-   -> Maybe String
-   -> Maybe Latitude
-   -> Maybe Longitude
+        Parser
+  (Maybe JannoCountryISO
+   -> Maybe JannoLocation
+   -> Maybe JannoSite
+   -> Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoCountry)
+-> Parser (Maybe JannoCountryISO)
 -> Parser
-     (Maybe String
-      -> Maybe String
-      -> Maybe Latitude
-      -> Maybe Longitude
+     (Maybe JannoLocation
+      -> Maybe JannoSite
+      -> Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoCountry)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoCountryISO)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Country_ISO"
-        Parser
-  (Maybe String
-   -> Maybe String
-   -> Maybe Latitude
-   -> Maybe Longitude
+        Parser
+  (Maybe JannoLocation
+   -> Maybe JannoSite
+   -> Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe String)
+-> Parser (Maybe JannoLocation)
 -> Parser
-     (Maybe String
-      -> Maybe Latitude
-      -> Maybe Longitude
+     (Maybe JannoSite
+      -> Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe String)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoLocation)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Location"
-        Parser
-  (Maybe String
-   -> Maybe Latitude
-   -> Maybe Longitude
+        Parser
+  (Maybe JannoSite
+   -> Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe String)
+-> Parser (Maybe JannoSite)
 -> Parser
-     (Maybe Latitude
-      -> Maybe Longitude
+     (Maybe JannoLatitude
+      -> Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe String)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoSite)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Site"
-        Parser
-  (Maybe Latitude
-   -> Maybe Longitude
+        Parser
+  (Maybe JannoLatitude
+   -> Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe Latitude)
+-> Parser (Maybe JannoLatitude)
 -> Parser
-     (Maybe Longitude
+     (Maybe JannoLongitude
       -> Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe Latitude)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoLatitude)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Latitude"
-        Parser
-  (Maybe Longitude
+        Parser
+  (Maybe JannoLongitude
    -> Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe Longitude)
+-> Parser (Maybe JannoLongitude)
 -> Parser
      (Maybe JannoDateType
-      -> Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+      -> Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe Longitude)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoLongitude)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Longitude"
-        Parser
+        Parser
   (Maybe JannoDateType
-   -> Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+   -> Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
 -> Parser (Maybe JannoDateType)
 -> Parser
-     (Maybe JannoStringList
-      -> Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+     (Maybe (ListColumn JannoDateC14Labnr)
+      -> Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -5051,866 +2163,871 @@
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_Type"
-        Parser
-  (Maybe JannoStringList
-   -> Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe (ListColumn JannoDateC14Labnr)
+   -> Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoStringList)
+-> Parser (Maybe (ListColumn JannoDateC14Labnr))
 -> Parser
-     (Maybe JannoIntList
-      -> Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+     (Maybe (ListColumn JannoDateC14UncalBP)
+      -> Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoStringList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoDateC14Labnr))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_C14_Labnr"
-        Parser
-  (Maybe JannoIntList
-   -> Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe (ListColumn JannoDateC14UncalBP)
+   -> Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoIntList)
+-> Parser (Maybe (ListColumn JannoDateC14UncalBP))
 -> Parser
-     (Maybe JannoIntList
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+     (Maybe (ListColumn JannoDateC14UncalBPErr)
+      -> Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoIntList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoDateC14UncalBP))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_C14_Uncal_BP"
-        Parser
-  (Maybe JannoIntList
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe (ListColumn JannoDateC14UncalBPErr)
+   -> Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoIntList)
+-> Parser (Maybe (ListColumn JannoDateC14UncalBPErr))
 -> Parser
-     (Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+     (Maybe JannoDateBCADStart
+      -> Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoIntList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoDateC14UncalBPErr))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_C14_Uncal_BP_Err"
-        Parser
-  (Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe JannoDateBCADStart
+   -> Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe BCADAge)
+-> Parser (Maybe JannoDateBCADStart)
 -> Parser
-     (Maybe BCADAge
-      -> Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+     (Maybe JannoDateBCADMedian
+      -> Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe BCADAge)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoDateBCADStart)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_BC_AD_Start"
-        Parser
-  (Maybe BCADAge
-   -> Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe JannoDateBCADMedian
+   -> Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe BCADAge)
+-> Parser (Maybe JannoDateBCADMedian)
 -> Parser
-     (Maybe BCADAge
-      -> Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+     (Maybe JannoDateBCADStop
+      -> Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe BCADAge)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoDateBCADMedian)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_BC_AD_Median"
-        Parser
-  (Maybe BCADAge
-   -> Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe JannoDateBCADStop
+   -> Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe BCADAge)
+-> Parser (Maybe JannoDateBCADStop)
 -> Parser
-     (Maybe String
-      -> Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+     (Maybe JannoDateNote
+      -> Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe BCADAge)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoDateBCADStop)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_BC_AD_Stop"
-        Parser
-  (Maybe String
-   -> Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe JannoDateNote
+   -> Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe String)
+-> Parser (Maybe JannoDateNote)
 -> Parser
-     (Maybe String
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+     (Maybe JannoMTHaplogroup
+      -> Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe String)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoDateNote)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_Note"
-        Parser
-  (Maybe String
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe JannoMTHaplogroup
+   -> Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe String)
+-> Parser (Maybe JannoMTHaplogroup)
 -> Parser
-     (Maybe String
-      -> Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+     (Maybe JannoYHaplogroup
+      -> Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe String)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoMTHaplogroup)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "MT_Haplogroup"
-        Parser
-  (Maybe String
-   -> Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe JannoYHaplogroup
+   -> Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe String)
+-> Parser (Maybe JannoYHaplogroup)
 -> Parser
-     (Maybe JannoStringList
-      -> Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+     (Maybe (ListColumn JannoSourceTissue)
+      -> Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe String)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoYHaplogroup)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Y_Haplogroup"
-        Parser
-  (Maybe JannoStringList
-   -> Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe (ListColumn JannoSourceTissue)
+   -> Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoStringList)
+-> Parser (Maybe (ListColumn JannoSourceTissue))
 -> Parser
-     (Maybe Int
-      -> Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+     (Maybe JannoNrLibraries
+      -> Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoStringList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoSourceTissue))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Source_Tissue"
-        Parser
-  (Maybe Int
-   -> Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe JannoNrLibraries
+   -> Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe Int)
+-> Parser (Maybe JannoNrLibraries)
 -> Parser
-     (Maybe JannoStringList
-      -> Maybe (JannoList JannoCaptureType)
+     (Maybe (ListColumn JannoLibraryName)
+      -> Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe Int)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoNrLibraries)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Nr_Libraries"
-        Parser
-  (Maybe JannoStringList
-   -> Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe (ListColumn JannoLibraryName)
+   -> Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoStringList)
+-> Parser (Maybe (ListColumn JannoLibraryName))
 -> Parser
-     (Maybe (JannoList JannoCaptureType)
+     (Maybe (ListColumn JannoCaptureType)
       -> Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoStringList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoLibraryName))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Library_Names"
-        Parser
-  (Maybe (JannoList JannoCaptureType)
+        Parser
+  (Maybe (ListColumn JannoCaptureType)
    -> Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe (JannoList JannoCaptureType))
+-> Parser (Maybe (ListColumn JannoCaptureType))
 -> Parser
      (Maybe JannoUDG
       -> Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> NamedRecord
--> ByteString -> Parser (Maybe (JannoList JannoCaptureType))
+-> ByteString -> Parser (Maybe (ListColumn JannoCaptureType))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Capture_Type"
-        Parser
+        Parser
   (Maybe JannoUDG
    -> Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
 -> Parser (Maybe JannoUDG)
 -> Parser
      (Maybe JannoLibraryBuilt
       -> Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -5920,44 +3037,44 @@
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "UDG"
-        Parser
+        Parser
   (Maybe JannoLibraryBuilt
    -> Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
 -> Parser (Maybe JannoLibraryBuilt)
 -> Parser
      (Maybe JannoGenotypePloidy
-      -> Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+      -> Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -5967,42 +3084,42 @@
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Library_Built"
-        Parser
+        Parser
   (Maybe JannoGenotypePloidy
-   -> Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+   -> Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
 -> Parser (Maybe JannoGenotypePloidy)
 -> Parser
-     (Maybe JURI
-      -> Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+     (Maybe JannoDataPreparationPipelineURL
+      -> Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -6012,419 +3129,429 @@
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Genotype_Ploidy"
-        Parser
-  (Maybe JURI
-   -> Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+        Parser
+  (Maybe JannoDataPreparationPipelineURL
+   -> Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JURI)
+-> Parser (Maybe JannoDataPreparationPipelineURL)
 -> Parser
-     (Maybe Percent
-      -> Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+     (Maybe JannoEndogenous
+      -> Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JURI)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe JannoDataPreparationPipelineURL)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Data_Preparation_Pipeline_URL"
-        Parser
-  (Maybe Percent
-   -> Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+        Parser
+  (Maybe JannoEndogenous
+   -> Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe Percent)
+-> Parser (Maybe JannoEndogenous)
 -> Parser
-     (Maybe Int
-      -> Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+     (Maybe JannoNrSNPs
+      -> Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe Percent)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoEndogenous)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Endogenous"
-        Parser
-  (Maybe Int
-   -> Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+        Parser
+  (Maybe JannoNrSNPs
+   -> Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe Int)
+-> Parser (Maybe JannoNrSNPs)
 -> Parser
-     (Maybe Double
-      -> Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+     (Maybe JannoCoverageOnTargets
+      -> Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe Int)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoNrSNPs)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Nr_SNPs"
-        Parser
-  (Maybe Double
-   -> Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+        Parser
+  (Maybe JannoCoverageOnTargets
+   -> Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe Double)
+-> Parser (Maybe JannoCoverageOnTargets)
 -> Parser
-     (Maybe Percent
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+     (Maybe JannoDamage
+      -> Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe Double)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoCoverageOnTargets)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Coverage_on_Target_SNPs"
-        Parser
-  (Maybe Percent
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+        Parser
+  (Maybe JannoDamage
+   -> Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe Percent)
+-> Parser (Maybe JannoDamage)
 -> Parser
-     (Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+     (Maybe (ListColumn JannoContamination)
+      -> Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe Percent)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoDamage)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Damage"
-        Parser
-  (Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+        Parser
+  (Maybe (ListColumn JannoContamination)
+   -> Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoStringList)
+-> Parser (Maybe (ListColumn JannoContamination))
 -> Parser
-     (Maybe JannoStringList
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+     (Maybe (ListColumn JannoContaminationErr)
+      -> Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoStringList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoContamination))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Contamination"
-        Parser
-  (Maybe JannoStringList
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+        Parser
+  (Maybe (ListColumn JannoContaminationErr)
+   -> Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoStringList)
+-> Parser (Maybe (ListColumn JannoContaminationErr))
 -> Parser
-     (Maybe JannoStringList
-      -> Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+     (Maybe (ListColumn JannoContaminationMeas)
+      -> Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoStringList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoContaminationErr))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Contamination_Err"
-        Parser
-  (Maybe JannoStringList
-   -> Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+        Parser
+  (Maybe (ListColumn JannoContaminationMeas)
+   -> Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoStringList)
+-> Parser (Maybe (ListColumn JannoContaminationMeas))
 -> Parser
-     (Maybe String
-      -> Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+     (Maybe JannoContaminationNote
+      -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoStringList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoContaminationMeas))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Contamination_Meas"
-        Parser
-  (Maybe String
-   -> Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+        Parser
+  (Maybe JannoContaminationNote
+   -> Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe String)
+-> Parser (Maybe JannoContaminationNote)
 -> Parser
-     (Maybe (JannoList AccessionID)
-      -> Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+     (Maybe (ListColumn JannoGeneticSourceAccessionID)
+      -> Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe String)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoContaminationNote)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Contamination_Note"
-        Parser
-  (Maybe (JannoList AccessionID)
-   -> Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+        Parser
+  (Maybe (ListColumn JannoGeneticSourceAccessionID)
+   -> Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe (JannoList AccessionID))
+-> Parser (Maybe (ListColumn JannoGeneticSourceAccessionID))
 -> Parser
-     (Maybe String
-      -> Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+     (Maybe JannoPrimaryContact
+      -> Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe (JannoList AccessionID))
+<*> NamedRecord
+-> ByteString
+-> Parser (Maybe (ListColumn JannoGeneticSourceAccessionID))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Genetic_Source_Accession_IDs"
-        Parser
-  (Maybe String
-   -> Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+        Parser
+  (Maybe JannoPrimaryContact
+   -> Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe String)
+-> Parser (Maybe JannoPrimaryContact)
 -> Parser
-     (Maybe JannoStringList
-      -> Maybe String
-      -> Maybe JannoStringList
+     (Maybe (ListColumn JannoPublication)
+      -> Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword)
       -> CsvNamedRecord
       -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe String)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoPrimaryContact)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Primary_Contact"
-        Parser
-  (Maybe JannoStringList
-   -> Maybe String
-   -> Maybe JannoStringList
+        Parser
+  (Maybe (ListColumn JannoPublication)
+   -> Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword)
    -> CsvNamedRecord
    -> JannoRow)
--> Parser (Maybe JannoStringList)
+-> Parser (Maybe (ListColumn JannoPublication))
 -> Parser
-     (Maybe String
-      -> Maybe JannoStringList -> CsvNamedRecord -> JannoRow)
+     (Maybe JannoComment
+      -> Maybe (ListColumn JannoKeyword) -> CsvNamedRecord -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoStringList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoPublication))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Publication"
-        Parser
-  (Maybe String
-   -> Maybe JannoStringList -> CsvNamedRecord -> JannoRow)
--> Parser (Maybe String)
--> Parser (Maybe JannoStringList -> CsvNamedRecord -> JannoRow)
+        Parser
+  (Maybe JannoComment
+   -> Maybe (ListColumn JannoKeyword) -> CsvNamedRecord -> JannoRow)
+-> Parser (Maybe JannoComment)
+-> Parser
+     (Maybe (ListColumn JannoKeyword) -> CsvNamedRecord -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe String)
+<*> NamedRecord -> ByteString -> Parser (Maybe JannoComment)
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Note"
-        Parser (Maybe JannoStringList -> CsvNamedRecord -> JannoRow)
--> Parser (Maybe JannoStringList)
+        Parser
+  (Maybe (ListColumn JannoKeyword) -> CsvNamedRecord -> JannoRow)
+-> Parser (Maybe (ListColumn JannoKeyword))
 -> Parser (CsvNamedRecord -> JannoRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
-<*> NamedRecord -> ByteString -> Parser (Maybe JannoStringList)
+<*> NamedRecord
+-> ByteString -> Parser (Maybe (ListColumn JannoKeyword))
 forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Keywords"
-        -- beyond that read everything that is not in the set of defined variables
-        -- as a separate hashmap
-        Parser (CsvNamedRecord -> JannoRow)
+        -- beyond that read everything that is not in the set of defined variables
+        -- as a separate hashmap
+        Parser (CsvNamedRecord -> JannoRow)
 -> Parser CsvNamedRecord -> Parser JannoRow
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
@@ -6433,46 +3560,45 @@
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure (NamedRecord -> CsvNamedRecord
 CsvNamedRecord (NamedRecord
-m NamedRecord -> HashMap ByteString () -> NamedRecord
+m NamedRecord -> HashMap ByteString () -> NamedRecord
 forall k v w.
 (Eq k, Hashable k) =>
 HashMap k v -> HashMap k w -> HashMap k v
 `HM.difference` HashMap ByteString ()
 jannoRefHashMap))
-
-filterLookup :: Csv.FromField a => Csv.NamedRecord -> Bchs.ByteString -> Csv.Parser a
-filterLookup :: forall a. FromField a => NamedRecord -> ByteString -> Parser a
-filterLookup NamedRecord
-m ByteString
-name = Parser a
--> (ByteString -> Parser a) -> Maybe ByteString -> Parser a
-forall b a. b -> (a -> b) -> Maybe a -> b
-maybe Parser a
-forall a. Parser a
-forall (f :: * -> *) a. Alternative f => f a
-empty ByteString -> Parser a
-forall a. FromField a => ByteString -> Parser a
-Csv.parseField (Maybe ByteString -> Parser a)
--> (Maybe ByteString -> Maybe ByteString)
--> Maybe ByteString
--> Parser a
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. Maybe ByteString -> Maybe ByteString
-cleanInput (Maybe ByteString -> Parser a) -> Maybe ByteString -> Parser a
+
+filterLookup :: Csv.FromField a => Csv.NamedRecord -> Bchs.ByteString -> Csv.Parser a
+filterLookup :: forall a. FromField a => NamedRecord -> ByteString -> Parser a
+filterLookup NamedRecord
+m ByteString
+name = case Maybe ByteString -> Maybe ByteString
+cleanInput (Maybe ByteString -> Maybe ByteString)
+-> Maybe ByteString -> Maybe ByteString
 forall a b. (a -> b) -> a -> b
 $ ByteString -> NamedRecord -> Maybe ByteString
 forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v
 HM.lookup ByteString
-name NamedRecord
-m
-
-filterLookupOptional :: Csv.FromField a => Csv.NamedRecord -> Bchs.ByteString -> Csv.Parser (Maybe a)
-filterLookupOptional :: forall a.
+name NamedRecord
+m of
+    Maybe ByteString
+Nothing -> String -> Parser a
+forall a. String -> Parser a
+forall (m :: * -> *) a. MonadFail m => String -> m a
+fail String
+"Missing value in mandatory column (Poseidon_ID, Genetic_Sex, Group_Name)"
+    Just ByteString
+x  -> ByteString -> Parser a
+forall a. FromField a => ByteString -> Parser a
+Csv.parseField  ByteString
+x
+
+filterLookupOptional :: Csv.FromField a => Csv.NamedRecord -> Bchs.ByteString -> Csv.Parser (Maybe a)
+filterLookupOptional :: forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
-filterLookupOptional NamedRecord
-m ByteString
-name = Parser (Maybe a)
+filterLookupOptional NamedRecord
+m ByteString
+name = Parser (Maybe a)
 -> (ByteString -> Parser (Maybe a))
 -> Maybe ByteString
 -> Parser (Maybe a)
@@ -6496,32 +3622,32 @@
 $ ByteString -> NamedRecord -> Maybe ByteString
 forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v
 HM.lookup ByteString
-name NamedRecord
-m
-
-cleanInput :: Maybe Bchs.ByteString -> Maybe Bchs.ByteString
-cleanInput :: Maybe ByteString -> Maybe ByteString
+name NamedRecord
+m
+
+cleanInput :: Maybe Bchs.ByteString -> Maybe Bchs.ByteString
+cleanInput :: Maybe ByteString -> Maybe ByteString
 cleanInput Maybe ByteString
 Nothing           = Maybe ByteString
 forall a. Maybe a
 Nothing
-cleanInput (Just ByteString
-rawInputBS) = ByteString -> Maybe ByteString
-transNA (ByteString -> Maybe ByteString) -> ByteString -> Maybe ByteString
+cleanInput (Just ByteString
+rawInputBS) = ByteString -> Maybe ByteString
+transNA (ByteString -> Maybe ByteString) -> ByteString -> Maybe ByteString
 forall a b. (a -> b) -> a -> b
 $ ByteString -> ByteString
-trimWS (ByteString -> ByteString)
+trimWS (ByteString -> ByteString)
 -> (ByteString -> ByteString) -> ByteString -> ByteString
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . ByteString -> ByteString
-removeNoBreakSpace (ByteString -> ByteString) -> ByteString -> ByteString
+removeNoBreakSpace (ByteString -> ByteString) -> ByteString -> ByteString
 forall a b. (a -> b) -> a -> b
 $ ByteString
-rawInputBS
-    where
-        trimWS :: Bchs.ByteString -> Bchs.ByteString
-        trimWS :: ByteString -> ByteString
-trimWS = (Char -> Bool) -> ByteString -> ByteString
+rawInputBS
+    where
+        trimWS :: Bchs.ByteString -> Bchs.ByteString
+        trimWS :: ByteString -> ByteString
+trimWS = (Char -> Bool) -> ByteString -> ByteString
 Bchs.dropWhile Char -> Bool
 isSpace (ByteString -> ByteString)
 -> (ByteString -> ByteString) -> ByteString -> ByteString
@@ -6529,356 +3655,381 @@
 . (Char -> Bool) -> ByteString -> ByteString
 Bchs.dropWhileEnd Char -> Bool
 isSpace
-        removeNoBreakSpace :: Bchs.ByteString -> Bchs.ByteString
-        removeNoBreakSpace :: ByteString -> ByteString
-removeNoBreakSpace ByteString
-x
-            | Bool -> Bool
+        removeNoBreakSpace :: Bchs.ByteString -> Bchs.ByteString
+        removeNoBreakSpace :: ByteString -> ByteString
+removeNoBreakSpace ByteString
+x
+            | Bool -> Bool
 not (Bool -> Bool) -> Bool -> Bool
 forall a b. (a -> b) -> a -> b
 $ ByteString -> ByteString -> Bool
 Bchs.isInfixOf ByteString
 "\194\160" ByteString
-x = ByteString
-x
-            | Bool
+x = ByteString
+x
+            | Bool
 otherwise = ByteString -> ByteString
-removeNoBreakSpace (ByteString -> ByteString) -> ByteString -> ByteString
+removeNoBreakSpace (ByteString -> ByteString) -> ByteString -> ByteString
 forall a b. (a -> b) -> a -> b
-$ (\(ByteString
-a,ByteString
-b) -> ByteString
-a ByteString -> ByteString -> ByteString
+$ (\(ByteString
+a,ByteString
+b) -> ByteString
+a ByteString -> ByteString -> ByteString
 forall a. Semigroup a => a -> a -> a
 <> Int -> ByteString -> ByteString
 Bchs.drop Int
 2 ByteString
-b) ((ByteString, ByteString) -> ByteString)
+b) ((ByteString, ByteString) -> ByteString)
 -> (ByteString, ByteString) -> ByteString
 forall a b. (a -> b) -> a -> b
 $ ByteString -> ByteString -> (ByteString, ByteString)
 Bchs.breakSubstring ByteString
 "\194\160" ByteString
-x
-            -- When a unicode string with the No-Break Space character is loaded, parsed
-            -- and written by cassava (in encodeByNameWith) it is unexpectedly expanded:
-            -- "MAMS-47224\194\160" becomes "MAMS-47224\195\130\194\160
-            -- This was surprisingly hard to fix. We decided to remove No-Break Space chars
-            -- entirely before parsing them.
-            -- Here are some resources to see, which unicode characters are actually in a string:
-            -- https://www.soscisurvey.de/tools/view-chars.php
-            -- https://qaz.wtf/u/show.cgi
-            -- https://onlineunicodetools.com/convert-unicode-to-bytes
-            -- The following code removes the characters \194 and \160 independently.
-            -- This breaks other unicode characters and therefore does not solve the problem
-            --Bchs.filter (\y -> y /= '\194' && y /= '\160') x -- \160 is No-Break Space
-            -- The following code allows to debug the issue more precisely
-            --let !a = unsafePerformIO $ putStrLn $ show x
-            --    b = ...
-            --    !c = unsafePerformIO $ putStrLn $ show b
-            --in b
-        transNA :: Bchs.ByteString -> Maybe Bchs.ByteString
-        transNA :: ByteString -> Maybe ByteString
-transNA ByteString
+x
+            -- When a unicode string with the No-Break Space character is loaded, parsed
+            -- and written by cassava (in encodeByNameWith) it is unexpectedly expanded:
+            -- "MAMS-47224\194\160" becomes "MAMS-47224\195\130\194\160
+            -- This was surprisingly hard to fix. We decided to remove No-Break Space chars
+            -- entirely before parsing them.
+            -- Here are some resources to see, which unicode characters are actually in a string:
+            -- https://www.soscisurvey.de/tools/view-chars.php
+            -- https://qaz.wtf/u/show.cgi
+            -- https://onlineunicodetools.com/convert-unicode-to-bytes
+            -- The following code removes the characters \194 and \160 independently.
+            -- This breaks other unicode characters and therefore does not solve the problem
+            --Bchs.filter (\y -> y /= '\194' && y /= '\160') x -- \160 is No-Break Space
+            -- The following code allows to debug the issue more precisely
+            --let !a = unsafePerformIO $ putStrLn $ show x
+            --    b = ...
+            --    !c = unsafePerformIO $ putStrLn $ show b
+            --in b
+        transNA :: Bchs.ByteString -> Maybe Bchs.ByteString
+        transNA :: ByteString -> Maybe ByteString
+transNA ByteString
 ""    = Maybe ByteString
 forall a. Maybe a
 Nothing
-        transNA ByteString
+        transNA ByteString
 "n/a" = Maybe ByteString
 forall a. Maybe a
 Nothing
-        transNA ByteString
-x     = ByteString -> Maybe ByteString
+        transNA ByteString
+x     = ByteString -> Maybe ByteString
 forall a. a -> Maybe a
 Just ByteString
-x
-
-instance Csv.ToNamedRecord JannoRow where
-    toNamedRecord :: JannoRow -> NamedRecord
-toNamedRecord JannoRow
-j = [(ByteString, ByteString)] -> NamedRecord
+x
+
+instance Csv.ToNamedRecord JannoRow where
+    toNamedRecord :: JannoRow -> NamedRecord
+toNamedRecord JannoRow
+j = [(ByteString, ByteString)] -> NamedRecord
 Csv.namedRecord [
-          ByteString
+          ByteString
 "Poseidon_ID"                     ByteString -> String -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> String
 jPoseidonID JannoRow
-j
-        , ByteString
-"Genetic_Sex"                     ByteString -> JannoSex -> (ByteString, ByteString)
+j
+        , ByteString
+"Genetic_Sex"                     ByteString -> GeneticSex -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> JannoSex
+Csv..= JannoRow -> GeneticSex
 jGeneticSex JannoRow
-j
-        , ByteString
-"Group_Name"                      ByteString -> JannoStringList -> (ByteString, ByteString)
+j
+        , ByteString
+"Group_Name"                      ByteString -> ListColumn GroupName -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> JannoStringList
+Csv..= JannoRow -> ListColumn GroupName
 jGroupName JannoRow
-j
-        , ByteString
-"Alternative_IDs"                 ByteString -> Maybe JannoStringList -> (ByteString, ByteString)
+j
+        , ByteString
+"Alternative_IDs"                 ByteString
+-> Maybe (ListColumn JannoAlternativeID)
+-> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoStringList
+Csv..= JannoRow -> Maybe (ListColumn JannoAlternativeID)
 jAlternativeIDs JannoRow
-j
-        , ByteString
-"Relation_To"                     ByteString -> Maybe JannoStringList -> (ByteString, ByteString)
+j
+        , ByteString
+"Relation_To"                     ByteString
+-> Maybe (ListColumn JannoRelationTo) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoStringList
+Csv..= JannoRow -> Maybe (ListColumn JannoRelationTo)
 jRelationTo JannoRow
-j
-        , ByteString
+j
+        , ByteString
 "Relation_Degree"                 ByteString
--> Maybe JannoRelationDegreeList -> (ByteString, ByteString)
+-> Maybe (ListColumn JannoRelationDegree)
+-> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoRelationDegreeList
+Csv..= JannoRow -> Maybe (ListColumn JannoRelationDegree)
 jRelationDegree JannoRow
-j
-        , ByteString
-"Relation_Type"                   ByteString -> Maybe JannoStringList -> (ByteString, ByteString)
+j
+        , ByteString
+"Relation_Type"                   ByteString
+-> Maybe (ListColumn JannoRelationType) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoStringList
+Csv..= JannoRow -> Maybe (ListColumn JannoRelationType)
 jRelationType JannoRow
-j
-        , ByteString
-"Relation_Note"                   ByteString -> Maybe String -> (ByteString, ByteString)
+j
+        , ByteString
+"Relation_Note"                   ByteString -> Maybe JannoRelationNote -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe String
+Csv..= JannoRow -> Maybe JannoRelationNote
 jRelationNote JannoRow
-j
-        , ByteString
-"Collection_ID"                   ByteString -> Maybe String -> (ByteString, ByteString)
+j
+        , ByteString
+"Collection_ID"                   ByteString -> Maybe JannoCollectionID -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe String
+Csv..= JannoRow -> Maybe JannoCollectionID
 jCollectionID JannoRow
-j
-        , ByteString
-"Country"                         ByteString -> Maybe String -> (ByteString, ByteString)
+j
+        , ByteString
+"Country"                         ByteString -> Maybe JannoCountry -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe String
+Csv..= JannoRow -> Maybe JannoCountry
 jCountry JannoRow
-j
-        , ByteString
-"Country_ISO"                     ByteString -> Maybe JannoCountry -> (ByteString, ByteString)
+j
+        , ByteString
+"Country_ISO"                     ByteString -> Maybe JannoCountryISO -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoCountry
+Csv..= JannoRow -> Maybe JannoCountryISO
 jCountryISO JannoRow
-j
-        , ByteString
-"Location"                        ByteString -> Maybe String -> (ByteString, ByteString)
+j
+        , ByteString
+"Location"                        ByteString -> Maybe JannoLocation -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe String
+Csv..= JannoRow -> Maybe JannoLocation
 jLocation JannoRow
-j
-        , ByteString
-"Site"                            ByteString -> Maybe String -> (ByteString, ByteString)
+j
+        , ByteString
+"Site"                            ByteString -> Maybe JannoSite -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe String
+Csv..= JannoRow -> Maybe JannoSite
 jSite JannoRow
-j
-        , ByteString
-"Latitude"                        ByteString -> Maybe Latitude -> (ByteString, ByteString)
+j
+        , ByteString
+"Latitude"                        ByteString -> Maybe JannoLatitude -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe Latitude
+Csv..= JannoRow -> Maybe JannoLatitude
 jLatitude JannoRow
-j
-        , ByteString
-"Longitude"                       ByteString -> Maybe Longitude -> (ByteString, ByteString)
+j
+        , ByteString
+"Longitude"                       ByteString -> Maybe JannoLongitude -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe Longitude
+Csv..= JannoRow -> Maybe JannoLongitude
 jLongitude JannoRow
-j
-        , ByteString
+j
+        , ByteString
 "Date_Type"                       ByteString -> Maybe JannoDateType -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoDateType
 jDateType JannoRow
-j
-        , ByteString
-"Date_C14_Labnr"                  ByteString -> Maybe JannoStringList -> (ByteString, ByteString)
+j
+        , ByteString
+"Date_C14_Labnr"                  ByteString
+-> Maybe (ListColumn JannoDateC14Labnr) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoStringList
+Csv..= JannoRow -> Maybe (ListColumn JannoDateC14Labnr)
 jDateC14Labnr JannoRow
-j
-        , ByteString
-"Date_C14_Uncal_BP"               ByteString -> Maybe JannoIntList -> (ByteString, ByteString)
+j
+        , ByteString
+"Date_C14_Uncal_BP"               ByteString
+-> Maybe (ListColumn JannoDateC14UncalBP)
+-> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoIntList
+Csv..= JannoRow -> Maybe (ListColumn JannoDateC14UncalBP)
 jDateC14UncalBP JannoRow
-j
-        , ByteString
-"Date_C14_Uncal_BP_Err"           ByteString -> Maybe JannoIntList -> (ByteString, ByteString)
+j
+        , ByteString
+"Date_C14_Uncal_BP_Err"           ByteString
+-> Maybe (ListColumn JannoDateC14UncalBPErr)
+-> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoIntList
+Csv..= JannoRow -> Maybe (ListColumn JannoDateC14UncalBPErr)
 jDateC14UncalBPErr JannoRow
-j
-        , ByteString
-"Date_BC_AD_Start"                ByteString -> Maybe BCADAge -> (ByteString, ByteString)
+j
+        , ByteString
+"Date_BC_AD_Start"                ByteString -> Maybe JannoDateBCADStart -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe BCADAge
+Csv..= JannoRow -> Maybe JannoDateBCADStart
 jDateBCADStart JannoRow
-j
-        , ByteString
-"Date_BC_AD_Median"               ByteString -> Maybe BCADAge -> (ByteString, ByteString)
+j
+        , ByteString
+"Date_BC_AD_Median"               ByteString -> Maybe JannoDateBCADMedian -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe BCADAge
+Csv..= JannoRow -> Maybe JannoDateBCADMedian
 jDateBCADMedian JannoRow
-j
-        , ByteString
-"Date_BC_AD_Stop"                 ByteString -> Maybe BCADAge -> (ByteString, ByteString)
+j
+        , ByteString
+"Date_BC_AD_Stop"                 ByteString -> Maybe JannoDateBCADStop -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe BCADAge
+Csv..= JannoRow -> Maybe JannoDateBCADStop
 jDateBCADStop JannoRow
-j
-        , ByteString
-"Date_Note"                       ByteString -> Maybe String -> (ByteString, ByteString)
+j
+        , ByteString
+"Date_Note"                       ByteString -> Maybe JannoDateNote -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe String
+Csv..= JannoRow -> Maybe JannoDateNote
 jDateNote JannoRow
-j
-        , ByteString
-"MT_Haplogroup"                   ByteString -> Maybe String -> (ByteString, ByteString)
+j
+        , ByteString
+"MT_Haplogroup"                   ByteString -> Maybe JannoMTHaplogroup -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe String
+Csv..= JannoRow -> Maybe JannoMTHaplogroup
 jMTHaplogroup JannoRow
-j
-        , ByteString
-"Y_Haplogroup"                    ByteString -> Maybe String -> (ByteString, ByteString)
+j
+        , ByteString
+"Y_Haplogroup"                    ByteString -> Maybe JannoYHaplogroup -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe String
+Csv..= JannoRow -> Maybe JannoYHaplogroup
 jYHaplogroup JannoRow
-j
-        , ByteString
-"Source_Tissue"                   ByteString -> Maybe JannoStringList -> (ByteString, ByteString)
+j
+        , ByteString
+"Source_Tissue"                   ByteString
+-> Maybe (ListColumn JannoSourceTissue) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoStringList
+Csv..= JannoRow -> Maybe (ListColumn JannoSourceTissue)
 jSourceTissue JannoRow
-j
-        , ByteString
-"Nr_Libraries"                    ByteString -> Maybe Int -> (ByteString, ByteString)
+j
+        , ByteString
+"Nr_Libraries"                    ByteString -> Maybe JannoNrLibraries -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe Int
+Csv..= JannoRow -> Maybe JannoNrLibraries
 jNrLibraries JannoRow
-j
-        , ByteString
-"Library_Names"                   ByteString -> Maybe JannoStringList -> (ByteString, ByteString)
+j
+        , ByteString
+"Library_Names"                   ByteString
+-> Maybe (ListColumn JannoLibraryName) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoStringList
+Csv..= JannoRow -> Maybe (ListColumn JannoLibraryName)
 jLibraryNames JannoRow
-j
-        , ByteString
+j
+        , ByteString
 "Capture_Type"                    ByteString
--> Maybe (JannoList JannoCaptureType) -> (ByteString, ByteString)
+-> Maybe (ListColumn JannoCaptureType) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe (JannoList JannoCaptureType)
+Csv..= JannoRow -> Maybe (ListColumn JannoCaptureType)
 jCaptureType JannoRow
-j
-        , ByteString
+j
+        , ByteString
 "UDG"                             ByteString -> Maybe JannoUDG -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoUDG
 jUDG JannoRow
-j
-        , ByteString
+j
+        , ByteString
 "Library_Built"                   ByteString -> Maybe JannoLibraryBuilt -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoLibraryBuilt
 jLibraryBuilt JannoRow
-j
-        , ByteString
+j
+        , ByteString
 "Genotype_Ploidy"                 ByteString -> Maybe JannoGenotypePloidy -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoGenotypePloidy
 jGenotypePloidy JannoRow
-j
-        , ByteString
-"Data_Preparation_Pipeline_URL"   ByteString -> Maybe JURI -> (ByteString, ByteString)
+j
+        , ByteString
+"Data_Preparation_Pipeline_URL"   ByteString
+-> Maybe JannoDataPreparationPipelineURL
+-> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JURI
+Csv..= JannoRow -> Maybe JannoDataPreparationPipelineURL
 jDataPreparationPipelineURL JannoRow
-j
-        , ByteString
-"Endogenous"                      ByteString -> Maybe Percent -> (ByteString, ByteString)
+j
+        , ByteString
+"Endogenous"                      ByteString -> Maybe JannoEndogenous -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe Percent
+Csv..= JannoRow -> Maybe JannoEndogenous
 jEndogenous JannoRow
-j
-        , ByteString
-"Nr_SNPs"                         ByteString -> Maybe Int -> (ByteString, ByteString)
+j
+        , ByteString
+"Nr_SNPs"                         ByteString -> Maybe JannoNrSNPs -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe Int
+Csv..= JannoRow -> Maybe JannoNrSNPs
 jNrSNPs JannoRow
-j
-        , ByteString
-"Coverage_on_Target_SNPs"         ByteString -> Maybe Double -> (ByteString, ByteString)
+j
+        , ByteString
+"Coverage_on_Target_SNPs"         ByteString
+-> Maybe JannoCoverageOnTargets -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe Double
+Csv..= JannoRow -> Maybe JannoCoverageOnTargets
 jCoverageOnTargets JannoRow
-j
-        , ByteString
-"Damage"                          ByteString -> Maybe Percent -> (ByteString, ByteString)
+j
+        , ByteString
+"Damage"                          ByteString -> Maybe JannoDamage -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe Percent
+Csv..= JannoRow -> Maybe JannoDamage
 jDamage JannoRow
-j
-        , ByteString
-"Contamination"                   ByteString -> Maybe JannoStringList -> (ByteString, ByteString)
+j
+        , ByteString
+"Contamination"                   ByteString
+-> Maybe (ListColumn JannoContamination)
+-> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoStringList
+Csv..= JannoRow -> Maybe (ListColumn JannoContamination)
 jContamination JannoRow
-j
-        , ByteString
-"Contamination_Err"               ByteString -> Maybe JannoStringList -> (ByteString, ByteString)
+j
+        , ByteString
+"Contamination_Err"               ByteString
+-> Maybe (ListColumn JannoContaminationErr)
+-> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoStringList
+Csv..= JannoRow -> Maybe (ListColumn JannoContaminationErr)
 jContaminationErr JannoRow
-j
-        , ByteString
-"Contamination_Meas"              ByteString -> Maybe JannoStringList -> (ByteString, ByteString)
+j
+        , ByteString
+"Contamination_Meas"              ByteString
+-> Maybe (ListColumn JannoContaminationMeas)
+-> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoStringList
+Csv..= JannoRow -> Maybe (ListColumn JannoContaminationMeas)
 jContaminationMeas JannoRow
-j
-        , ByteString
-"Contamination_Note"              ByteString -> Maybe String -> (ByteString, ByteString)
+j
+        , ByteString
+"Contamination_Note"              ByteString
+-> Maybe JannoContaminationNote -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe String
+Csv..= JannoRow -> Maybe JannoContaminationNote
 jContaminationNote JannoRow
-j
-        , ByteString
+j
+        , ByteString
 "Genetic_Source_Accession_IDs"    ByteString
--> Maybe (JannoList AccessionID) -> (ByteString, ByteString)
+-> Maybe (ListColumn JannoGeneticSourceAccessionID)
+-> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe (JannoList AccessionID)
+Csv..= JannoRow -> Maybe (ListColumn JannoGeneticSourceAccessionID)
 jGeneticSourceAccessionIDs JannoRow
-j
-        , ByteString
-"Primary_Contact"                 ByteString -> Maybe String -> (ByteString, ByteString)
+j
+        , ByteString
+"Primary_Contact"                 ByteString -> Maybe JannoPrimaryContact -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe String
+Csv..= JannoRow -> Maybe JannoPrimaryContact
 jPrimaryContact JannoRow
-j
-        , ByteString
-"Publication"                     ByteString -> Maybe JannoStringList -> (ByteString, ByteString)
+j
+        , ByteString
+"Publication"                     ByteString
+-> Maybe (ListColumn JannoPublication) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoStringList
+Csv..= JannoRow -> Maybe (ListColumn JannoPublication)
 jPublication JannoRow
-j
-        , ByteString
-"Note"                            ByteString -> Maybe String -> (ByteString, ByteString)
+j
+        , ByteString
+"Note"                            ByteString -> Maybe JannoComment -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe String
+Csv..= JannoRow -> Maybe JannoComment
 jComments JannoRow
-j
-        , ByteString
-"Keywords"                        ByteString -> Maybe JannoStringList -> (ByteString, ByteString)
+j
+        , ByteString
+"Keywords"                        ByteString
+-> Maybe (ListColumn JannoKeyword) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= JannoRow -> Maybe JannoStringList
+Csv..= JannoRow -> Maybe (ListColumn JannoKeyword)
 jKeywords JannoRow
-j
-        -- beyond that add what is in the hashmap of additional columns
-        ] NamedRecord -> NamedRecord -> NamedRecord
+j
+        -- beyond that add what is in the hashmap of additional columns
+        ] NamedRecord -> NamedRecord -> NamedRecord
 forall k v.
 (Eq k, Hashable k) =>
 HashMap k v -> HashMap k v -> HashMap k v
@@ -6887,16 +4038,16 @@
 forall a b. (a -> b) -> a -> b
 $ JannoRow -> CsvNamedRecord
 jAdditionalColumns JannoRow
-j)
-
--- | A function to create empty janno rows for a set of individuals
-createMinimalJanno :: [EigenstratIndEntry] -> JannoRows
-createMinimalJanno :: [EigenstratIndEntry] -> JannoRows
+j)
+
+-- | A function to create empty janno rows for a set of individuals
+createMinimalJanno :: [EigenstratIndEntry] -> JannoRows
+createMinimalJanno :: [EigenstratIndEntry] -> JannoRows
 createMinimalJanno [] = JannoRows
 forall a. Monoid a => a
 mempty
-createMinimalJanno [EigenstratIndEntry]
-xs = [JannoRow] -> JannoRows
+createMinimalJanno [EigenstratIndEntry]
+xs = [JannoRow] -> JannoRows
 JannoRows ([JannoRow] -> JannoRows) -> [JannoRow] -> JannoRows
 forall a b. (a -> b) -> a -> b
 $ (EigenstratIndEntry -> JannoRow)
@@ -6904,239 +4055,243 @@
 forall a b. (a -> b) -> [a] -> [b]
 map EigenstratIndEntry -> JannoRow
 createMinimalSample [EigenstratIndEntry]
-xs
-
--- | A function to create an empty janno row for an individual
-createMinimalSample :: EigenstratIndEntry -> JannoRow
-createMinimalSample :: EigenstratIndEntry -> JannoRow
-createMinimalSample (EigenstratIndEntry String
-id_ Sex
-sex String
-pop) =
-    JannoRow {
-          jPoseidonID :: String
+xs
+
+-- | A function to create an empty janno row for an individual
+createMinimalSample :: EigenstratIndEntry -> JannoRow
+createMinimalSample :: EigenstratIndEntry -> JannoRow
+createMinimalSample (EigenstratIndEntry String
+id_ Sex
+sex String
+pop) =
+    JannoRow {
+          jPoseidonID :: String
 jPoseidonID                   = String
-id_
-        , jGeneticSex :: JannoSex
-jGeneticSex                   = Sex -> JannoSex
-JannoSex Sex
-sex
-        , jGroupName :: JannoStringList
-jGroupName                    = JannoRowWarnings -> JannoStringList
-forall a. [a] -> JannoList a
-JannoList [String
-pop]
-        , jAlternativeIDs :: Maybe JannoStringList
-jAlternativeIDs               = Maybe JannoStringList
+id_
+        , jGeneticSex :: GeneticSex
+jGeneticSex                   = Sex -> GeneticSex
+GeneticSex Sex
+sex
+        , jGroupName :: ListColumn GroupName
+jGroupName                    = [GroupName] -> ListColumn GroupName
+forall a. [a] -> ListColumn a
+ListColumn [Text -> GroupName
+GroupName (Text -> GroupName) -> Text -> GroupName
+forall a b. (a -> b) -> a -> b
+$ String -> Text
+T.pack String
+pop]
+        , jAlternativeIDs :: Maybe (ListColumn JannoAlternativeID)
+jAlternativeIDs               = Maybe (ListColumn JannoAlternativeID)
 forall a. Maybe a
 Nothing
-        , jRelationTo :: Maybe JannoStringList
-jRelationTo                   = Maybe JannoStringList
+        , jRelationTo :: Maybe (ListColumn JannoRelationTo)
+jRelationTo                   = Maybe (ListColumn JannoRelationTo)
 forall a. Maybe a
 Nothing
-        , jRelationDegree :: Maybe JannoRelationDegreeList
-jRelationDegree               = Maybe JannoRelationDegreeList
+        , jRelationDegree :: Maybe (ListColumn JannoRelationDegree)
+jRelationDegree               = Maybe (ListColumn JannoRelationDegree)
 forall a. Maybe a
 Nothing
-        , jRelationType :: Maybe JannoStringList
-jRelationType                 = Maybe JannoStringList
+        , jRelationType :: Maybe (ListColumn JannoRelationType)
+jRelationType                 = Maybe (ListColumn JannoRelationType)
 forall a. Maybe a
 Nothing
-        , jRelationNote :: Maybe String
-jRelationNote                 = Maybe String
+        , jRelationNote :: Maybe JannoRelationNote
+jRelationNote                 = Maybe JannoRelationNote
 forall a. Maybe a
 Nothing
-        , jCollectionID :: Maybe String
-jCollectionID                 = Maybe String
+        , jCollectionID :: Maybe JannoCollectionID
+jCollectionID                 = Maybe JannoCollectionID
 forall a. Maybe a
 Nothing
-        , jCountry :: Maybe String
-jCountry                      = Maybe String
+        , jCountry :: Maybe JannoCountry
+jCountry                      = Maybe JannoCountry
 forall a. Maybe a
 Nothing
-        , jCountryISO :: Maybe JannoCountry
-jCountryISO                   = Maybe JannoCountry
+        , jCountryISO :: Maybe JannoCountryISO
+jCountryISO                   = Maybe JannoCountryISO
 forall a. Maybe a
 Nothing
-        , jLocation :: Maybe String
-jLocation                     = Maybe String
+        , jLocation :: Maybe JannoLocation
+jLocation                     = Maybe JannoLocation
 forall a. Maybe a
 Nothing
-        , jSite :: Maybe String
-jSite                         = Maybe String
+        , jSite :: Maybe JannoSite
+jSite                         = Maybe JannoSite
 forall a. Maybe a
 Nothing
-        , jLatitude :: Maybe Latitude
-jLatitude                     = Maybe Latitude
+        , jLatitude :: Maybe JannoLatitude
+jLatitude                     = Maybe JannoLatitude
 forall a. Maybe a
 Nothing
-        , jLongitude :: Maybe Longitude
-jLongitude                    = Maybe Longitude
+        , jLongitude :: Maybe JannoLongitude
+jLongitude                    = Maybe JannoLongitude
 forall a. Maybe a
 Nothing
-        , jDateType :: Maybe JannoDateType
+        , jDateType :: Maybe JannoDateType
 jDateType                     = Maybe JannoDateType
 forall a. Maybe a
 Nothing
-        , jDateC14Labnr :: Maybe JannoStringList
-jDateC14Labnr                 = Maybe JannoStringList
+        , jDateC14Labnr :: Maybe (ListColumn JannoDateC14Labnr)
+jDateC14Labnr                 = Maybe (ListColumn JannoDateC14Labnr)
 forall a. Maybe a
 Nothing
-        , jDateC14UncalBP :: Maybe JannoIntList
-jDateC14UncalBP               = Maybe JannoIntList
+        , jDateC14UncalBP :: Maybe (ListColumn JannoDateC14UncalBP)
+jDateC14UncalBP               = Maybe (ListColumn JannoDateC14UncalBP)
 forall a. Maybe a
 Nothing
-        , jDateC14UncalBPErr :: Maybe JannoIntList
-jDateC14UncalBPErr            = Maybe JannoIntList
+        , jDateC14UncalBPErr :: Maybe (ListColumn JannoDateC14UncalBPErr)
+jDateC14UncalBPErr            = Maybe (ListColumn JannoDateC14UncalBPErr)
 forall a. Maybe a
 Nothing
-        , jDateBCADStart :: Maybe BCADAge
-jDateBCADStart                = Maybe BCADAge
+        , jDateBCADStart :: Maybe JannoDateBCADStart
+jDateBCADStart                = Maybe JannoDateBCADStart
 forall a. Maybe a
 Nothing
-        , jDateBCADMedian :: Maybe BCADAge
-jDateBCADMedian               = Maybe BCADAge
+        , jDateBCADMedian :: Maybe JannoDateBCADMedian
+jDateBCADMedian               = Maybe JannoDateBCADMedian
 forall a. Maybe a
 Nothing
-        , jDateBCADStop :: Maybe BCADAge
-jDateBCADStop                 = Maybe BCADAge
+        , jDateBCADStop :: Maybe JannoDateBCADStop
+jDateBCADStop                 = Maybe JannoDateBCADStop
 forall a. Maybe a
 Nothing
-        , jDateNote :: Maybe String
-jDateNote                     = Maybe String
+        , jDateNote :: Maybe JannoDateNote
+jDateNote                     = Maybe JannoDateNote
 forall a. Maybe a
 Nothing
-        , jMTHaplogroup :: Maybe String
-jMTHaplogroup                 = Maybe String
+        , jMTHaplogroup :: Maybe JannoMTHaplogroup
+jMTHaplogroup                 = Maybe JannoMTHaplogroup
 forall a. Maybe a
 Nothing
-        , jYHaplogroup :: Maybe String
-jYHaplogroup                  = Maybe String
+        , jYHaplogroup :: Maybe JannoYHaplogroup
+jYHaplogroup                  = Maybe JannoYHaplogroup
 forall a. Maybe a
 Nothing
-        , jSourceTissue :: Maybe JannoStringList
-jSourceTissue                 = Maybe JannoStringList
+        , jSourceTissue :: Maybe (ListColumn JannoSourceTissue)
+jSourceTissue                 = Maybe (ListColumn JannoSourceTissue)
 forall a. Maybe a
 Nothing
-        , jNrLibraries :: Maybe Int
-jNrLibraries                  = Maybe Int
+        , jNrLibraries :: Maybe JannoNrLibraries
+jNrLibraries                  = Maybe JannoNrLibraries
 forall a. Maybe a
 Nothing
-        , jLibraryNames :: Maybe JannoStringList
-jLibraryNames                 = Maybe JannoStringList
+        , jLibraryNames :: Maybe (ListColumn JannoLibraryName)
+jLibraryNames                 = Maybe (ListColumn JannoLibraryName)
 forall a. Maybe a
 Nothing
-        , jCaptureType :: Maybe (JannoList JannoCaptureType)
-jCaptureType                  = Maybe (JannoList JannoCaptureType)
+        , jCaptureType :: Maybe (ListColumn JannoCaptureType)
+jCaptureType                  = Maybe (ListColumn JannoCaptureType)
 forall a. Maybe a
 Nothing
-        , jUDG :: Maybe JannoUDG
+        , jUDG :: Maybe JannoUDG
 jUDG                          = Maybe JannoUDG
 forall a. Maybe a
 Nothing
-        , jLibraryBuilt :: Maybe JannoLibraryBuilt
+        , jLibraryBuilt :: Maybe JannoLibraryBuilt
 jLibraryBuilt                 = Maybe JannoLibraryBuilt
 forall a. Maybe a
 Nothing
-        , jGenotypePloidy :: Maybe JannoGenotypePloidy
+        , jGenotypePloidy :: Maybe JannoGenotypePloidy
 jGenotypePloidy               = Maybe JannoGenotypePloidy
 forall a. Maybe a
 Nothing
-        , jDataPreparationPipelineURL :: Maybe JURI
-jDataPreparationPipelineURL   = Maybe JURI
+        , jDataPreparationPipelineURL :: Maybe JannoDataPreparationPipelineURL
+jDataPreparationPipelineURL   = Maybe JannoDataPreparationPipelineURL
 forall a. Maybe a
 Nothing
-        , jEndogenous :: Maybe Percent
-jEndogenous                   = Maybe Percent
+        , jEndogenous :: Maybe JannoEndogenous
+jEndogenous                   = Maybe JannoEndogenous
 forall a. Maybe a
 Nothing
-        , jNrSNPs :: Maybe Int
-jNrSNPs                       = Maybe Int
+        , jNrSNPs :: Maybe JannoNrSNPs
+jNrSNPs                       = Maybe JannoNrSNPs
 forall a. Maybe a
 Nothing
-        , jCoverageOnTargets :: Maybe Double
-jCoverageOnTargets            = Maybe Double
+        , jCoverageOnTargets :: Maybe JannoCoverageOnTargets
+jCoverageOnTargets            = Maybe JannoCoverageOnTargets
 forall a. Maybe a
 Nothing
-        , jDamage :: Maybe Percent
-jDamage                       = Maybe Percent
+        , jDamage :: Maybe JannoDamage
+jDamage                       = Maybe JannoDamage
 forall a. Maybe a
 Nothing
-        , jContamination :: Maybe JannoStringList
-jContamination                = Maybe JannoStringList
+        , jContamination :: Maybe (ListColumn JannoContamination)
+jContamination                = Maybe (ListColumn JannoContamination)
 forall a. Maybe a
 Nothing
-        , jContaminationErr :: Maybe JannoStringList
-jContaminationErr             = Maybe JannoStringList
+        , jContaminationErr :: Maybe (ListColumn JannoContaminationErr)
+jContaminationErr             = Maybe (ListColumn JannoContaminationErr)
 forall a. Maybe a
 Nothing
-        , jContaminationMeas :: Maybe JannoStringList
-jContaminationMeas            = Maybe JannoStringList
+        , jContaminationMeas :: Maybe (ListColumn JannoContaminationMeas)
+jContaminationMeas            = Maybe (ListColumn JannoContaminationMeas)
 forall a. Maybe a
 Nothing
-        , jContaminationNote :: Maybe String
-jContaminationNote            = Maybe String
+        , jContaminationNote :: Maybe JannoContaminationNote
+jContaminationNote            = Maybe JannoContaminationNote
 forall a. Maybe a
 Nothing
-        , jGeneticSourceAccessionIDs :: Maybe (JannoList AccessionID)
-jGeneticSourceAccessionIDs    = Maybe (JannoList AccessionID)
+        , jGeneticSourceAccessionIDs :: Maybe (ListColumn JannoGeneticSourceAccessionID)
+jGeneticSourceAccessionIDs    = Maybe (ListColumn JannoGeneticSourceAccessionID)
 forall a. Maybe a
 Nothing
-        , jPrimaryContact :: Maybe String
-jPrimaryContact               = Maybe String
+        , jPrimaryContact :: Maybe JannoPrimaryContact
+jPrimaryContact               = Maybe JannoPrimaryContact
 forall a. Maybe a
 Nothing
-        , jPublication :: Maybe JannoStringList
-jPublication                  = Maybe JannoStringList
+        , jPublication :: Maybe (ListColumn JannoPublication)
+jPublication                  = Maybe (ListColumn JannoPublication)
 forall a. Maybe a
 Nothing
-        , jComments :: Maybe String
-jComments                     = Maybe String
+        , jComments :: Maybe JannoComment
+jComments                     = Maybe JannoComment
 forall a. Maybe a
 Nothing
-        , jKeywords :: Maybe JannoStringList
-jKeywords                     = Maybe JannoStringList
+        , jKeywords :: Maybe (ListColumn JannoKeyword)
+jKeywords                     = Maybe (ListColumn JannoKeyword)
 forall a. Maybe a
 Nothing
-        -- The template should of course not have any additional columns
-        , jAdditionalColumns :: CsvNamedRecord
+        -- The template should of course not have any additional columns
+        , jAdditionalColumns :: CsvNamedRecord
 jAdditionalColumns            = NamedRecord -> CsvNamedRecord
 CsvNamedRecord (NamedRecord -> CsvNamedRecord) -> NamedRecord -> CsvNamedRecord
 forall a b. (a -> b) -> a -> b
 $ [(ByteString, ByteString)] -> NamedRecord
 forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
 HM.fromList []
-    }
-
--- Janno file writing
-
-writeJannoFile :: FilePath -> JannoRows -> IO ()
-writeJannoFile :: String -> JannoRows -> IO ()
-writeJannoFile String
-path (JannoRows [JannoRow]
-rows) = do
-    let jannoAsBytestring :: ByteString
-jannoAsBytestring = EncodeOptions -> Header -> [JannoRow] -> ByteString
+    }
+
+-- Janno file writing
+
+writeJannoFile :: FilePath -> JannoRows -> IO ()
+writeJannoFile :: String -> JannoRows -> IO ()
+writeJannoFile String
+path (JannoRows [JannoRow]
+rows) = do
+    let jannoAsBytestring :: ByteString
+jannoAsBytestring = EncodeOptions -> Header -> [JannoRow] -> ByteString
 forall a.
 ToNamedRecord a =>
 EncodeOptions -> Header -> [a] -> ByteString
 Csv.encodeByNameWith EncodeOptions
 encodingOptions Header
-makeHeaderWithAdditionalColumns [JannoRow]
-rows
-    let jannoAsBytestringwithNA :: ByteString
-jannoAsBytestringwithNA = ByteString -> ByteString
+makeHeaderWithAdditionalColumns [JannoRow]
+rows
+    let jannoAsBytestringwithNA :: ByteString
+jannoAsBytestringwithNA = ByteString -> ByteString
 explicitNA ByteString
-jannoAsBytestring
-    String -> ByteString -> IO ()
+jannoAsBytestring
+    String -> ByteString -> IO ()
 Bch.writeFile String
-path ByteString
-jannoAsBytestringwithNA
-    where
-        makeHeaderWithAdditionalColumns :: Csv.Header
-        makeHeaderWithAdditionalColumns :: Header
-makeHeaderWithAdditionalColumns =
-            [ByteString] -> Header
+path ByteString
+jannoAsBytestringwithNA
+    where
+        makeHeaderWithAdditionalColumns :: Csv.Header
+        makeHeaderWithAdditionalColumns :: Header
+makeHeaderWithAdditionalColumns =
+            [ByteString] -> Header
 forall a. [a] -> Vector a
 V.fromList ([ByteString] -> Header) -> [ByteString] -> Header
 forall a b. (a -> b) -> a -> b
@@ -7157,44 +4312,44 @@
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . JannoRow -> CsvNamedRecord
 jAdditionalColumns) [JannoRow]
-rows)))
-
-encodingOptions :: Csv.EncodeOptions
-encodingOptions :: EncodeOptions
+rows)))
+
+encodingOptions :: Csv.EncodeOptions
+encodingOptions :: EncodeOptions
 encodingOptions = EncodeOptions
 Csv.defaultEncodeOptions {
-      encDelimiter :: Word8
+      encDelimiter :: Word8
 Csv.encDelimiter = Int -> Word8
 forall a b. (Integral a, Num b) => a -> b
 fromIntegral (Char -> Int
 ord Char
 '\t')
-    , encUseCrLf :: Bool
+    , encUseCrLf :: Bool
 Csv.encUseCrLf = Bool
 False
-    , encIncludeHeader :: Bool
+    , encIncludeHeader :: Bool
 Csv.encIncludeHeader = Bool
 True
-    , encQuoting :: Quoting
+    , encQuoting :: Quoting
 Csv.encQuoting = Quoting
 Csv.QuoteMinimal
-}
-
--- | A function to load one janno file
-readJannoFile :: FilePath -> PoseidonIO JannoRows
-readJannoFile :: String -> PoseidonIO JannoRows
-readJannoFile String
-jannoPath = do
-    String -> PoseidonIO ()
+}
+
+-- | A function to load one janno file
+readJannoFile :: FilePath -> PoseidonIO JannoRows
+readJannoFile :: String -> PoseidonIO JannoRows
+readJannoFile String
+jannoPath = do
+    String -> PoseidonIO ()
 logDebug (String -> PoseidonIO ()) -> String -> PoseidonIO ()
 forall a b. (a -> b) -> a -> b
 $ String
 "Reading: " String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
-jannoPath
-    ByteString
-jannoFile <- IO ByteString -> ReaderT Env IO ByteString
+jannoPath
+    ByteString
+jannoFile <- IO ByteString -> ReaderT Env IO ByteString
 forall a. IO a -> ReaderT Env IO a
 forall (m :: * -> *) a. MonadIO m => IO a -> m a
 liftIO (IO ByteString -> ReaderT Env IO ByteString)
@@ -7202,18 +4357,18 @@
 forall a b. (a -> b) -> a -> b
 $ String -> IO ByteString
 Bch.readFile String
-jannoPath
-    let jannoFileRows :: [ByteString]
-jannoFileRows = ByteString -> [ByteString]
+jannoPath
+    let jannoFileRows :: [ByteString]
+jannoFileRows = ByteString -> [ByteString]
 Bch.lines ByteString
-jannoFile
-    Bool -> PoseidonIO () -> PoseidonIO ()
+jannoFile
+    Bool -> PoseidonIO () -> PoseidonIO ()
 forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
 when ([ByteString] -> Int
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
 length [ByteString]
-jannoFileRows Int -> Int -> Bool
+jannoFileRows Int -> Int -> Bool
 forall a. Ord a => a -> a -> Bool
 < Int
 2) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO ()
@@ -7229,9 +4384,9 @@
 forall a b. (a -> b) -> a -> b
 $ String -> String -> PoseidonException
 PoseidonFileConsistencyException String
-jannoPath String
+jannoPath String
 "File has less than two lines"
-    String -> PoseidonIO ()
+    String -> PoseidonIO ()
 logDebug (String -> PoseidonIO ()) -> String -> PoseidonIO ()
 forall a b. (a -> b) -> a -> b
 $ Int -> String
@@ -7240,40 +4395,40 @@
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
 length [ByteString]
-jannoFileRows Int -> Int -> Int
+jannoFileRows Int -> Int -> Int
 forall a. Num a => a -> a -> a
 - Int
 1) String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
 " samples in this file"
-    -- tupel with row number and row bytestring
-    let jannoFileRowsWithNumber :: [(Int, ByteString)]
-jannoFileRowsWithNumber = [Int] -> [ByteString] -> [(Int, ByteString)]
+    -- tupel with row number and row bytestring
+    let jannoFileRowsWithNumber :: [(Int, ByteString)]
+jannoFileRowsWithNumber = [Int] -> [ByteString] -> [(Int, ByteString)]
 forall a b. [a] -> [b] -> [(a, b)]
 zip [Int
 1..([ByteString] -> Int
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
 length [ByteString]
-jannoFileRows)] [ByteString]
-jannoFileRows
-    -- filter out empty lines
-        jannoFileRowsWithNumberFiltered :: [(Int, ByteString)]
-jannoFileRowsWithNumberFiltered = ((Int, ByteString) -> Bool)
+jannoFileRows)] [ByteString]
+jannoFileRows
+    -- filter out empty lines
+        jannoFileRowsWithNumberFiltered :: [(Int, ByteString)]
+jannoFileRowsWithNumberFiltered = ((Int, ByteString) -> Bool)
 -> [(Int, ByteString)] -> [(Int, ByteString)]
 forall a. (a -> Bool) -> [a] -> [a]
 filter (\(Int
-_, ByteString
-y) -> ByteString
-y ByteString -> ByteString -> Bool
+_, ByteString
+y) -> ByteString
+y ByteString -> ByteString -> Bool
 forall a. Eq a => a -> a -> Bool
 /= ByteString
 Bch.empty) [(Int, ByteString)]
-jannoFileRowsWithNumber
-    -- create header + individual line combination
-        headerOnlyPotentiallyWithQuotes :: ByteString
-headerOnlyPotentiallyWithQuotes = (Int, ByteString) -> ByteString
+jannoFileRowsWithNumber
+    -- create header + individual line combination
+        headerOnlyPotentiallyWithQuotes :: ByteString
+headerOnlyPotentiallyWithQuotes = (Int, ByteString) -> ByteString
 forall a b. (a, b) -> b
 snd ((Int, ByteString) -> ByteString)
 -> (Int, ByteString) -> ByteString
@@ -7281,22 +4436,22 @@
 $ [(Int, ByteString)] -> (Int, ByteString)
 forall a. HasCallStack => [a] -> a
 head [(Int, ByteString)]
-jannoFileRowsWithNumberFiltered
-        -- removing the quotes like this might cause issues in edge cases
-        headerOnly :: ByteString
-headerOnly = (Char -> Bool) -> ByteString -> ByteString
+jannoFileRowsWithNumberFiltered
+        -- removing the quotes like this might cause issues in edge cases
+        headerOnly :: ByteString
+headerOnly = (Char -> Bool) -> ByteString -> ByteString
 Bch.filter (Char -> Char -> Bool
 forall a. Eq a => a -> a -> Bool
 /= Char
 '"') ByteString
-headerOnlyPotentiallyWithQuotes
-        rowsOnly :: [(Int, ByteString)]
-rowsOnly = [(Int, ByteString)] -> [(Int, ByteString)]
+headerOnlyPotentiallyWithQuotes
+        rowsOnly :: [(Int, ByteString)]
+rowsOnly = [(Int, ByteString)] -> [(Int, ByteString)]
 forall a. HasCallStack => [a] -> [a]
 tail [(Int, ByteString)]
-jannoFileRowsWithNumberFiltered
-        jannoFileRowsWithHeader :: [(Int, ByteString)]
-jannoFileRowsWithHeader = ((Int, ByteString) -> (Int, ByteString))
+jannoFileRowsWithNumberFiltered
+        jannoFileRowsWithHeader :: [(Int, ByteString)]
+jannoFileRowsWithHeader = ((Int, ByteString) -> (Int, ByteString))
 -> [(Int, ByteString)] -> [(Int, ByteString)]
 forall a b. (a -> b) -> [a] -> [b]
 map ((ByteString -> ByteString)
@@ -7305,27 +4460,27 @@
 forall (p :: * -> * -> *) b c a.
 Bifunctor p =>
 (b -> c) -> p a b -> p a c
-second (\ByteString
-x -> ByteString
-headerOnly ByteString -> ByteString -> ByteString
+second (\ByteString
+x -> ByteString
+headerOnly ByteString -> ByteString -> ByteString
 forall a. Semigroup a => a -> a -> a
 <> ByteString
 "\n" ByteString -> ByteString -> ByteString
 forall a. Semigroup a => a -> a -> a
 <> ByteString
-x)) [(Int, ByteString)]
-rowsOnly
-    -- report missing or additional columns
-    let jannoColNames :: [ByteString]
-jannoColNames = (ByteString -> ByteString) -> [ByteString] -> [ByteString]
+x)) [(Int, ByteString)]
+rowsOnly
+    -- report missing or additional columns
+    let jannoColNames :: [ByteString]
+jannoColNames = (ByteString -> ByteString) -> [ByteString] -> [ByteString]
 forall a b. (a -> b) -> [a] -> [b]
 map ByteString -> ByteString
 Bch.toStrict (Char -> ByteString -> [ByteString]
 Bch.split Char
 '\t' ByteString
-headerOnly)
-        missing_columns :: JannoRowWarnings
-missing_columns = (ByteString -> String) -> [ByteString] -> JannoRowWarnings
+headerOnly)
+        missing_columns :: JannoRowWarnings
+missing_columns = (ByteString -> String) -> [ByteString] -> JannoRowWarnings
 forall a b. (a -> b) -> [a] -> [b]
 map ByteString -> String
 Bchs.unpack ([ByteString] -> JannoRowWarnings)
@@ -7335,63 +4490,63 @@
 jannoHeader [ByteString] -> [ByteString] -> [ByteString]
 forall a. Eq a => [a] -> [a] -> [a]
 \\ [ByteString]
-jannoColNames
-        additional_columns :: JannoRowWarnings
-additional_columns = (ByteString -> String) -> [ByteString] -> JannoRowWarnings
+jannoColNames
+        additional_columns :: JannoRowWarnings
+additional_columns = (ByteString -> String) -> [ByteString] -> JannoRowWarnings
 forall a b. (a -> b) -> [a] -> [b]
 map ByteString -> String
 Bchs.unpack ([ByteString] -> JannoRowWarnings)
 -> [ByteString] -> JannoRowWarnings
 forall a b. (a -> b) -> a -> b
 $ [ByteString]
-jannoColNames [ByteString] -> [ByteString] -> [ByteString]
+jannoColNames [ByteString] -> [ByteString] -> [ByteString]
 forall a. Eq a => [a] -> [a] -> [a]
 \\ [ByteString]
 jannoHeader
-    --unless (null missing_columns) $ do
-    --    logDebug ("Missing standard columns: " ++ intercalate ", " missing_columns)
-    Bool -> PoseidonIO () -> PoseidonIO ()
+    --unless (null missing_columns) $ do
+    --    logDebug ("Missing standard columns: " ++ intercalate ", " missing_columns)
+    Bool -> PoseidonIO () -> PoseidonIO ()
 forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
 unless (JannoRowWarnings -> Bool
 forall a. [a] -> Bool
 forall (t :: * -> *) a. Foldable t => t a -> Bool
 null JannoRowWarnings
-additional_columns) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO ()
+additional_columns) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO ()
 forall a b. (a -> b) -> a -> b
 $ do
-        String -> PoseidonIO ()
+        String -> PoseidonIO ()
 logDebug (String
 "Additional columns: " String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++
-        -- for each additional column a standard column is suggested: "Countro (Country?)"
-            String -> JannoRowWarnings -> String
+        -- for each additional column a standard column is suggested: "Countro (Country?)"
+            String -> JannoRowWarnings -> String
 forall a. [a] -> [[a]] -> [a]
 intercalate String
 ", " ((String -> ShowS)
 -> JannoRowWarnings -> JannoRowWarnings -> JannoRowWarnings
 forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
-zipWith (\String
-x String
-y -> String
-x String -> ShowS
+zipWith (\String
+x String
+y -> String
+x String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
 " (" String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
-y String -> ShowS
+y String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
 "?)")
-            JannoRowWarnings
-additional_columns (JannoRowWarnings -> JannoRowWarnings -> JannoRowWarnings
+            JannoRowWarnings
+additional_columns (JannoRowWarnings -> JannoRowWarnings -> JannoRowWarnings
 findSimilarNames JannoRowWarnings
-missing_columns JannoRowWarnings
-additional_columns)))
-    -- load janno by rows
-    [Either PoseidonException JannoRow]
-jannoRepresentation <- ((Int, ByteString)
+missing_columns JannoRowWarnings
+additional_columns)))
+    -- load janno by rows
+    [Either PoseidonException JannoRow]
+jannoRepresentation <- ((Int, ByteString)
  -> ReaderT Env IO (Either PoseidonException JannoRow))
 -> [(Int, ByteString)]
 -> ReaderT Env IO [Either PoseidonException JannoRow]
@@ -7403,19 +4558,19 @@
 -> (Int, ByteString)
 -> ReaderT Env IO (Either PoseidonException JannoRow)
 readJannoFileRow String
-jannoPath) [(Int, ByteString)]
-jannoFileRowsWithHeader
-    -- error case management
-    if Bool -> Bool
+jannoPath) [(Int, ByteString)]
+jannoFileRowsWithHeader
+    -- error case management
+    if Bool -> Bool
 not ([PoseidonException] -> Bool
 forall a. [a] -> Bool
 forall (t :: * -> *) a. Foldable t => t a -> Bool
 null ([Either PoseidonException JannoRow] -> [PoseidonException]
 forall a b. [Either a b] -> [a]
 lefts [Either PoseidonException JannoRow]
-jannoRepresentation))
-    then do
-        (PoseidonException -> PoseidonIO ())
+jannoRepresentation))
+    then do
+        (PoseidonException -> PoseidonIO ())
 -> [PoseidonException] -> PoseidonIO ()
 forall (t :: * -> *) (m :: * -> *) a b.
 (Foldable t, Monad m) =>
@@ -7439,8 +4594,8 @@
 $ [Either PoseidonException JannoRow] -> [PoseidonException]
 forall a b. [Either a b] -> [a]
 lefts [Either PoseidonException JannoRow]
-jannoRepresentation
-        IO JannoRows -> PoseidonIO JannoRows
+jannoRepresentation
+        IO JannoRows -> PoseidonIO JannoRows
 forall a. IO a -> ReaderT Env IO a
 forall (m :: * -> *) a. MonadIO m => IO a -> m a
 liftIO (IO JannoRows -> PoseidonIO JannoRows)
@@ -7453,13 +4608,13 @@
 forall a b. (a -> b) -> a -> b
 $ String -> String -> PoseidonException
 PoseidonFileConsistencyException String
-jannoPath String
+jannoPath String
 "Broken lines."
-    else do
-        let consistentJanno :: Either PoseidonException JannoRows
-consistentJanno = String -> JannoRows -> Either PoseidonException JannoRows
+    else do
+        let consistentJanno :: Either PoseidonException JannoRows
+consistentJanno = String -> JannoRows -> Either PoseidonException JannoRows
 checkJannoConsistency String
-jannoPath (JannoRows -> Either PoseidonException JannoRows)
+jannoPath (JannoRows -> Either PoseidonException JannoRows)
 -> JannoRows -> Either PoseidonException JannoRows
 forall a b. (a -> b) -> a -> b
 $ [JannoRow] -> JannoRows
@@ -7468,11 +4623,11 @@
 $ [Either PoseidonException JannoRow] -> [JannoRow]
 forall a b. [Either a b] -> [b]
 rights [Either PoseidonException JannoRow]
-jannoRepresentation
-        case Either PoseidonException JannoRows
-consistentJanno of
-            Left PoseidonException
-e -> do IO JannoRows -> PoseidonIO JannoRows
+jannoRepresentation
+        case Either PoseidonException JannoRows
+consistentJanno of
+            Left PoseidonException
+e -> do IO JannoRows -> PoseidonIO JannoRows
 forall a. IO a -> ReaderT Env IO a
 forall (m :: * -> *) a. MonadIO m => IO a -> m a
 liftIO (IO JannoRows -> PoseidonIO JannoRows)
@@ -7481,47 +4636,47 @@
 $ PoseidonException -> IO JannoRows
 forall e a. Exception e => e -> IO a
 throwIO PoseidonException
-e
-            Right JannoRows
-x -> do
-                -- putStrLn ""
-                -- putStrLn $ show $ map jSourceTissue x
-                -- putStrLn $ show $ map jLongitude x
-                -- putStrLn $ show $ map jUDG x
-                JannoRows -> PoseidonIO JannoRows
+e
+            Right JannoRows
+x -> do
+                -- putStrLn ""
+                -- putStrLn $ show $ map jSourceTissue x
+                -- putStrLn $ show $ map jLongitude x
+                -- putStrLn $ show $ map jUDG x
+                JannoRows -> PoseidonIO JannoRows
 forall a. a -> ReaderT Env IO a
 forall (m :: * -> *) a. Monad m => a -> m a
 return JannoRows
-x
-
-findSimilarNames :: [String] -> [String] -> [String]
-findSimilarNames :: JannoRowWarnings -> JannoRowWarnings -> JannoRowWarnings
-findSimilarNames JannoRowWarnings
-reference = ShowS -> JannoRowWarnings -> JannoRowWarnings
+x
+
+findSimilarNames :: [String] -> [String] -> [String]
+findSimilarNames :: JannoRowWarnings -> JannoRowWarnings -> JannoRowWarnings
+findSimilarNames JannoRowWarnings
+reference = ShowS -> JannoRowWarnings -> JannoRowWarnings
 forall a b. (a -> b) -> [a] -> [b]
 map (JannoRowWarnings -> ShowS
-findSimilar JannoRowWarnings
-reference)
-    where
-        findSimilar ::  [String] -> String -> String
-        findSimilar :: JannoRowWarnings -> ShowS
-findSimilar [] String
+findSimilar JannoRowWarnings
+reference)
+    where
+        findSimilar ::  [String] -> String -> String
+        findSimilar :: JannoRowWarnings -> ShowS
+findSimilar [] String
 _  = []
-        findSimilar JannoRowWarnings
-ref String
-x =
-            let dists :: [Int]
-dists = (String -> Int) -> JannoRowWarnings -> [Int]
+        findSimilar JannoRowWarnings
+ref String
+x =
+            let dists :: [Int]
+dists = (String -> Int) -> JannoRowWarnings -> [Int]
 forall a b. (a -> b) -> [a] -> [b]
-map (\String
-y -> String
-x String -> String -> Int
+map (\String
+y -> String
+x String -> String -> Int
 forall a. Eq a => [a] -> [a] -> Int
 `editDistance` String
-y) JannoRowWarnings
-ref
-            in JannoRowWarnings
-ref JannoRowWarnings -> Int -> String
+y) JannoRowWarnings
+ref
+            in JannoRowWarnings
+ref JannoRowWarnings -> Int -> String
 forall a. HasCallStack => [a] -> Int -> a
 !! Maybe Int -> Int
 forall a. HasCallStack => Maybe a -> a
@@ -7531,45 +4686,45 @@
 forall a. Ord a => [a] -> a
 forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a
 minimum [Int]
-dists) [Int]
-dists)
-
--- | A function to load one row of a janno file
-readJannoFileRow :: FilePath -> (Int, Bch.ByteString) -> PoseidonIO (Either PoseidonException JannoRow)
-readJannoFileRow :: String
+dists) [Int]
+dists)
+
+-- | A function to load one row of a janno file
+readJannoFileRow :: FilePath -> (Int, Bch.ByteString) -> PoseidonIO (Either PoseidonException JannoRow)
+readJannoFileRow :: String
 -> (Int, ByteString)
 -> ReaderT Env IO (Either PoseidonException JannoRow)
-readJannoFileRow String
-jannoPath (Int
-lineNumber, ByteString
-row) = do
-    let decoded :: Either String (Header, Vector JannoRow)
-decoded = DecodeOptions
+readJannoFileRow String
+jannoPath (Int
+lineNumber, ByteString
+row) = do
+    let decoded :: Either String (Header, Vector JannoRow)
+decoded = DecodeOptions
 -> ByteString -> Either String (Header, Vector JannoRow)
 forall a.
 FromNamedRecord a =>
 DecodeOptions -> ByteString -> Either String (Header, Vector a)
 Csv.decodeByNameWith DecodeOptions
 decodingOptions ByteString
-row
-        simplifiedDecoded :: Either String JannoRow
-simplifiedDecoded = (\(Header
-_,Vector JannoRow
-rs) -> Vector JannoRow -> JannoRow
+row
+        simplifiedDecoded :: Either String JannoRow
+simplifiedDecoded = (\(Header
+_,Vector JannoRow
+rs) -> Vector JannoRow -> JannoRow
 forall a. Vector a -> a
 V.head Vector JannoRow
-rs) ((Header, Vector JannoRow) -> JannoRow)
+rs) ((Header, Vector JannoRow) -> JannoRow)
 -> Either String (Header, Vector JannoRow)
 -> Either String JannoRow
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> Either String (Header, Vector JannoRow)
-decoded
-    case Either String JannoRow
-simplifiedDecoded of
-        Left String
-e -> do
-            let betterError :: String
-betterError = case Parsec String () CsvParseError
+decoded
+    case Either String JannoRow
+simplifiedDecoded of
+        Left String
+e -> do
+            let betterError :: String
+betterError = case Parsec String () CsvParseError
 -> String -> String -> Either ParseError CsvParseError
 forall s t a.
 Stream s Identity t =>
@@ -7577,16 +4732,16 @@
 P.parse Parsec String () CsvParseError
 parseCsvParseError String
 "" String
-e of
-                    Left ParseError
+e of
+                    Left ParseError
 _       -> ShowS
 removeUselessSuffix String
-e
-                    Right CsvParseError
-result -> CsvParseError -> String
+e
+                    Right CsvParseError
+result -> CsvParseError -> String
 renderCsvParseError CsvParseError
-result
-            Either PoseidonException JannoRow
+result
+            Either PoseidonException JannoRow
 -> ReaderT Env IO (Either PoseidonException JannoRow)
 forall a. a -> ReaderT Env IO a
 forall (m :: * -> *) a. Monad m => a -> m a
@@ -7602,16 +4757,16 @@
 forall a b. (a -> b) -> a -> b
 $ String -> String -> String -> PoseidonException
 PoseidonFileRowException String
-jannoPath (Int -> String
+jannoPath (Int -> String
 forall a. Show a => a -> String
 show Int
-lineNumber) String
-betterError
-        Right JannoRow
-jannoRow -> do
-            let (Either String JannoRow
-errOrJannoRow, JannoRowWarnings
-warnings) = Writer JannoRowWarnings (Either String JannoRow)
+lineNumber) String
+betterError
+        Right JannoRow
+jannoRow -> do
+            let (Either String JannoRow
+errOrJannoRow, JannoRowWarnings
+warnings) = Writer JannoRowWarnings (Either String JannoRow)
 -> (Either String JannoRow, JannoRowWarnings)
 forall w a. Writer w a -> (a, w)
 W.runWriter (ExceptT String (Writer JannoRowWarnings) JannoRow
@@ -7619,8 +4774,8 @@
 forall e (m :: * -> *) a. ExceptT e m a -> m (Either e a)
 E.runExceptT (JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
 checkJannoRowConsistency JannoRow
-jannoRow))
-            (String -> PoseidonIO ()) -> JannoRowWarnings -> PoseidonIO ()
+jannoRow))
+            (String -> PoseidonIO ()) -> JannoRowWarnings -> PoseidonIO ()
 forall (t :: * -> *) (m :: * -> *) a b.
 (Foldable t, Monad m) =>
 (a -> m b) -> t a -> m ()
@@ -7628,12 +4783,12 @@
 logWarning (String -> PoseidonIO ()) -> ShowS -> String -> PoseidonIO ()
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . ShowS
-renderWarning) JannoRowWarnings
-warnings
-            case Either String JannoRow
-errOrJannoRow of
-                Left String
-e  -> Either PoseidonException JannoRow
+renderWarning) JannoRowWarnings
+warnings
+            case Either String JannoRow
+errOrJannoRow of
+                Left String
+e  -> Either PoseidonException JannoRow
 -> ReaderT Env IO (Either PoseidonException JannoRow)
 forall a. a -> ReaderT Env IO a
 forall (m :: * -> *) a. Monad m => a -> m a
@@ -7649,11 +4804,11 @@
 forall a b. (a -> b) -> a -> b
 $ String -> String -> String -> PoseidonException
 PoseidonFileRowException String
-jannoPath String
-renderLocation String
-e
-                Right JannoRow
-r -> Either PoseidonException JannoRow
+jannoPath String
+renderLocation String
+e
+                Right JannoRow
+r -> Either PoseidonException JannoRow
 -> ReaderT Env IO (Either PoseidonException JannoRow)
 forall a. a -> ReaderT Env IO a
 forall (m :: * -> *) a. Monad m => a -> m a
@@ -7665,88 +4820,88 @@
 $ JannoRow -> Either PoseidonException JannoRow
 forall a b. b -> Either a b
 Right JannoRow
-r
-            where
-                renderWarning :: String -> String
-                renderWarning :: ShowS
-renderWarning String
-e = String
+r
+            where
+                renderWarning :: String -> String
+                renderWarning :: ShowS
+renderWarning String
+e = String
 "Issue in " String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
-jannoPath String -> ShowS
+jannoPath String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
 " " String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++
-                                  String
+                                  String
 "in line " String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
-renderLocation String -> ShowS
+renderLocation String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
 ": " String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
-e
-                renderLocation :: String
-                renderLocation :: String
-renderLocation =  Int -> String
+e
+                renderLocation :: String
+                renderLocation :: String
+renderLocation =  Int -> String
 forall a. Show a => a -> String
 show Int
-lineNumber String -> ShowS
+lineNumber String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++
-                                  String
+                                  String
 " (Poseidon_ID: " String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ JannoRow -> String
 jPoseidonID JannoRow
-jannoRow String -> ShowS
+jannoRow String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
 ")"
-
-decodingOptions :: Csv.DecodeOptions
-decodingOptions :: DecodeOptions
+
+decodingOptions :: Csv.DecodeOptions
+decodingOptions :: DecodeOptions
 decodingOptions = DecodeOptions
 Csv.defaultDecodeOptions {
-    decDelimiter :: Word8
+    decDelimiter :: Word8
 Csv.decDelimiter = Int -> Word8
 forall a b. (Integral a, Num b) => a -> b
 fromIntegral (Char -> Int
 ord Char
 '\t')
-}
-
-removeUselessSuffix :: String -> String
-removeUselessSuffix :: ShowS
+}
+
+removeUselessSuffix :: String -> String
+removeUselessSuffix :: ShowS
 removeUselessSuffix = Text -> String
-unpack (Text -> String) -> (String -> Text) -> ShowS
+T.unpack (Text -> String) -> (String -> Text) -> ShowS
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . HasCallStack => Text -> Text -> Text -> Text
 Text -> Text -> Text -> Text
-replace Text
+T.replace Text
 " at \"\"" Text
 "" (Text -> Text) -> (String -> Text) -> String -> Text
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . String -> Text
-pack
-
--- reformat the parser error
--- from: parse error (Failed reading: conversion error: expected Int, got "430;" (incomplete field parse, leftover: [59]))
--- to:   parse error in one column (expected data type: Int, broken value: "430;", problematic characters: ";")
-
-data CsvParseError = CsvParseError {
-      CsvParseError -> String
+T.pack
+
+-- reformat the parser error
+-- from: parse error (Failed reading: conversion error: expected Int, got "430;" (incomplete field parse, leftover: [59]))
+-- to:   parse error in one column (expected data type: Int, broken value: "430;", problematic characters: ";")
+
+data CsvParseError = CsvParseError {
+      CsvParseError -> String
 _expected :: String
-    , CsvParseError -> String
+    , CsvParseError -> String
 _actual   :: String
-    , CsvParseError -> String
+    , CsvParseError -> String
 _leftover :: String
-} deriving Int -> CsvParseError -> ShowS
+} deriving Int -> CsvParseError -> ShowS
 [CsvParseError] -> ShowS
 CsvParseError -> String
 (Int -> CsvParseError -> ShowS)
@@ -7762,19 +4917,19 @@
 $cshowList :: [CsvParseError] -> ShowS
 showList :: [CsvParseError] -> ShowS
 Show
-
-parseCsvParseError :: P.Parser CsvParseError
-parseCsvParseError :: Parsec String () CsvParseError
+
+parseCsvParseError :: P.Parser CsvParseError
+parseCsvParseError :: Parsec String () CsvParseError
 parseCsvParseError = do
-    String
+    String
 _ <- String -> ParsecT String () Identity String
 forall s (m :: * -> *) u.
 Stream s m Char =>
 String -> ParsecT s u m String
 P.string String
 "parse error (Failed reading: conversion error: expected "
-    String
-expected <- ParsecT String () Identity Char
+    String
+expected <- ParsecT String () Identity Char
 -> ParsecT String () Identity String
 -> ParsecT String () Identity String
 forall s (m :: * -> *) t u a end.
@@ -7791,8 +4946,8 @@
 String -> ParsecT s u m String
 P.string String
 ", got "))
-    String
-actual <- ParsecT String () Identity Char
+    String
+actual <- ParsecT String () Identity Char
 -> ParsecT String () Identity String
 -> ParsecT String () Identity String
 forall s (m :: * -> *) t u a end.
@@ -7809,8 +4964,8 @@
 String -> ParsecT s u m String
 P.string String
 " (incomplete field parse, leftover: ["))
-    [Int]
-leftoverList <- ParsecT String () Identity Int
+    [Int]
+leftoverList <- ParsecT String () Identity Int
 -> ParsecT String () Identity Char
 -> ParsecT String () Identity [Int]
 forall s (m :: * -> *) t u a end.
@@ -7835,21 +4990,21 @@
 Char -> ParsecT s u m Char
 P.char Char
 ',')
-    Char
+    Char
 _ <- Char -> ParsecT String () Identity Char
 forall s (m :: * -> *) u.
 Stream s m Char =>
 Char -> ParsecT s u m Char
 P.char Char
 ']'
-    String
+    String
 _ <- ParsecT String () Identity Char
 -> ParsecT String () Identity String
 forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m [a]
 P.many ParsecT String () Identity Char
 forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char
 P.anyChar
-    CsvParseError -> Parsec String () CsvParseError
+    CsvParseError -> Parsec String () CsvParseError
 forall a. a -> ParsecT String () Identity a
 forall (m :: * -> *) a. Monad m => a -> m a
 return (CsvParseError -> Parsec String () CsvParseError)
@@ -7857,150 +5012,150 @@
 forall a b. (a -> b) -> a -> b
 $ String -> String -> String -> CsvParseError
 CsvParseError String
-expected String
-actual ((Int -> Char) -> [Int] -> String
+expected String
+actual ((Int -> Char) -> [Int] -> String
 forall a b. (a -> b) -> [a] -> [b]
 map Int -> Char
 chr [Int]
-leftoverList)
-
-renderCsvParseError :: CsvParseError -> String
-renderCsvParseError :: CsvParseError -> String
-renderCsvParseError (CsvParseError String
-expected String
-actual String
-leftover) =
-    String
+leftoverList)
+
+renderCsvParseError :: CsvParseError -> String
+renderCsvParseError :: CsvParseError -> String
+renderCsvParseError (CsvParseError String
+expected String
+actual String
+leftover) =
+    String
 "parse error in one column (" String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++
-    String
+    String
 "expected data type: " String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
-expected String -> ShowS
+expected String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
 ", " String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++
-    String
+    String
 "broken value: " String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
-actual String -> ShowS
+actual String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
 ", " String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++
-    String
+    String
 "problematic characters: " String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ ShowS
 forall a. Show a => a -> String
 show String
-leftover String -> ShowS
+leftover String -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ String
 ")"
-
--- | A helper functions to replace empty bytestrings values in janno files with explicit "n/a"
-explicitNA :: Bch.ByteString -> Bch.ByteString
-explicitNA :: ByteString -> ByteString
+
+-- | A helper functions to replace empty bytestrings values in janno files with explicit "n/a"
+explicitNA :: Bch.ByteString -> Bch.ByteString
+explicitNA :: ByteString -> ByteString
 explicitNA = ByteString -> ByteString -> ByteString -> ByteString
 replaceInJannoBytestring ByteString
 Bch.empty ByteString
 "n/a"
-
-replaceInJannoBytestring :: Bch.ByteString -> Bch.ByteString -> Bch.ByteString -> Bch.ByteString
-replaceInJannoBytestring :: ByteString -> ByteString -> ByteString -> ByteString
-replaceInJannoBytestring ByteString
-from ByteString
-to ByteString
-tsv =
-    let tsvRows :: [ByteString]
-tsvRows = ByteString -> [ByteString]
+
+replaceInJannoBytestring :: Bch.ByteString -> Bch.ByteString -> Bch.ByteString -> Bch.ByteString
+replaceInJannoBytestring :: ByteString -> ByteString -> ByteString -> ByteString
+replaceInJannoBytestring ByteString
+from ByteString
+to ByteString
+tsv =
+    let tsvRows :: [ByteString]
+tsvRows = ByteString -> [ByteString]
 Bch.lines ByteString
-tsv
-        tsvCells :: [[ByteString]]
-tsvCells = (ByteString -> [ByteString]) -> [ByteString] -> [[ByteString]]
+tsv
+        tsvCells :: [[ByteString]]
+tsvCells = (ByteString -> [ByteString]) -> [ByteString] -> [[ByteString]]
 forall a b. (a -> b) -> [a] -> [b]
 map ((Char -> Bool) -> ByteString -> [ByteString]
 Bch.splitWith (Char -> Char -> Bool
 forall a. Eq a => a -> a -> Bool
 ==Char
 '\t')) [ByteString]
-tsvRows
-        tsvCellsUpdated :: [[ByteString]]
-tsvCellsUpdated = ([ByteString] -> [ByteString]) -> [[ByteString]] -> [[ByteString]]
+tsvRows
+        tsvCellsUpdated :: [[ByteString]]
+tsvCellsUpdated = ([ByteString] -> [ByteString]) -> [[ByteString]] -> [[ByteString]]
 forall a b. (a -> b) -> [a] -> [b]
 map ((ByteString -> ByteString) -> [ByteString] -> [ByteString]
 forall a b. (a -> b) -> [a] -> [b]
-map (\ByteString
-y -> if ByteString
-y ByteString -> ByteString -> Bool
+map (\ByteString
+y -> if ByteString
+y ByteString -> ByteString -> Bool
 forall a. Eq a => a -> a -> Bool
 == ByteString
-from Bool -> Bool -> Bool
+from Bool -> Bool -> Bool
 || ByteString
-y ByteString -> ByteString -> Bool
+y ByteString -> ByteString -> Bool
 forall a. Eq a => a -> a -> Bool
 == ByteString -> ByteString -> ByteString
 Bch.append ByteString
-from ByteString
+from ByteString
 "\r" then ByteString
-to else ByteString
-y)) [[ByteString]]
-tsvCells
-        tsvRowsUpdated :: [ByteString]
-tsvRowsUpdated = ([ByteString] -> ByteString) -> [[ByteString]] -> [ByteString]
+to else ByteString
+y)) [[ByteString]]
+tsvCells
+        tsvRowsUpdated :: [ByteString]
+tsvRowsUpdated = ([ByteString] -> ByteString) -> [[ByteString]] -> [ByteString]
 forall a b. (a -> b) -> [a] -> [b]
 map (ByteString -> [ByteString] -> ByteString
 Bch.intercalate (String -> ByteString
 Bch.pack String
 "\t")) [[ByteString]]
-tsvCellsUpdated
-   in [ByteString] -> ByteString
+tsvCellsUpdated
+   in [ByteString] -> ByteString
 Bch.unlines [ByteString]
-tsvRowsUpdated
-
--- Global janno consistency checks
-
-checkJannoConsistency :: FilePath -> JannoRows -> Either PoseidonException JannoRows
-checkJannoConsistency :: String -> JannoRows -> Either PoseidonException JannoRows
-checkJannoConsistency String
-jannoPath JannoRows
-xs
-    | Bool -> Bool
+tsvRowsUpdated
+
+-- Global janno consistency checks
+
+checkJannoConsistency :: FilePath -> JannoRows -> Either PoseidonException JannoRows
+checkJannoConsistency :: String -> JannoRows -> Either PoseidonException JannoRows
+checkJannoConsistency String
+jannoPath JannoRows
+xs
+    | Bool -> Bool
 not (Bool -> Bool) -> Bool -> Bool
 forall a b. (a -> b) -> a -> b
 $ JannoRows -> Bool
 checkIndividualUnique JannoRows
-xs = PoseidonException -> Either PoseidonException JannoRows
+xs = PoseidonException -> Either PoseidonException JannoRows
 forall a b. a -> Either a b
 Left (PoseidonException -> Either PoseidonException JannoRows)
 -> PoseidonException -> Either PoseidonException JannoRows
 forall a b. (a -> b) -> a -> b
 $ String -> String -> PoseidonException
 PoseidonFileConsistencyException String
-jannoPath
-        String
+jannoPath
+        String
 "The Poseidon_IDs are not unique"
-    | Bool
+    | Bool
 otherwise = JannoRows -> Either PoseidonException JannoRows
 forall a b. b -> Either a b
 Right JannoRows
-xs
-
-checkIndividualUnique :: JannoRows -> Bool
-checkIndividualUnique :: JannoRows -> Bool
-checkIndividualUnique (JannoRows [JannoRow]
-rows) = [JannoRow] -> Int
+xs
+
+checkIndividualUnique :: JannoRows -> Bool
+checkIndividualUnique :: JannoRows -> Bool
+checkIndividualUnique (JannoRows [JannoRow]
+rows) = [JannoRow] -> Int
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
 length [JannoRow]
-rows Int -> Int -> Bool
+rows Int -> Int -> Bool
 forall a. Eq a => a -> a -> Bool
 == JannoRowWarnings -> Int
 forall a. [a] -> Int
@@ -8014,23 +5169,23 @@
 forall a b. (a -> b) -> [a] -> [b]
 map JannoRow -> String
 jPoseidonID [JannoRow]
-rows)
-
--- Row-wise janno consistency checks
-
-type JannoRowWarnings = [String]
-type JannoRowLog = E.ExceptT String (W.Writer JannoRowWarnings)
-
-checkJannoRowConsistency :: JannoRow -> JannoRowLog JannoRow
-checkJannoRowConsistency :: JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
-checkJannoRowConsistency JannoRow
-x =
-    JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
+rows)
+
+-- Row-wise janno consistency checks
+
+type JannoRowWarnings = [String]
+type JannoRowLog = E.ExceptT String (W.Writer JannoRowWarnings)
+
+checkJannoRowConsistency :: JannoRow -> JannoRowLog JannoRow
+checkJannoRowConsistency :: JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
+checkJannoRowConsistency JannoRow
+x =
+    JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
 forall a. a -> ExceptT String (Writer JannoRowWarnings) a
 forall (m :: * -> *) a. Monad m => a -> m a
 return JannoRow
-x
-    ExceptT String (Writer JannoRowWarnings) JannoRow
+x
+    ExceptT String (Writer JannoRowWarnings) JannoRow
 -> (JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow)
 -> ExceptT String (Writer JannoRowWarnings) JannoRow
 forall a b.
@@ -8040,7 +5195,7 @@
 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
 checkMandatoryStringNotEmpty
-    ExceptT String (Writer JannoRowWarnings) JannoRow
+    ExceptT String (Writer JannoRowWarnings) JannoRow
 -> (JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow)
 -> ExceptT String (Writer JannoRowWarnings) JannoRow
 forall a b.
@@ -8050,7 +5205,7 @@
 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
 checkC14ColsConsistent
-    ExceptT String (Writer JannoRowWarnings) JannoRow
+    ExceptT String (Writer JannoRowWarnings) JannoRow
 -> (JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow)
 -> ExceptT String (Writer JannoRowWarnings) JannoRow
 forall a b.
@@ -8060,7 +5215,7 @@
 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
 checkContamColsConsistent
-    ExceptT String (Writer JannoRowWarnings) JannoRow
+    ExceptT String (Writer JannoRowWarnings) JannoRow
 -> (JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow)
 -> ExceptT String (Writer JannoRowWarnings) JannoRow
 forall a b.
@@ -8070,13 +5225,13 @@
 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
 checkRelationColsConsistent
-
-checkMandatoryStringNotEmpty :: JannoRow -> JannoRowLog JannoRow
-checkMandatoryStringNotEmpty :: JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
-checkMandatoryStringNotEmpty JannoRow
-x =
-    let notEmpty :: Bool
-notEmpty = (Bool -> Bool
+
+checkMandatoryStringNotEmpty :: JannoRow -> JannoRowLog JannoRow
+checkMandatoryStringNotEmpty :: JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
+checkMandatoryStringNotEmpty JannoRow
+x =
+    let notEmpty :: Bool
+notEmpty = (Bool -> Bool
 not (Bool -> Bool) -> (JannoRow -> Bool) -> JannoRow -> Bool
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . String -> Bool
@@ -8088,29 +5243,29 @@
 jPoseidonID (JannoRow -> Bool) -> JannoRow -> Bool
 forall a b. (a -> b) -> a -> b
 $ JannoRow
-x) Bool -> Bool -> Bool
+x) Bool -> Bool -> Bool
 &&
-                   (Bool -> Bool
+                   (Bool -> Bool
 not (Bool -> Bool) -> (JannoRow -> Bool) -> JannoRow -> Bool
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. JannoRowWarnings -> Bool
+. [GroupName] -> Bool
 forall a. [a] -> Bool
 forall (t :: * -> *) a. Foldable t => t a -> Bool
-null (JannoRowWarnings -> Bool)
--> (JannoRow -> JannoRowWarnings) -> JannoRow -> Bool
+null ([GroupName] -> Bool)
+-> (JannoRow -> [GroupName]) -> JannoRow -> Bool
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. JannoStringList -> JannoRowWarnings
-forall a. JannoList a -> [a]
-getJannoList (JannoStringList -> JannoRowWarnings)
--> (JannoRow -> JannoStringList) -> JannoRow -> JannoRowWarnings
+. ListColumn GroupName -> [GroupName]
+forall a. ListColumn a -> [a]
+getListColumn (ListColumn GroupName -> [GroupName])
+-> (JannoRow -> ListColumn GroupName) -> JannoRow -> [GroupName]
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. JannoRow -> JannoStringList
+. JannoRow -> ListColumn GroupName
 jGroupName (JannoRow -> Bool) -> JannoRow -> Bool
 forall a b. (a -> b) -> a -> b
 $ JannoRow
-x) Bool -> Bool -> Bool
+x) Bool -> Bool -> Bool
 &&
-                   (Bool -> Bool
+                   (Bool -> Bool
 not (Bool -> Bool) -> (JannoRow -> Bool) -> JannoRow -> Bool
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . String -> Bool
@@ -8118,149 +5273,157 @@
 forall (t :: * -> *) a. Foldable t => t a -> Bool
 null (String -> Bool) -> (JannoRow -> String) -> JannoRow -> Bool
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. JannoRowWarnings -> String
+. GroupName -> String
+forall a. Show a => a -> String
+show (GroupName -> String)
+-> (JannoRow -> GroupName) -> JannoRow -> String
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+. [GroupName] -> GroupName
 forall a. HasCallStack => [a] -> a
-head (JannoRowWarnings -> String)
--> (JannoRow -> JannoRowWarnings) -> JannoRow -> String
+head ([GroupName] -> GroupName)
+-> (JannoRow -> [GroupName]) -> JannoRow -> GroupName
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. JannoStringList -> JannoRowWarnings
-forall a. JannoList a -> [a]
-getJannoList (JannoStringList -> JannoRowWarnings)
--> (JannoRow -> JannoStringList) -> JannoRow -> JannoRowWarnings
+. ListColumn GroupName -> [GroupName]
+forall a. ListColumn a -> [a]
+getListColumn (ListColumn GroupName -> [GroupName])
+-> (JannoRow -> ListColumn GroupName) -> JannoRow -> [GroupName]
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. JannoRow -> JannoStringList
+. JannoRow -> ListColumn GroupName
 jGroupName (JannoRow -> Bool) -> JannoRow -> Bool
 forall a b. (a -> b) -> a -> b
 $ JannoRow
-x)
-    in case Bool
-notEmpty of
-        Bool
+x)
+    in case Bool
+notEmpty of
+        Bool
 False -> String -> ExceptT String (Writer JannoRowWarnings) JannoRow
 forall a. String -> ExceptT String (Writer JannoRowWarnings) a
 forall e (m :: * -> *) a. MonadError e m => e -> m a
 E.throwError String
 "Poseidon_ID or Group_Name are empty"
-        Bool
+        Bool
 True  -> JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
 forall a. a -> ExceptT String (Writer JannoRowWarnings) a
 forall (m :: * -> *) a. Monad m => a -> m a
 return JannoRow
-x
-
-getCellLength :: Maybe (JannoList a) -> Int
-getCellLength :: forall a. Maybe (JannoList a) -> Int
-getCellLength = Int -> (JannoList a -> Int) -> Maybe (JannoList a) -> Int
+x
+
+getCellLength :: Maybe (ListColumn a) -> Int
+getCellLength :: forall a. Maybe (ListColumn a) -> Int
+getCellLength = Int -> (ListColumn a -> Int) -> Maybe (ListColumn a) -> Int
 forall b a. b -> (a -> b) -> Maybe a -> b
 maybe Int
 0 ([a] -> Int
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
-length ([a] -> Int) -> (JannoList a -> [a]) -> JannoList a -> Int
+length ([a] -> Int) -> (ListColumn a -> [a]) -> ListColumn a -> Int
 forall b c a. (b -> c) -> (a -> b) -> a -> c
-. JannoList a -> [a]
-forall a. JannoList a -> [a]
-getJannoList)
-
-allEqual :: Eq a => [a] -> Bool
-allEqual :: forall a. Eq a => [a] -> Bool
+. ListColumn a -> [a]
+forall a. ListColumn a -> [a]
+getListColumn)
+
+allEqual :: Eq a => [a] -> Bool
+allEqual :: forall a. Eq a => [a] -> Bool
 allEqual [] = Bool
 True
-allEqual [a]
-x  = [a] -> Int
+allEqual [a]
+x  = [a] -> Int
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
 length ([a] -> [a]
 forall a. Eq a => [a] -> [a]
 nub [a]
-x) Int -> Int -> Bool
+x) Int -> Int -> Bool
 forall a. Eq a => a -> a -> Bool
 == Int
 1
-
-checkC14ColsConsistent :: JannoRow -> JannoRowLog JannoRow
-checkC14ColsConsistent :: JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
-checkC14ColsConsistent JannoRow
-x =
-    let isTypeC14 :: Bool
-isTypeC14        = JannoRow -> Maybe JannoDateType
+
+checkC14ColsConsistent :: JannoRow -> JannoRowLog JannoRow
+checkC14ColsConsistent :: JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
+checkC14ColsConsistent JannoRow
+x =
+    let isTypeC14 :: Bool
+isTypeC14        = JannoRow -> Maybe JannoDateType
 jDateType JannoRow
-x Maybe JannoDateType -> Maybe JannoDateType -> Bool
+x Maybe JannoDateType -> Maybe JannoDateType -> Bool
 forall a. Eq a => a -> a -> Bool
 == JannoDateType -> Maybe JannoDateType
 forall a. a -> Maybe a
 Just JannoDateType
-C14
-        lLabnr :: Int
-lLabnr           = Maybe JannoStringList -> Int
-forall a. Maybe (JannoList a) -> Int
-getCellLength (Maybe JannoStringList -> Int) -> Maybe JannoStringList -> Int
+C14
+        lLabnr :: Int
+lLabnr           = Maybe (ListColumn JannoDateC14Labnr) -> Int
+forall a. Maybe (ListColumn a) -> Int
+getCellLength (Maybe (ListColumn JannoDateC14Labnr) -> Int)
+-> Maybe (ListColumn JannoDateC14Labnr) -> Int
 forall a b. (a -> b) -> a -> b
-$ JannoRow -> Maybe JannoStringList
+$ JannoRow -> Maybe (ListColumn JannoDateC14Labnr)
 jDateC14Labnr JannoRow
-x
-        lUncalBP :: Int
-lUncalBP         = Maybe JannoIntList -> Int
-forall a. Maybe (JannoList a) -> Int
-getCellLength (Maybe JannoIntList -> Int) -> Maybe JannoIntList -> Int
+x
+        lUncalBP :: Int
+lUncalBP         = Maybe (ListColumn JannoDateC14UncalBP) -> Int
+forall a. Maybe (ListColumn a) -> Int
+getCellLength (Maybe (ListColumn JannoDateC14UncalBP) -> Int)
+-> Maybe (ListColumn JannoDateC14UncalBP) -> Int
 forall a b. (a -> b) -> a -> b
-$ JannoRow -> Maybe JannoIntList
+$ JannoRow -> Maybe (ListColumn JannoDateC14UncalBP)
 jDateC14UncalBP JannoRow
-x
-        lUncalBPErr :: Int
-lUncalBPErr      = Maybe JannoIntList -> Int
-forall a. Maybe (JannoList a) -> Int
-getCellLength (Maybe JannoIntList -> Int) -> Maybe JannoIntList -> Int
+x
+        lUncalBPErr :: Int
+lUncalBPErr      = Maybe (ListColumn JannoDateC14UncalBPErr) -> Int
+forall a. Maybe (ListColumn a) -> Int
+getCellLength (Maybe (ListColumn JannoDateC14UncalBPErr) -> Int)
+-> Maybe (ListColumn JannoDateC14UncalBPErr) -> Int
 forall a b. (a -> b) -> a -> b
-$ JannoRow -> Maybe JannoIntList
+$ JannoRow -> Maybe (ListColumn JannoDateC14UncalBPErr)
 jDateC14UncalBPErr JannoRow
-x
-        anyMainColFilled :: Bool
-anyMainColFilled = Int
-lUncalBP Int -> Int -> Bool
+x
+        anyMainColFilled :: Bool
+anyMainColFilled = Int
+lUncalBP Int -> Int -> Bool
 forall a. Ord a => a -> a -> Bool
 > Int
 0 Bool -> Bool -> Bool
 || Int
-lUncalBPErr Int -> Int -> Bool
+lUncalBPErr Int -> Int -> Bool
 forall a. Ord a => a -> a -> Bool
 > Int
 0
-        anyMainColEmpty :: Bool
-anyMainColEmpty  = Int
-lUncalBP Int -> Int -> Bool
+        anyMainColEmpty :: Bool
+anyMainColEmpty  = Int
+lUncalBP Int -> Int -> Bool
 forall a. Eq a => a -> a -> Bool
 == Int
 0 Bool -> Bool -> Bool
 || Int
-lUncalBPErr Int -> Int -> Bool
+lUncalBPErr Int -> Int -> Bool
 forall a. Eq a => a -> a -> Bool
 == Int
 0
-        allSameLength :: Bool
-allSameLength    = [Int] -> Bool
+        allSameLength :: Bool
+allSameLength    = [Int] -> Bool
 forall a. Eq a => [a] -> Bool
 allEqual [Int
-lLabnr, Int
-lUncalBP, Int
-lUncalBPErr] Bool -> Bool -> Bool
+lLabnr, Int
+lUncalBP, Int
+lUncalBPErr] Bool -> Bool -> Bool
 ||
-                          (Int
-lLabnr Int -> Int -> Bool
+                          (Int
+lLabnr Int -> Int -> Bool
 forall a. Eq a => a -> a -> Bool
 == Int
 0 Bool -> Bool -> Bool
 && Int
-lUncalBP Int -> Int -> Bool
+lUncalBP Int -> Int -> Bool
 forall a. Eq a => a -> a -> Bool
 == Int
-lUncalBPErr)
-    in case (Bool
-isTypeC14, Bool
-anyMainColFilled, Bool
-anyMainColEmpty, Bool
-allSameLength) of
-        (Bool
+lUncalBPErr)
+    in case (Bool
+isTypeC14, Bool
+anyMainColFilled, Bool
+anyMainColEmpty, Bool
+allSameLength) of
+        (Bool
 False, Bool
 False, Bool
 _, Bool
@@ -8268,8 +5431,8 @@
 forall a. a -> ExceptT String (Writer JannoRowWarnings) a
 forall (m :: * -> *) a. Monad m => a -> m a
 return JannoRow
-x
-        (Bool
+x
+        (Bool
 False, Bool
 True, Bool
 _, Bool
@@ -8279,7 +5442,7 @@
 E.throwError String
 "Date_Type is not \"C14\", but either \
                                          \Date_C14_Uncal_BP or Date_C14_Uncal_BP_Err are not empty"
-        (Bool
+        (Bool
 True, Bool
 _, Bool
 False, Bool
@@ -8289,7 +5452,7 @@
 E.throwError String
 "Date_C14_Labnr, Date_C14_Uncal_BP and Date_C14_Uncal_BP_Err \
                                          \do not have the same lengths"
-        (Bool
+        (Bool
 True, Bool
 _, Bool
 False, Bool
@@ -8297,137 +5460,142 @@
 forall a. a -> ExceptT String (Writer JannoRowWarnings) a
 forall (m :: * -> *) a. Monad m => a -> m a
 return JannoRow
-x
-        -- this should be an error, but we have legacy packages with this issue, so it's only a warning
-        (Bool
+x
+        -- this should be an error, but we have legacy packages with this issue, so it's only a warning
+        (Bool
 True, Bool
 _, Bool
 True, Bool
 _ )     -> do
-            JannoRowWarnings -> ExceptT String (Writer JannoRowWarnings) ()
+            JannoRowWarnings -> ExceptT String (Writer JannoRowWarnings) ()
 forall w (m :: * -> *). MonadWriter w m => w -> m ()
 W.tell [String
 "Date_Type is \"C14\", but either Date_C14_Uncal_BP or Date_C14_Uncal_BP_Err are empty"]
-            JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
+            JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
 forall a. a -> ExceptT String (Writer JannoRowWarnings) a
 forall (m :: * -> *) a. Monad m => a -> m a
 return JannoRow
-x
-
-checkContamColsConsistent :: JannoRow -> JannoRowLog JannoRow
-checkContamColsConsistent :: JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
-checkContamColsConsistent JannoRow
-x =
-    let lContamination :: Int
-lContamination      = Maybe JannoStringList -> Int
-forall a. Maybe (JannoList a) -> Int
-getCellLength (Maybe JannoStringList -> Int) -> Maybe JannoStringList -> Int
+x
+
+checkContamColsConsistent :: JannoRow -> JannoRowLog JannoRow
+checkContamColsConsistent :: JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
+checkContamColsConsistent JannoRow
+x =
+    let lContamination :: Int
+lContamination      = Maybe (ListColumn JannoContamination) -> Int
+forall a. Maybe (ListColumn a) -> Int
+getCellLength (Maybe (ListColumn JannoContamination) -> Int)
+-> Maybe (ListColumn JannoContamination) -> Int
 forall a b. (a -> b) -> a -> b
-$ JannoRow -> Maybe JannoStringList
+$ JannoRow -> Maybe (ListColumn JannoContamination)
 jContamination JannoRow
-x
-        lContaminationErr :: Int
-lContaminationErr   = Maybe JannoStringList -> Int
-forall a. Maybe (JannoList a) -> Int
-getCellLength (Maybe JannoStringList -> Int) -> Maybe JannoStringList -> Int
+x
+        lContaminationErr :: Int
+lContaminationErr   = Maybe (ListColumn JannoContaminationErr) -> Int
+forall a. Maybe (ListColumn a) -> Int
+getCellLength (Maybe (ListColumn JannoContaminationErr) -> Int)
+-> Maybe (ListColumn JannoContaminationErr) -> Int
 forall a b. (a -> b) -> a -> b
-$ JannoRow -> Maybe JannoStringList
+$ JannoRow -> Maybe (ListColumn JannoContaminationErr)
 jContaminationErr JannoRow
-x
-        lContaminationMeas :: Int
-lContaminationMeas  = Maybe JannoStringList -> Int
-forall a. Maybe (JannoList a) -> Int
-getCellLength (Maybe JannoStringList -> Int) -> Maybe JannoStringList -> Int
+x
+        lContaminationMeas :: Int
+lContaminationMeas  = Maybe (ListColumn JannoContaminationMeas) -> Int
+forall a. Maybe (ListColumn a) -> Int
+getCellLength (Maybe (ListColumn JannoContaminationMeas) -> Int)
+-> Maybe (ListColumn JannoContaminationMeas) -> Int
 forall a b. (a -> b) -> a -> b
-$ JannoRow -> Maybe JannoStringList
+$ JannoRow -> Maybe (ListColumn JannoContaminationMeas)
 jContaminationMeas JannoRow
-x
-        allSameLength :: Bool
-allSameLength       = [Int] -> Bool
+x
+        allSameLength :: Bool
+allSameLength       = [Int] -> Bool
 forall a. Eq a => [a] -> Bool
 allEqual [Int
-lContamination, Int
-lContaminationErr, Int
-lContaminationMeas]
-    in case Bool
-allSameLength of
-        Bool
+lContamination, Int
+lContaminationErr, Int
+lContaminationMeas]
+    in case Bool
+allSameLength of
+        Bool
 False -> String -> ExceptT String (Writer JannoRowWarnings) JannoRow
 forall a. String -> ExceptT String (Writer JannoRowWarnings) a
 forall e (m :: * -> *) a. MonadError e m => e -> m a
 E.throwError String
 "Contamination, Contamination_Err and Contamination_Meas \
                       \do not have the same lengths"
-        Bool
+        Bool
 True  -> JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
 forall a. a -> ExceptT String (Writer JannoRowWarnings) a
 forall (m :: * -> *) a. Monad m => a -> m a
 return JannoRow
-x
-
-checkRelationColsConsistent :: JannoRow -> JannoRowLog JannoRow
-checkRelationColsConsistent :: JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
-checkRelationColsConsistent JannoRow
-x =
-    let lRelationTo :: Int
-lRelationTo     = Maybe JannoStringList -> Int
-forall a. Maybe (JannoList a) -> Int
-getCellLength (Maybe JannoStringList -> Int) -> Maybe JannoStringList -> Int
+x
+
+checkRelationColsConsistent :: JannoRow -> JannoRowLog JannoRow
+checkRelationColsConsistent :: JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
+checkRelationColsConsistent JannoRow
+x =
+    let lRelationTo :: Int
+lRelationTo     = Maybe (ListColumn JannoRelationTo) -> Int
+forall a. Maybe (ListColumn a) -> Int
+getCellLength (Maybe (ListColumn JannoRelationTo) -> Int)
+-> Maybe (ListColumn JannoRelationTo) -> Int
 forall a b. (a -> b) -> a -> b
-$ JannoRow -> Maybe JannoStringList
+$ JannoRow -> Maybe (ListColumn JannoRelationTo)
 jRelationTo JannoRow
-x
-        lRelationDegree :: Int
-lRelationDegree = Maybe JannoRelationDegreeList -> Int
-forall a. Maybe (JannoList a) -> Int
-getCellLength (Maybe JannoRelationDegreeList -> Int)
--> Maybe JannoRelationDegreeList -> Int
+x
+        lRelationDegree :: Int
+lRelationDegree = Maybe (ListColumn JannoRelationDegree) -> Int
+forall a. Maybe (ListColumn a) -> Int
+getCellLength (Maybe (ListColumn JannoRelationDegree) -> Int)
+-> Maybe (ListColumn JannoRelationDegree) -> Int
 forall a b. (a -> b) -> a -> b
-$ JannoRow -> Maybe JannoRelationDegreeList
+$ JannoRow -> Maybe (ListColumn JannoRelationDegree)
 jRelationDegree JannoRow
-x
-        lRelationType :: Int
-lRelationType   = Maybe JannoStringList -> Int
-forall a. Maybe (JannoList a) -> Int
-getCellLength (Maybe JannoStringList -> Int) -> Maybe JannoStringList -> Int
+x
+        lRelationType :: Int
+lRelationType   = Maybe (ListColumn JannoRelationType) -> Int
+forall a. Maybe (ListColumn a) -> Int
+getCellLength (Maybe (ListColumn JannoRelationType) -> Int)
+-> Maybe (ListColumn JannoRelationType) -> Int
 forall a b. (a -> b) -> a -> b
-$ JannoRow -> Maybe JannoStringList
+$ JannoRow -> Maybe (ListColumn JannoRelationType)
 jRelationType JannoRow
-x
-        allSameLength :: Bool
-allSameLength   = [Int] -> Bool
+x
+        allSameLength :: Bool
+allSameLength   = [Int] -> Bool
 forall a. Eq a => [a] -> Bool
 allEqual [Int
-lRelationTo, Int
-lRelationDegree, Int
-lRelationType] Bool -> Bool -> Bool
+lRelationTo, Int
+lRelationDegree, Int
+lRelationType] Bool -> Bool -> Bool
 ||
-                          ([Int] -> Bool
+                          ([Int] -> Bool
 forall a. Eq a => [a] -> Bool
 allEqual [Int
-lRelationTo, Int
-lRelationDegree] Bool -> Bool -> Bool
+lRelationTo, Int
+lRelationDegree] Bool -> Bool -> Bool
 && Int
-lRelationType Int -> Int -> Bool
+lRelationType Int -> Int -> Bool
 forall a. Eq a => a -> a -> Bool
 == Int
 0)
-    in case Bool
-allSameLength of
-        Bool
+    in case Bool
+allSameLength of
+        Bool
 False -> String -> ExceptT String (Writer JannoRowWarnings) JannoRow
 forall a. String -> ExceptT String (Writer JannoRowWarnings) a
 forall e (m :: * -> *) a. MonadError e m => e -> m a
 E.throwError String
 "Relation_To, Relation_Degree and Relation_Type \
                       \do not have the same lengths. Relation_Type can be empty"
-        Bool
+        Bool
 True  -> JannoRow -> ExceptT String (Writer JannoRowWarnings) JannoRow
 forall a. a -> ExceptT String (Writer JannoRowWarnings) a
 forall (m :: * -> *) a. Monad m => a -> m a
 return JannoRow
-x
-
--- deriving with TemplateHaskell necessary for the generics magic in the Survey module
-deriveGeneric ''JannoRow
-
\ No newline at end of file +
x + +-- deriving with TemplateHaskell necessary for the generics magic in the Survey module +deriveGeneric ''JannoRow +
\ No newline at end of file diff --git a/src/Poseidon.MathHelpers.html b/src/Poseidon.MathHelpers.html index 060ce361..b0344ce7 100644 --- a/src/Poseidon.MathHelpers.html +++ b/src/Poseidon.MathHelpers.html @@ -6,9 +6,9 @@ -- | A helper function to calculate the mean of a list of doubles avg :: [Double] -> Double avg :: [Double] -> Double -avg [Double] -xs = let sum_ :: Double -sum_ = (Double -> Double -> Double) -> Double -> [Double] -> Double +avg [Double] +xs = let sum_ :: Double +sum_ = (Double -> Double -> Double) -> Double -> [Double] -> Double forall b a. (b -> a -> b) -> b -> [a] -> b forall (t :: * -> *) b a. Foldable t => @@ -17,9 +17,9 @@ forall a. Num a => a -> a -> a (+) Double 0 [Double] -xs +xs in Double -sum_ Double -> Double -> Double +sum_ Double -> Double -> Double forall a. Fractional a => a -> a -> a / Int -> Double forall a b. (Integral a, Num b) => a -> b @@ -27,39 +27,39 @@ forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [Double] -xs) +xs) -- | A helper function to round doubles roundTo :: Int -> Double -> Double roundTo :: Int -> Double -> Double -roundTo Int -n Double -x = Int -> Double +roundTo Int +n Double +x = Int -> Double forall a b. (Integral a, Num b) => a -> b fromIntegral Int -val Double -> Double -> Double +val Double -> Double -> Double forall a. Fractional a => a -> a -> a / Double -t +t where - val :: Int -val = Double -> Int + val :: Int +val = Double -> Int forall b. Integral b => Double -> b forall a b. (RealFrac a, Integral b) => a -> b round (Double -x Double -> Double -> Double +x Double -> Double -> Double forall a. Num a => a -> a -> a * Double -t) :: Int - t :: Double -t = Double +t) :: Int + t :: Double +t = Double 10Double -> Int -> Double forall a b. (Num a, Integral b) => a -> b -> a ^Int -n +n -- | A helper function to print rounded doubles -roundToStr :: (PrintfArg a, Floating a) => Int -> a -> String +roundToStr :: (PrintfArg a, Floating a) => Int -> a -> String roundToStr :: forall a. (PrintfArg a, Floating a) => Int -> a -> String roundToStr = String -> Int -> a -> String forall r. PrintfType r => String -> r @@ -69,8 +69,8 @@ -- | A helper function to calculate the standard deviation of a list of doubles stdev :: [Double] -> Double stdev :: [Double] -> Double -stdev [Double] -xs = Double -> Double +stdev [Double] +xs = Double -> Double forall a. Floating a => a -> a sqrt (Double -> Double) -> ([Double] -> Double) -> [Double] -> Double forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -82,39 +82,39 @@ forall a b. (a -> b) -> [a] -> [b] map (Double -> Double forall {a}. Num a => a -> a -sq (Double -> Double) -> (Double -> Double) -> Double -> Double +sq (Double -> Double) -> (Double -> Double) -> Double -> Double forall b c a. (b -> c) -> (a -> b) -> a -> c . (-) ([Double] -> Double avg [Double] -xs)) ([Double] -> Double) -> [Double] -> Double +xs)) ([Double] -> Double) -> [Double] -> Double forall a b. (a -> b) -> a -> b $ [Double] -xs +xs where - sq :: a -> a -sq a -x = a -x a -> a -> a + sq :: a -> a +sq a +x = a +x a -> a -> a forall a. Num a => a -> a -> a * a -x +x -- | A helper function to get a nice string with mean and sd for a list of doubles meanAndSdRoundTo :: Int -> [Double] -> String meanAndSdRoundTo :: Int -> [Double] -> String meanAndSdRoundTo Int _ [] = String "no values" -meanAndSdRoundTo Int -n [Double] -xs = Double -> String +meanAndSdRoundTo Int +n [Double] +xs = Double -> String forall a. Show a => a -> String show (Int -> Double -> Double roundTo Int -n (Double -> Double) -> Double -> Double +n (Double -> Double) -> Double -> Double forall a b. (a -> b) -> a -> b $ [Double] -> Double avg [Double] -xs) String -> String -> String +xs) String -> String -> String forall a. [a] -> [a] -> [a] ++ String " ± " String -> String -> String @@ -123,11 +123,11 @@ forall a. Show a => a -> String show (Int -> Double -> Double roundTo Int -n (Double -> Double) -> Double -> Double +n (Double -> Double) -> Double -> Double forall a b. (a -> b) -> a -> b $ [Double] -> Double stdev [Double] -xs) +xs) -- | A helper function to get a nice string with mean and sd for a list of doubles -- (here rounded to integer) @@ -135,11 +135,11 @@ meanAndSdInteger :: [Double] -> String meanAndSdInteger [] = String "no values" -meanAndSdInteger [Double] -xs = Int -> String +meanAndSdInteger [Double] +xs = Int -> String forall a. Show a => a -> String show Int -a String -> String -> String +a String -> String -> String forall a. [a] -> [a] -> [a] ++ String " ± " String -> String -> String @@ -147,24 +147,24 @@ ++ Int -> String forall a. Show a => a -> String show Int -s +s where - a :: Int -a = (Double -> Int + a :: Int +a = (Double -> Int forall b. Integral b => Double -> b forall a b. (RealFrac a, Integral b) => a -> b round (Double -> Int) -> Double -> Int forall a b. (a -> b) -> a -> b $ [Double] -> Double avg [Double] -xs) :: Int - s :: Int -s = (Double -> Int +xs) :: Int + s :: Int +s = (Double -> Int forall b. Integral b => Double -> b forall a b. (RealFrac a, Integral b) => a -> b round (Double -> Int) -> Double -> Int forall a b. (a -> b) -> a -> b $ [Double] -> Double stdev [Double] -xs) :: Int +xs) :: Int \ No newline at end of file diff --git a/src/Poseidon.Package.html b/src/Poseidon.Package.html index 765671e9..dd209d43 100644 --- a/src/Poseidon.Package.html +++ b/src/Poseidon.Package.html @@ -43,108 +43,109 @@ import Poseidon.GenotypeData (GenotypeDataSpec (..), joinEntries, loadGenotypeData, loadIndividuals, printSNPCopyProgress) -import Poseidon.Janno (JannoLibraryBuilt (..), - JannoList (..), JannoRow (..), - JannoRows (..), JannoSex (..), - JannoUDG (..), createMinimalJanno, - getMaybeJannoList, - jannoHeaderString, readJannoFile) -import Poseidon.PoseidonVersion (asVersion, latestPoseidonVersion, - showPoseidonVersion, - validPoseidonVersions) -import Poseidon.SequencingSource (SSFLibraryBuilt (..), SSFUDG (..), - SeqSourceRow (..), - SeqSourceRows (..), - readSeqSourceFile) -import Poseidon.ServerClient (AddJannoColSpec (..), - ExtendedIndividualInfo (..), - GroupInfo (..), PackageInfo (..)) -import Poseidon.Utils (LogA, PoseidonException (..), - PoseidonIO, checkFile, - envErrorLength, envInputPlinkMode, - envLogAction, logDebug, logError, - logInfo, logWarning, logWithEnv, - renderPoseidonException) - -import Control.DeepSeq (($!!)) -import Control.Exception (catch, throwIO) -import Control.Monad (filterM, forM, forM_, unless, void, - when) -import Control.Monad.Catch (MonadThrow, throwM, try) -import Control.Monad.IO.Class (MonadIO, liftIO) -import Data.Aeson (FromJSON, ToJSON, object, - parseJSON, toJSON, withObject, - (.!=), (.:), (.:?), (.=)) -import qualified Data.ByteString as B -import qualified Data.ByteString.Char8 as BSC -import Data.Char (isSpace) -import Data.Csv (toNamedRecord) -import Data.Either (lefts, rights) -import Data.Function (on) -import qualified Data.HashMap.Strict as HM -import Data.List (elemIndex, group, groupBy, - intercalate, nub, sort, sortOn, - (\\)) -import Data.Maybe (catMaybes, fromMaybe, isNothing, - mapMaybe) -import Data.Time (Day, UTCTime (..), getCurrentTime) -import qualified Data.Vector as V -import Data.Version (Version (..), makeVersion) -import Data.Yaml (decodeEither') -import Data.Yaml.Pretty (defConfig, encodePretty, - setConfCompare, setConfDropNull) -import GHC.Generics (Generic) -import Pipes (Pipe, Producer, cat, for, - runEffect, yield, (>->)) -import Pipes.OrderedZip (orderCheckPipe, orderedZip, - orderedZipAll) -import qualified Pipes.Prelude as P -import Pipes.Safe (MonadSafe, runSafeT) -import SequenceFormats.Eigenstrat (EigenstratIndEntry (..), - EigenstratSnpEntry (..), - GenoEntry (..), GenoLine, - readEigenstratSnpFile) -import SequenceFormats.Plink (PlinkPopNameMode (..), readBimFile) -import System.Directory (doesDirectoryExist, listDirectory) -import System.FilePath (takeBaseName, takeDirectory, - takeExtension, takeFileName, (</>)) -import System.IO (IOMode (ReadMode), hGetContents, - withFile) - --- | Internal structure for YAML loading only -data PoseidonYamlStruct = PoseidonYamlStruct - { PoseidonYamlStruct -> Version +import Poseidon.Janno (GeneticSex (..), + JannoLibraryBuilt (..), + JannoRow (..), JannoRows (..), + JannoUDG (..), ListColumn (..), + createMinimalJanno, + getMaybeListColumn, + jannoHeaderString, readJannoFile) +import Poseidon.PoseidonVersion (asVersion, latestPoseidonVersion, + showPoseidonVersion, + validPoseidonVersions) +import Poseidon.SequencingSource (SSFLibraryBuilt (..), SSFUDG (..), + SeqSourceRow (..), + SeqSourceRows (..), + readSeqSourceFile) +import Poseidon.ServerClient (AddJannoColSpec (..), + ExtendedIndividualInfo (..), + GroupInfo (..), PackageInfo (..)) +import Poseidon.Utils (LogA, PoseidonException (..), + PoseidonIO, checkFile, + envErrorLength, envInputPlinkMode, + envLogAction, logDebug, logError, + logInfo, logWarning, logWithEnv, + renderPoseidonException) + +import Control.DeepSeq (($!!)) +import Control.Exception (catch, throwIO) +import Control.Monad (filterM, forM, forM_, unless, void, + when) +import Control.Monad.Catch (MonadThrow, throwM, try) +import Control.Monad.IO.Class (MonadIO, liftIO) +import Data.Aeson (FromJSON, ToJSON, object, + parseJSON, toJSON, withObject, + (.!=), (.:), (.:?), (.=)) +import qualified Data.ByteString as B +import qualified Data.ByteString.Char8 as BSC +import Data.Char (isSpace) +import Data.Csv (toNamedRecord) +import Data.Either (lefts, rights) +import Data.Function (on) +import qualified Data.HashMap.Strict as HM +import Data.List (elemIndex, group, groupBy, + intercalate, nub, sort, sortOn, + (\\)) +import Data.Maybe (catMaybes, fromMaybe, isNothing, + mapMaybe) +import Data.Time (Day, UTCTime (..), getCurrentTime) +import qualified Data.Vector as V +import Data.Version (Version (..), makeVersion) +import Data.Yaml (decodeEither') +import Data.Yaml.Pretty (defConfig, encodePretty, + setConfCompare, setConfDropNull) +import GHC.Generics (Generic) +import Pipes (Pipe, Producer, cat, for, + runEffect, yield, (>->)) +import Pipes.OrderedZip (orderCheckPipe, orderedZip, + orderedZipAll) +import qualified Pipes.Prelude as P +import Pipes.Safe (MonadSafe, runSafeT) +import SequenceFormats.Eigenstrat (EigenstratIndEntry (..), + EigenstratSnpEntry (..), + GenoEntry (..), GenoLine, + readEigenstratSnpFile) +import SequenceFormats.Plink (PlinkPopNameMode (..), readBimFile) +import System.Directory (doesDirectoryExist, listDirectory) +import System.FilePath (takeBaseName, takeDirectory, + takeExtension, takeFileName, (</>)) +import System.IO (IOMode (ReadMode), hGetContents, + withFile) + +-- | Internal structure for YAML loading only +data PoseidonYamlStruct = PoseidonYamlStruct + { PoseidonYamlStruct -> Version _posYamlPoseidonVersion :: Version - , PoseidonYamlStruct -> FilePath + , PoseidonYamlStruct -> FilePath _posYamlTitle :: String - , PoseidonYamlStruct -> Maybe FilePath + , PoseidonYamlStruct -> Maybe FilePath _posYamlDescription :: Maybe String - , PoseidonYamlStruct -> [ContributorSpec] + , PoseidonYamlStruct -> [ContributorSpec] _posYamlContributor :: [ContributorSpec] - , PoseidonYamlStruct -> Maybe Version + , PoseidonYamlStruct -> Maybe Version _posYamlPackageVersion :: Maybe Version - , PoseidonYamlStruct -> Maybe Day + , PoseidonYamlStruct -> Maybe Day _posYamlLastModified :: Maybe Day - , PoseidonYamlStruct -> GenotypeDataSpec + , PoseidonYamlStruct -> GenotypeDataSpec _posYamlGenotypeData :: GenotypeDataSpec - , PoseidonYamlStruct -> Maybe FilePath + , PoseidonYamlStruct -> Maybe FilePath _posYamlJannoFile :: Maybe FilePath - , PoseidonYamlStruct -> Maybe FilePath + , PoseidonYamlStruct -> Maybe FilePath _posYamlJannoFileChkSum :: Maybe String - , PoseidonYamlStruct -> Maybe FilePath + , PoseidonYamlStruct -> Maybe FilePath _posYamlSeqSourceFile :: Maybe FilePath - , PoseidonYamlStruct -> Maybe FilePath + , PoseidonYamlStruct -> Maybe FilePath _posYamlSeqSourceFileChkSum :: Maybe String - , PoseidonYamlStruct -> Maybe FilePath + , PoseidonYamlStruct -> Maybe FilePath _posYamlBibFile :: Maybe FilePath - , PoseidonYamlStruct -> Maybe FilePath + , PoseidonYamlStruct -> Maybe FilePath _posYamlBibFileChkSum :: Maybe String - , PoseidonYamlStruct -> Maybe FilePath + , PoseidonYamlStruct -> Maybe FilePath _posYamlReadmeFile :: Maybe FilePath - , PoseidonYamlStruct -> Maybe FilePath + , PoseidonYamlStruct -> Maybe FilePath _posYamlChangelogFile :: Maybe FilePath - } - deriving (Int -> PoseidonYamlStruct -> ShowS + } + deriving (Int -> PoseidonYamlStruct -> ShowS [PoseidonYamlStruct] -> ShowS PoseidonYamlStruct -> FilePath (Int -> PoseidonYamlStruct -> ShowS) @@ -159,7 +160,7 @@ show :: PoseidonYamlStruct -> FilePath $cshowList :: [PoseidonYamlStruct] -> ShowS showList :: [PoseidonYamlStruct] -> ShowS -Show, PoseidonYamlStruct -> PoseidonYamlStruct -> Bool +Show, PoseidonYamlStruct -> PoseidonYamlStruct -> Bool (PoseidonYamlStruct -> PoseidonYamlStruct -> Bool) -> (PoseidonYamlStruct -> PoseidonYamlStruct -> Bool) -> Eq PoseidonYamlStruct @@ -168,7 +169,7 @@ == :: PoseidonYamlStruct -> PoseidonYamlStruct -> Bool $c/= :: PoseidonYamlStruct -> PoseidonYamlStruct -> Bool /= :: PoseidonYamlStruct -> PoseidonYamlStruct -> Bool -Eq, (forall x. PoseidonYamlStruct -> Rep PoseidonYamlStruct x) +Eq, (forall x. PoseidonYamlStruct -> Rep PoseidonYamlStruct x) -> (forall x. Rep PoseidonYamlStruct x -> PoseidonYamlStruct) -> Generic PoseidonYamlStruct forall x. Rep PoseidonYamlStruct x -> PoseidonYamlStruct @@ -180,65 +181,65 @@ $cto :: forall x. Rep PoseidonYamlStruct x -> PoseidonYamlStruct to :: forall x. Rep PoseidonYamlStruct x -> PoseidonYamlStruct Generic) - -poseidonJannoFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath -poseidonJannoFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath -poseidonJannoFilePath FilePath -baseDir PoseidonYamlStruct -yml = (FilePath -baseDir FilePath -> ShowS + +poseidonJannoFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath +poseidonJannoFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath +poseidonJannoFilePath FilePath +baseDir PoseidonYamlStruct +yml = (FilePath +baseDir FilePath -> ShowS </>) ShowS -> Maybe FilePath -> Maybe FilePath forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> PoseidonYamlStruct -> Maybe FilePath _posYamlJannoFile PoseidonYamlStruct -yml -poseidonSeqSourceFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath -poseidonSeqSourceFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath -poseidonSeqSourceFilePath FilePath -baseDir PoseidonYamlStruct -yml = (FilePath -baseDir FilePath -> ShowS +yml +poseidonSeqSourceFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath +poseidonSeqSourceFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath +poseidonSeqSourceFilePath FilePath +baseDir PoseidonYamlStruct +yml = (FilePath +baseDir FilePath -> ShowS </>) ShowS -> Maybe FilePath -> Maybe FilePath forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> PoseidonYamlStruct -> Maybe FilePath _posYamlSeqSourceFile PoseidonYamlStruct -yml -poseidonBibFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath -poseidonBibFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath -poseidonBibFilePath FilePath -baseDir PoseidonYamlStruct -yml = (FilePath -baseDir FilePath -> ShowS +yml +poseidonBibFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath +poseidonBibFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath +poseidonBibFilePath FilePath +baseDir PoseidonYamlStruct +yml = (FilePath +baseDir FilePath -> ShowS </>) ShowS -> Maybe FilePath -> Maybe FilePath forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> PoseidonYamlStruct -> Maybe FilePath _posYamlBibFile PoseidonYamlStruct -yml -poseidonReadmeFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath -poseidonReadmeFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath -poseidonReadmeFilePath FilePath -baseDir PoseidonYamlStruct -yml = (FilePath -baseDir FilePath -> ShowS +yml +poseidonReadmeFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath +poseidonReadmeFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath +poseidonReadmeFilePath FilePath +baseDir PoseidonYamlStruct +yml = (FilePath +baseDir FilePath -> ShowS </>) ShowS -> Maybe FilePath -> Maybe FilePath forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> PoseidonYamlStruct -> Maybe FilePath _posYamlReadmeFile PoseidonYamlStruct -yml -poseidonChangelogFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath -poseidonChangelogFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath -poseidonChangelogFilePath FilePath -baseDir PoseidonYamlStruct -yml = (FilePath -baseDir FilePath -> ShowS +yml +poseidonChangelogFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath +poseidonChangelogFilePath :: FilePath -> PoseidonYamlStruct -> Maybe FilePath +poseidonChangelogFilePath FilePath +baseDir PoseidonYamlStruct +yml = (FilePath +baseDir FilePath -> ShowS </>) ShowS -> Maybe FilePath -> Maybe FilePath forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> PoseidonYamlStruct -> Maybe FilePath _posYamlChangelogFile PoseidonYamlStruct -yml - -instance FromJSON PoseidonYamlStruct where - parseJSON :: Value -> Parser PoseidonYamlStruct +yml + +instance FromJSON PoseidonYamlStruct where + parseJSON :: Value -> Parser PoseidonYamlStruct parseJSON = FilePath -> (Object -> Parser PoseidonYamlStruct) -> Value @@ -251,8 +252,8 @@ -> Value -> Parser PoseidonYamlStruct forall a b. (a -> b) -> a -> b -$ \Object -v -> Version +$ \Object +v -> Version -> FilePath -> Maybe FilePath -> [ContributorSpec] @@ -269,7 +270,7 @@ -> Maybe FilePath -> PoseidonYamlStruct PoseidonYamlStruct - (Version + (Version -> FilePath -> Maybe FilePath -> [ContributorSpec] @@ -304,11 +305,11 @@ -> PoseidonYamlStruct) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v Object -> Key -> Parser Version +v Object -> Key -> Parser Version forall a. FromJSON a => Object -> Key -> Parser a .: Key "poseidonVersion" - Parser + Parser (FilePath -> Maybe FilePath -> [ContributorSpec] @@ -343,11 +344,11 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser FilePath +v Object -> Key -> Parser FilePath forall a. FromJSON a => Object -> Key -> Parser a .: Key "title" - Parser + Parser (Maybe FilePath -> [ContributorSpec] -> Maybe Version @@ -380,11 +381,11 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe FilePath) +v Object -> Key -> Parser (Maybe FilePath) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "description" - Parser + Parser ([ContributorSpec] -> Maybe Version -> Maybe Day @@ -415,14 +416,14 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe [ContributorSpec]) +v Object -> Key -> Parser (Maybe [ContributorSpec]) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "contributor" Parser (Maybe [ContributorSpec]) -> [ContributorSpec] -> Parser [ContributorSpec] forall a. Parser (Maybe a) -> a -> Parser a .!= [] - Parser + Parser (Maybe Version -> Maybe Day -> GenotypeDataSpec @@ -451,11 +452,11 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe Version) +v Object -> Key -> Parser (Maybe Version) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "packageVersion" - Parser + Parser (Maybe Day -> GenotypeDataSpec -> Maybe FilePath @@ -482,11 +483,11 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe Day) +v Object -> Key -> Parser (Maybe Day) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "lastModified" - Parser + Parser (GenotypeDataSpec -> Maybe FilePath -> Maybe FilePath @@ -511,11 +512,11 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser GenotypeDataSpec +v Object -> Key -> Parser GenotypeDataSpec forall a. FromJSON a => Object -> Key -> Parser a .: Key "genotypeData" - Parser + Parser (Maybe FilePath -> Maybe FilePath -> Maybe FilePath @@ -538,11 +539,11 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe FilePath) +v Object -> Key -> Parser (Maybe FilePath) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "jannoFile" - Parser + Parser (Maybe FilePath -> Maybe FilePath -> Maybe FilePath @@ -563,11 +564,11 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe FilePath) +v Object -> Key -> Parser (Maybe FilePath) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "jannoFileChkSum" - Parser + Parser (Maybe FilePath -> Maybe FilePath -> Maybe FilePath @@ -586,11 +587,11 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe FilePath) +v Object -> Key -> Parser (Maybe FilePath) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "sequencingSourceFile" - Parser + Parser (Maybe FilePath -> Maybe FilePath -> Maybe FilePath @@ -607,11 +608,11 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe FilePath) +v Object -> Key -> Parser (Maybe FilePath) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "sequencingSourceFileChkSum" - Parser + Parser (Maybe FilePath -> Maybe FilePath -> Maybe FilePath @@ -624,11 +625,11 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe FilePath) +v Object -> Key -> Parser (Maybe FilePath) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "bibFile" - Parser + Parser (Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> PoseidonYamlStruct) -> Parser (Maybe FilePath) @@ -636,61 +637,61 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe FilePath) +v Object -> Key -> Parser (Maybe FilePath) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "bibFileChkSum" - Parser (Maybe FilePath -> Maybe FilePath -> PoseidonYamlStruct) + Parser (Maybe FilePath -> Maybe FilePath -> PoseidonYamlStruct) -> Parser (Maybe FilePath) -> Parser (Maybe FilePath -> PoseidonYamlStruct) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe FilePath) +v Object -> Key -> Parser (Maybe FilePath) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "readmeFile" - Parser (Maybe FilePath -> PoseidonYamlStruct) + Parser (Maybe FilePath -> PoseidonYamlStruct) -> Parser (Maybe FilePath) -> Parser PoseidonYamlStruct forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe FilePath) +v Object -> Key -> Parser (Maybe FilePath) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "changelogFile" - -instance ToJSON PoseidonYamlStruct where - toJSON :: PoseidonYamlStruct -> Value -toJSON PoseidonYamlStruct -x = [Pair] -> Value + +instance ToJSON PoseidonYamlStruct where + toJSON :: PoseidonYamlStruct -> Value +toJSON PoseidonYamlStruct +x = [Pair] -> Value object ([Pair] -> Value) -> [Pair] -> Value forall a b. (a -> b) -> a -> b $ [ - Key + Key "poseidonVersion" Key -> Version -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Version _posYamlPoseidonVersion PoseidonYamlStruct -x, - Key +x, + Key "title" Key -> FilePath -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> FilePath _posYamlTitle PoseidonYamlStruct -x, - Key +x, + Key "description" Key -> Maybe FilePath -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlDescription PoseidonYamlStruct -x] [Pair] -> [Pair] -> [Pair] +x] [Pair] -> [Pair] -> [Pair] forall a. [a] -> [a] -> [a] ++ - (if Bool -> Bool + (if Bool -> Bool not (Bool -> Bool) -> Bool -> Bool forall a b. (a -> b) -> a -> b $ [ContributorSpec] -> Bool @@ -698,160 +699,160 @@ forall (t :: * -> *) a. Foldable t => t a -> Bool null (PoseidonYamlStruct -> [ContributorSpec] _posYamlContributor PoseidonYamlStruct -x) then [Key +x) then [Key "contributor" Key -> [ContributorSpec] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> [ContributorSpec] _posYamlContributor PoseidonYamlStruct -x] else []) [Pair] -> [Pair] -> [Pair] +x] else []) [Pair] -> [Pair] -> [Pair] forall a. [a] -> [a] -> [a] ++ - [Key + [Key "packageVersion" Key -> Maybe Version -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe Version _posYamlPackageVersion PoseidonYamlStruct -x, - Key +x, + Key "lastModified" Key -> Maybe Day -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe Day _posYamlLastModified PoseidonYamlStruct -x, - Key +x, + Key "genotypeData" Key -> GenotypeDataSpec -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> GenotypeDataSpec _posYamlGenotypeData PoseidonYamlStruct -x, - Key +x, + Key "jannoFile" Key -> Maybe FilePath -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlJannoFile PoseidonYamlStruct -x, - Key +x, + Key "jannoFileChkSum" Key -> Maybe FilePath -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlJannoFileChkSum PoseidonYamlStruct -x, - Key +x, + Key "sequencingSourceFile" Key -> Maybe FilePath -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlSeqSourceFile PoseidonYamlStruct -x, - Key +x, + Key "sequencingSourceFileChkSum" Key -> Maybe FilePath -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlSeqSourceFileChkSum PoseidonYamlStruct -x, - Key +x, + Key "bibFile" Key -> Maybe FilePath -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlBibFile PoseidonYamlStruct -x, - Key +x, + Key "bibFileChkSum" Key -> Maybe FilePath -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlBibFileChkSum PoseidonYamlStruct -x, - Key +x, + Key "readmeFile" Key -> Maybe FilePath -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlReadmeFile PoseidonYamlStruct -x, - Key +x, + Key "changelogFile" Key -> Maybe FilePath -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlChangelogFile PoseidonYamlStruct -x - ] - -instance HasNameAndVersion PoseidonYamlStruct where - getPacName :: PoseidonYamlStruct -> FilePath -getPacName = PoseidonYamlStruct -> FilePath +x + ] + +instance HasNameAndVersion PoseidonYamlStruct where + getPacName :: PoseidonYamlStruct -> FilePath +getPacName = PoseidonYamlStruct -> FilePath _posYamlTitle - getPacVersion :: PoseidonYamlStruct -> Maybe Version -getPacVersion = PoseidonYamlStruct -> Maybe Version + getPacVersion :: PoseidonYamlStruct -> Maybe Version +getPacVersion = PoseidonYamlStruct -> Maybe Version _posYamlPackageVersion - --- | A data type to represent a Poseidon Package -data PoseidonPackage = PoseidonPackage - { PoseidonPackage -> FilePath + +-- | A data type to represent a Poseidon Package +data PoseidonPackage = PoseidonPackage + { PoseidonPackage -> FilePath posPacBaseDir :: FilePath - -- ^ the base directory of the YAML file - , PoseidonPackage -> Version + -- ^ the base directory of the YAML file + , PoseidonPackage -> Version posPacPoseidonVersion :: Version - -- ^ the version of the package - , PoseidonPackage -> PacNameAndVersion + -- ^ the version of the package + , PoseidonPackage -> PacNameAndVersion posPacNameAndVersion :: PacNameAndVersion - -- ^ the title and version of the package - , PoseidonPackage -> Maybe FilePath + -- ^ the title and version of the package + , PoseidonPackage -> Maybe FilePath posPacDescription :: Maybe String - -- ^ the optional description string of the package - , PoseidonPackage -> [ContributorSpec] + -- ^ the optional description string of the package + , PoseidonPackage -> [ContributorSpec] posPacContributor :: [ContributorSpec] - -- ^ the contributor(s) of the package - , PoseidonPackage -> Maybe Day + -- ^ the contributor(s) of the package + , PoseidonPackage -> Maybe Day posPacLastModified :: Maybe Day - -- ^ the optional date of last update - , PoseidonPackage -> GenotypeDataSpec + -- ^ the optional date of last update + , PoseidonPackage -> GenotypeDataSpec posPacGenotypeData :: GenotypeDataSpec - -- ^ the paths to the genotype files - , PoseidonPackage -> Maybe FilePath + -- ^ the paths to the genotype files + , PoseidonPackage -> Maybe FilePath posPacJannoFile :: Maybe FilePath - -- ^ the path to the janno file - , PoseidonPackage -> JannoRows + -- ^ the path to the janno file + , PoseidonPackage -> JannoRows posPacJanno :: JannoRows - -- ^ the loaded janno file - , PoseidonPackage -> Maybe FilePath + -- ^ the loaded janno file + , PoseidonPackage -> Maybe FilePath posPacJannoFileChkSum :: Maybe String - -- ^ the optional jannofile checksum - , PoseidonPackage -> Maybe FilePath + -- ^ the optional jannofile checksum + , PoseidonPackage -> Maybe FilePath posPacSeqSourceFile :: Maybe FilePath - -- ^ the path to the seqSource file - , PoseidonPackage -> SeqSourceRows + -- ^ the path to the seqSource file + , PoseidonPackage -> SeqSourceRows posPacSeqSource :: SeqSourceRows - -- ^ the loaded seqSource file - , PoseidonPackage -> Maybe FilePath + -- ^ the loaded seqSource file + , PoseidonPackage -> Maybe FilePath posPacSeqSourceFileChkSum :: Maybe String - -- ^ the optional seqSource file checksum - , PoseidonPackage -> Maybe FilePath + -- ^ the optional seqSource file checksum + , PoseidonPackage -> Maybe FilePath posPacBibFile :: Maybe FilePath - -- ^ the path to the BibTeX file - , PoseidonPackage -> BibTeX + -- ^ the path to the BibTeX file + , PoseidonPackage -> BibTeX posPacBib :: BibTeX - -- ^ the loaded bibliography file - , PoseidonPackage -> Maybe FilePath + -- ^ the loaded bibliography file + , PoseidonPackage -> Maybe FilePath posPacBibFileChkSum :: Maybe String - -- ^ the optional bibfile chksum - , PoseidonPackage -> Maybe FilePath + -- ^ the optional bibfile chksum + , PoseidonPackage -> Maybe FilePath posPacReadmeFile :: Maybe FilePath - -- ^ the path to the README file - , PoseidonPackage -> Maybe FilePath + -- ^ the path to the README file + , PoseidonPackage -> Maybe FilePath posPacChangelogFile :: Maybe FilePath - -- ^ the path to the CHANGELOG file - } - deriving (Int -> PoseidonPackage -> ShowS + -- ^ the path to the CHANGELOG file + } + deriving (Int -> PoseidonPackage -> ShowS [PoseidonPackage] -> ShowS PoseidonPackage -> FilePath (Int -> PoseidonPackage -> ShowS) @@ -866,7 +867,7 @@ show :: PoseidonPackage -> FilePath $cshowList :: [PoseidonPackage] -> ShowS showList :: [PoseidonPackage] -> ShowS -Show, PoseidonPackage -> PoseidonPackage -> Bool +Show, PoseidonPackage -> PoseidonPackage -> Bool (PoseidonPackage -> PoseidonPackage -> Bool) -> (PoseidonPackage -> PoseidonPackage -> Bool) -> Eq PoseidonPackage @@ -875,7 +876,7 @@ == :: PoseidonPackage -> PoseidonPackage -> Bool $c/= :: PoseidonPackage -> PoseidonPackage -> Bool /= :: PoseidonPackage -> PoseidonPackage -> Bool -Eq, (forall x. PoseidonPackage -> Rep PoseidonPackage x) +Eq, (forall x. PoseidonPackage -> Rep PoseidonPackage x) -> (forall x. Rep PoseidonPackage x -> PoseidonPackage) -> Generic PoseidonPackage forall x. Rep PoseidonPackage x -> PoseidonPackage @@ -887,29 +888,29 @@ $cto :: forall x. Rep PoseidonPackage x -> PoseidonPackage to :: forall x. Rep PoseidonPackage x -> PoseidonPackage Generic) - -instance Ord PoseidonPackage where - compare :: PoseidonPackage -> PoseidonPackage -> Ordering -compare PoseidonPackage -pacA PoseidonPackage -pacB = (FilePath, Maybe Version) -> (FilePath, Maybe Version) -> Ordering + +instance Ord PoseidonPackage where + compare :: PoseidonPackage -> PoseidonPackage -> Ordering +compare PoseidonPackage +pacA PoseidonPackage +pacB = (FilePath, Maybe Version) -> (FilePath, Maybe Version) -> Ordering forall a. Ord a => a -> a -> Ordering compare (PoseidonPackage -> FilePath forall a. HasNameAndVersion a => a -> FilePath getPacName PoseidonPackage -pacA, PoseidonPackage -> Maybe Version +pacA, PoseidonPackage -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PoseidonPackage -pacA) (PoseidonPackage -> FilePath +pacA) (PoseidonPackage -> FilePath forall a. HasNameAndVersion a => a -> FilePath getPacName PoseidonPackage -pacB, PoseidonPackage -> Maybe Version +pacB, PoseidonPackage -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PoseidonPackage -pacB) - -instance HasNameAndVersion PoseidonPackage where - getPacName :: PoseidonPackage -> FilePath +pacB) + +instance HasNameAndVersion PoseidonPackage where + getPacName :: PoseidonPackage -> FilePath getPacName = PacNameAndVersion -> FilePath forall a. HasNameAndVersion a => a -> FilePath getPacName (PacNameAndVersion -> FilePath) @@ -919,7 +920,7 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . PoseidonPackage -> PacNameAndVersion posPacNameAndVersion - getPacVersion :: PoseidonPackage -> Maybe Version + getPacVersion :: PoseidonPackage -> Maybe Version getPacVersion = PacNameAndVersion -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion (PacNameAndVersion -> Maybe Version) @@ -929,61 +930,61 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . PoseidonPackage -> PacNameAndVersion posPacNameAndVersion - -data PackageReadOptions = PackageReadOptions - { PackageReadOptions -> Bool + +data PackageReadOptions = PackageReadOptions + { PackageReadOptions -> Bool _readOptIgnoreChecksums :: Bool - -- ^ whether to ignore all checksums - , PackageReadOptions -> Bool + -- ^ whether to ignore all checksums + , PackageReadOptions -> Bool _readOptIgnoreGeno :: Bool - -- ^ whether to ignore missing genotype files, useful for developer use cases - , PackageReadOptions -> Bool + -- ^ whether to ignore missing genotype files, useful for developer use cases + , PackageReadOptions -> Bool _readOptGenoCheck :: Bool - -- ^ whether to check the SNPs of the genotypes - , PackageReadOptions -> Bool + -- ^ whether to check the SNPs of the genotypes + , PackageReadOptions -> Bool _readOptFullGeno :: Bool - -- ^ whether to check all SNPs or only the first 100 - , PackageReadOptions -> Bool + -- ^ whether to check all SNPs or only the first 100 + , PackageReadOptions -> Bool _readOptIgnorePosVersion :: Bool - -- ^ whether to ignore the Poseidon version of an input package. - , PackageReadOptions -> Bool + -- ^ whether to ignore the Poseidon version of an input package. + , PackageReadOptions -> Bool _readOptOnlyLatest :: Bool - -- ^ whether to keep multiple versions of the same package (True) or just the latest one (False) - } - --- Even though PlinkPopNameAsFamily is a sensible default, I would like to force the API to demand this explicitly --- from the client caller, since we typically get this as an option from the CLI, and it would be wrong not to explicitly --- pass it on to the package read system. -defaultPackageReadOptions :: PackageReadOptions -defaultPackageReadOptions :: PackageReadOptions + -- ^ whether to keep multiple versions of the same package (True) or just the latest one (False) + } + +-- Even though PlinkPopNameAsFamily is a sensible default, I would like to force the API to demand this explicitly +-- from the client caller, since we typically get this as an option from the CLI, and it would be wrong not to explicitly +-- pass it on to the package read system. +defaultPackageReadOptions :: PackageReadOptions +defaultPackageReadOptions :: PackageReadOptions defaultPackageReadOptions = PackageReadOptions { - _readOptIgnoreChecksums :: Bool + _readOptIgnoreChecksums :: Bool _readOptIgnoreChecksums = Bool False - , _readOptIgnoreGeno :: Bool + , _readOptIgnoreGeno :: Bool _readOptIgnoreGeno = Bool False - , _readOptGenoCheck :: Bool + , _readOptGenoCheck :: Bool _readOptGenoCheck = Bool True - , _readOptFullGeno :: Bool + , _readOptFullGeno :: Bool _readOptFullGeno = Bool False - , _readOptIgnorePosVersion :: Bool + , _readOptIgnorePosVersion :: Bool _readOptIgnorePosVersion = Bool False - , _readOptOnlyLatest :: Bool + , _readOptOnlyLatest :: Bool _readOptOnlyLatest = Bool False - } - -readPoseidonPackageCollection :: PackageReadOptions - -> [FilePath] -- ^ A list of base directories where to search in - -> PoseidonIO [PoseidonPackage] -- ^ A list of returned poseidon packages -readPoseidonPackageCollection :: PackageReadOptions -> [FilePath] -> PoseidonIO [PoseidonPackage] -readPoseidonPackageCollection PackageReadOptions -opts [FilePath] -baseDirs = ([PoseidonPackage], Bool) -> [PoseidonPackage] + } + +readPoseidonPackageCollection :: PackageReadOptions + -> [FilePath] -- ^ A list of base directories where to search in + -> PoseidonIO [PoseidonPackage] -- ^ A list of returned poseidon packages +readPoseidonPackageCollection :: PackageReadOptions -> [FilePath] -> PoseidonIO [PoseidonPackage] +readPoseidonPackageCollection PackageReadOptions +opts [FilePath] +baseDirs = ([PoseidonPackage], Bool) -> [PoseidonPackage] forall a b. (a, b) -> a fst (([PoseidonPackage], Bool) -> [PoseidonPackage]) -> ReaderT Env IO ([PoseidonPackage], Bool) @@ -992,25 +993,25 @@ <$> PackageReadOptions -> [FilePath] -> ReaderT Env IO ([PoseidonPackage], Bool) readPoseidonPackageCollectionWithSkipIndicator PackageReadOptions -opts [FilePath] -baseDirs - --- | a utility function to load all poseidon packages found recursively in multiple base directories. --- This also takes care of smart filtering and duplication checks. Exceptions lead to skipping packages and outputting --- warnings. A flag is returned for whether packages were skipped (needed for validate) -readPoseidonPackageCollectionWithSkipIndicator :: PackageReadOptions - -> [FilePath] -- ^ A list of base directories where to search in - -> PoseidonIO ([PoseidonPackage], Bool) -- ^ A list of returned poseidon packages and a flag for whether packages were skipped -readPoseidonPackageCollectionWithSkipIndicator :: PackageReadOptions +opts [FilePath] +baseDirs + +-- | a utility function to load all poseidon packages found recursively in multiple base directories. +-- This also takes care of smart filtering and duplication checks. Exceptions lead to skipping packages and outputting +-- warnings. A flag is returned for whether packages were skipped (needed for validate) +readPoseidonPackageCollectionWithSkipIndicator :: PackageReadOptions + -> [FilePath] -- ^ A list of base directories where to search in + -> PoseidonIO ([PoseidonPackage], Bool) -- ^ A list of returned poseidon packages and a flag for whether packages were skipped +readPoseidonPackageCollectionWithSkipIndicator :: PackageReadOptions -> [FilePath] -> ReaderT Env IO ([PoseidonPackage], Bool) -readPoseidonPackageCollectionWithSkipIndicator PackageReadOptions -opts [FilePath] -baseDirs = do - FilePath -> PoseidonIO () +readPoseidonPackageCollectionWithSkipIndicator PackageReadOptions +opts [FilePath] +baseDirs = do + FilePath -> PoseidonIO () logInfo FilePath "Checking base directories... " - [FilePath] -goodDirs <- [Maybe FilePath] -> [FilePath] + [FilePath] +goodDirs <- [Maybe FilePath] -> [FilePath] forall a. [Maybe a] -> [a] catMaybes ([Maybe FilePath] -> [FilePath]) -> ReaderT Env IO [Maybe FilePath] -> ReaderT Env IO [FilePath] @@ -1022,13 +1023,13 @@ (a -> m b) -> t a -> m (t b) forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b] mapM FilePath -> ReaderT Env IO (Maybe FilePath) -checkIfBaseDirExists [FilePath] -baseDirs - FilePath -> PoseidonIO () +checkIfBaseDirExists [FilePath] +baseDirs + FilePath -> PoseidonIO () logInfo FilePath "Searching POSEIDON.yml files... " - [FilePath] -posFilesAllVersions <- IO [FilePath] -> ReaderT Env IO [FilePath] + [FilePath] +posFilesAllVersions <- IO [FilePath] -> ReaderT Env IO [FilePath] forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO [FilePath] -> ReaderT Env IO [FilePath]) @@ -1045,8 +1046,8 @@ forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b] mapM FilePath -> IO [FilePath] findAllPoseidonYmlFiles [FilePath] -goodDirs - FilePath -> PoseidonIO () +goodDirs + FilePath -> PoseidonIO () logInfo (FilePath -> PoseidonIO ()) -> FilePath -> PoseidonIO () forall a b. (a -> b) -> a -> b $ Int -> FilePath @@ -1055,31 +1056,31 @@ forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [FilePath] -posFilesAllVersions) FilePath -> ShowS +posFilesAllVersions) FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath " found" - [FilePath] -posFiles <- if PackageReadOptions -> Bool + [FilePath] +posFiles <- if PackageReadOptions -> Bool _readOptIgnorePosVersion PackageReadOptions -opts - then [FilePath] -> ReaderT Env IO [FilePath] +opts + then [FilePath] -> ReaderT Env IO [FilePath] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return [FilePath] -posFilesAllVersions - else do - FilePath -> PoseidonIO () +posFilesAllVersions + else do + FilePath -> PoseidonIO () logInfo FilePath "Checking Poseidon versions... " - [FilePath] -> ReaderT Env IO [FilePath] -filterByPoseidonVersion [FilePath] -posFilesAllVersions - FilePath -> PoseidonIO () + [FilePath] -> ReaderT Env IO [FilePath] +filterByPoseidonVersion [FilePath] +posFilesAllVersions + FilePath -> PoseidonIO () logInfo FilePath "Initializing packages... " - [Either PoseidonException PoseidonPackage] -eitherPackages <- ((Integer, FilePath) + [Either PoseidonException PoseidonPackage] +eitherPackages <- ((Integer, FilePath) -> ReaderT Env IO (Either PoseidonException PoseidonPackage)) -> [(Integer, FilePath)] -> ReaderT Env IO [Either PoseidonException PoseidonPackage] @@ -1089,7 +1090,7 @@ forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b] mapM (Integer, FilePath) -> ReaderT Env IO (Either PoseidonException PoseidonPackage) -tryDecodePoseidonPackage ([(Integer, FilePath)] +tryDecodePoseidonPackage ([(Integer, FilePath)] -> ReaderT Env IO [Either PoseidonException PoseidonPackage]) -> [(Integer, FilePath)] -> ReaderT Env IO [Either PoseidonException PoseidonPackage] @@ -1098,10 +1099,10 @@ forall a b. [a] -> [b] -> [(a, b)] zip [Integer 1..] [FilePath] -posFiles - -- notifying the users of package problems - Bool -skipIndicator <- if ([PoseidonException] -> Bool +posFiles + -- notifying the users of package problems + Bool +skipIndicator <- if ([PoseidonException] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null ([PoseidonException] -> Bool) @@ -1116,15 +1117,15 @@ -> [Either PoseidonException PoseidonPackage] -> Bool forall a b. (a -> b) -> a -> b $ [Either PoseidonException PoseidonPackage] -eitherPackages) then Bool -> ReaderT Env IO Bool +eitherPackages) then Bool -> ReaderT Env IO Bool forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return Bool False else do - FilePath -> PoseidonIO () + FilePath -> PoseidonIO () logWarning FilePath "Some packages were skipped due to issues:" - [(FilePath, Either PoseidonException PoseidonPackage)] + [(FilePath, Either PoseidonException PoseidonPackage)] -> ((FilePath, Either PoseidonException PoseidonPackage) -> PoseidonIO ()) -> PoseidonIO () @@ -1136,60 +1137,60 @@ -> [(FilePath, Either PoseidonException PoseidonPackage)] forall a b. [a] -> [b] -> [(a, b)] zip [FilePath] -posFiles [Either PoseidonException PoseidonPackage] -eitherPackages) (((FilePath, Either PoseidonException PoseidonPackage) +posFiles [Either PoseidonException PoseidonPackage] +eitherPackages) (((FilePath, Either PoseidonException PoseidonPackage) -> PoseidonIO ()) -> PoseidonIO ()) -> ((FilePath, Either PoseidonException PoseidonPackage) -> PoseidonIO ()) -> PoseidonIO () forall a b. (a -> b) -> a -> b -$ \(FilePath -posF, Either PoseidonException PoseidonPackage -epac) -> do - case Either PoseidonException PoseidonPackage -epac of - Left PoseidonException -e -> do - FilePath -> PoseidonIO () +$ \(FilePath +posF, Either PoseidonException PoseidonPackage +epac) -> do + case Either PoseidonException PoseidonPackage +epac of + Left PoseidonException +e -> do + FilePath -> PoseidonIO () logWarning (FilePath -> PoseidonIO ()) -> FilePath -> PoseidonIO () forall a b. (a -> b) -> a -> b $ FilePath "In the package described in " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath -posF FilePath -> ShowS +posF FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath ":" - FilePath -> PoseidonIO () + FilePath -> PoseidonIO () logWarning (FilePath -> PoseidonIO ()) -> FilePath -> PoseidonIO () forall a b. (a -> b) -> a -> b $ PoseidonException -> FilePath renderPoseidonException PoseidonException -e - Either PoseidonException PoseidonPackage +e + Either PoseidonException PoseidonPackage _ -> () -> PoseidonIO () forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return () - Bool -> ReaderT Env IO Bool + Bool -> ReaderT Env IO Bool forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return Bool True - let loadedPackages :: [PoseidonPackage] -loadedPackages = [Either PoseidonException PoseidonPackage] -> [PoseidonPackage] + let loadedPackages :: [PoseidonPackage] +loadedPackages = [Either PoseidonException PoseidonPackage] -> [PoseidonPackage] forall a b. [Either a b] -> [b] rights [Either PoseidonException PoseidonPackage] -eitherPackages - -- filter the package list to only latest packages, if this is requested - [PoseidonPackage] -filteredPackageList <- - if PackageReadOptions -> Bool +eitherPackages + -- filter the package list to only latest packages, if this is requested + [PoseidonPackage] +filteredPackageList <- + if PackageReadOptions -> Bool _readOptOnlyLatest PackageReadOptions -opts - then (PoseidonPackage -> ReaderT Env IO Bool) +opts + then (PoseidonPackage -> ReaderT Env IO Bool) -> [PoseidonPackage] -> PoseidonIO [PoseidonPackage] forall (m :: * -> *) a. Applicative m => @@ -1199,19 +1200,19 @@ (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [PoseidonPackage] -loadedPackages) [PoseidonPackage] -loadedPackages - else [PoseidonPackage] -> PoseidonIO [PoseidonPackage] +loadedPackages) [PoseidonPackage] +loadedPackages + else [PoseidonPackage] -> PoseidonIO [PoseidonPackage] forall a. a -> ReaderT Env IO a forall (f :: * -> *) a. Applicative f => a -> f a pure ([PoseidonPackage] -> PoseidonIO [PoseidonPackage]) -> [PoseidonPackage] -> PoseidonIO [PoseidonPackage] forall a b. (a -> b) -> a -> b $ [PoseidonPackage] -loadedPackages - -- check if any packages appear more than once - let duplicateGroups :: [[PoseidonPackage]] -duplicateGroups = ([PoseidonPackage] -> Bool) +loadedPackages + -- check if any packages appear more than once + let duplicateGroups :: [[PoseidonPackage]] +duplicateGroups = ([PoseidonPackage] -> Bool) -> [[PoseidonPackage]] -> [[PoseidonPackage]] forall a. (a -> Bool) -> [a] -> [a] filter ((Int -> Int -> Bool @@ -1224,7 +1225,7 @@ forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length) - ([[PoseidonPackage]] -> [[PoseidonPackage]]) + ([[PoseidonPackage]] -> [[PoseidonPackage]]) -> ([PoseidonPackage] -> [[PoseidonPackage]]) -> [PoseidonPackage] -> [[PoseidonPackage]] @@ -1232,18 +1233,18 @@ . (PoseidonPackage -> PoseidonPackage -> Bool) -> [PoseidonPackage] -> [[PoseidonPackage]] forall a. (a -> a -> Bool) -> [a] -> [[a]] -groupBy (\PoseidonPackage -a PoseidonPackage -b -> PoseidonPackage -> PacNameAndVersion +groupBy (\PoseidonPackage +a PoseidonPackage +b -> PoseidonPackage -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion PoseidonPackage -a PacNameAndVersion -> PacNameAndVersion -> Bool +a PacNameAndVersion -> PacNameAndVersion -> Bool forall a. Eq a => a -> a -> Bool == PoseidonPackage -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion PoseidonPackage -b) - ([PoseidonPackage] -> [[PoseidonPackage]]) +b) + ([PoseidonPackage] -> [[PoseidonPackage]]) -> ([PoseidonPackage] -> [PoseidonPackage]) -> [PoseidonPackage] -> [[PoseidonPackage]] @@ -1257,31 +1258,31 @@ -> [PoseidonPackage] -> [[PoseidonPackage]] forall a b. (a -> b) -> a -> b $ [PoseidonPackage] -filteredPackageList - Bool -> PoseidonIO () -> PoseidonIO () +filteredPackageList + Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless ([[PoseidonPackage]] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [[PoseidonPackage]] -duplicateGroups) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +duplicateGroups) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do - FilePath -> PoseidonIO () + FilePath -> PoseidonIO () logError FilePath "There are duplicated packages in this package collection:" - [[PoseidonPackage]] + [[PoseidonPackage]] -> ([PoseidonPackage] -> ReaderT Env IO Any) -> PoseidonIO () forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [[PoseidonPackage]] -duplicateGroups (([PoseidonPackage] -> ReaderT Env IO Any) -> PoseidonIO ()) +duplicateGroups (([PoseidonPackage] -> ReaderT Env IO Any) -> PoseidonIO ()) -> ([PoseidonPackage] -> ReaderT Env IO Any) -> PoseidonIO () forall a b. (a -> b) -> a -> b -$ \[PoseidonPackage] -xs -> do - FilePath -> PoseidonIO () +$ \[PoseidonPackage] +xs -> do + FilePath -> PoseidonIO () logError (FilePath -> PoseidonIO ()) -> FilePath -> PoseidonIO () forall a b. (a -> b) -> a -> b $ FilePath @@ -1296,22 +1297,22 @@ $ [PoseidonPackage] -> PoseidonPackage forall a. HasCallStack => [a] -> a head [PoseidonPackage] -xs) FilePath -> ShowS +xs) FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath " found at" - [PoseidonPackage] + [PoseidonPackage] -> (PoseidonPackage -> PoseidonIO ()) -> PoseidonIO () forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [PoseidonPackage] -xs ((PoseidonPackage -> PoseidonIO ()) -> PoseidonIO ()) +xs ((PoseidonPackage -> PoseidonIO ()) -> PoseidonIO ()) -> (PoseidonPackage -> PoseidonIO ()) -> PoseidonIO () forall a b. (a -> b) -> a -> b -$ \PoseidonPackage -x -> do - FilePath -> PoseidonIO () +$ \PoseidonPackage +x -> do + FilePath -> PoseidonIO () logError (FilePath -> PoseidonIO ()) -> FilePath -> PoseidonIO () forall a b. (a -> b) -> a -> b $ FilePath @@ -1319,8 +1320,8 @@ forall a. [a] -> [a] -> [a] ++ PoseidonPackage -> FilePath posPacBaseDir PoseidonPackage -x - PoseidonException -> ReaderT Env IO Any +x + PoseidonException -> ReaderT Env IO Any forall e a. Exception e => e -> ReaderT Env IO a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (PoseidonException -> ReaderT Env IO Any) @@ -1333,13 +1334,13 @@ forall a b. (a -> b) -> a -> b $ FilePath "Detected duplicate packages." - -- report number of valid packages - let finalPackageList :: [PoseidonPackage] -finalPackageList = [PoseidonPackage] -> [PoseidonPackage] + -- report number of valid packages + let finalPackageList :: [PoseidonPackage] +finalPackageList = [PoseidonPackage] -> [PoseidonPackage] forall a. Ord a => [a] -> [a] sort [PoseidonPackage] -filteredPackageList - FilePath -> PoseidonIO () +filteredPackageList + FilePath -> PoseidonIO () logInfo (FilePath -> PoseidonIO ()) -> FilePath -> PoseidonIO () forall a b. (a -> b) -> a -> b $ FilePath @@ -1356,40 +1357,40 @@ length ([PoseidonPackage] -> FilePath) -> [PoseidonPackage] -> FilePath forall a b. (a -> b) -> a -> b $ [PoseidonPackage] -finalPackageList) - -- return package list - ([PoseidonPackage], Bool) +finalPackageList) + -- return package list + ([PoseidonPackage], Bool) -> ReaderT Env IO ([PoseidonPackage], Bool) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return ([PoseidonPackage] -finalPackageList, Bool -skipIndicator) - where - checkIfBaseDirExists :: FilePath -> PoseidonIO (Maybe FilePath) - checkIfBaseDirExists :: FilePath -> ReaderT Env IO (Maybe FilePath) -checkIfBaseDirExists FilePath -p = do - Bool -exists <- IO Bool -> ReaderT Env IO Bool +finalPackageList, Bool +skipIndicator) + where + checkIfBaseDirExists :: FilePath -> PoseidonIO (Maybe FilePath) + checkIfBaseDirExists :: FilePath -> ReaderT Env IO (Maybe FilePath) +checkIfBaseDirExists FilePath +p = do + Bool +exists <- IO Bool -> ReaderT Env IO Bool forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO Bool -> ReaderT Env IO Bool) -> IO Bool -> ReaderT Env IO Bool forall a b. (a -> b) -> a -> b $ FilePath -> IO Bool doesDirectoryExist FilePath -p - if Bool -exists - then Maybe FilePath -> ReaderT Env IO (Maybe FilePath) +p + if Bool +exists + then Maybe FilePath -> ReaderT Env IO (Maybe FilePath) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return (FilePath -> Maybe FilePath forall a. a -> Maybe a Just FilePath -p) - else do - FilePath -> PoseidonIO () +p) + else do + FilePath -> PoseidonIO () logWarning (FilePath -> PoseidonIO ()) -> FilePath -> PoseidonIO () forall a b. (a -> b) -> a -> b $ FilePath @@ -1398,22 +1399,22 @@ ++ ShowS forall a. Show a => a -> FilePath show FilePath -p FilePath -> ShowS +p FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath " does not exist" - Maybe FilePath -> ReaderT Env IO (Maybe FilePath) + Maybe FilePath -> ReaderT Env IO (Maybe FilePath) forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return Maybe FilePath forall a. Maybe a Nothing - filterByPoseidonVersion :: [FilePath] -> PoseidonIO [FilePath] - filterByPoseidonVersion :: [FilePath] -> ReaderT Env IO [FilePath] -filterByPoseidonVersion [FilePath] -posFiles = do - [Either PoseidonException FilePath] -eitherPaths <- IO [Either PoseidonException FilePath] + filterByPoseidonVersion :: [FilePath] -> PoseidonIO [FilePath] + filterByPoseidonVersion :: [FilePath] -> ReaderT Env IO [FilePath] +filterByPoseidonVersion [FilePath] +posFiles = do + [Either PoseidonException FilePath] +eitherPaths <- IO [Either PoseidonException FilePath] -> ReaderT Env IO [Either PoseidonException FilePath] forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -1429,9 +1430,9 @@ (a -> m b) -> t a -> m (t b) forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b] mapM FilePath -> IO (Either PoseidonException FilePath) -isInVersionRange [FilePath] -posFiles - (PoseidonException -> PoseidonIO ()) +isInVersionRange [FilePath] +posFiles + (PoseidonException -> PoseidonIO ()) -> [PoseidonException] -> PoseidonIO () forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => @@ -1449,8 +1450,8 @@ $ [Either PoseidonException FilePath] -> [PoseidonException] forall a b. [Either a b] -> [a] lefts [Either PoseidonException FilePath] -eitherPaths - [FilePath] -> ReaderT Env IO [FilePath] +eitherPaths + [FilePath] -> ReaderT Env IO [FilePath] forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return ([FilePath] -> ReaderT Env IO [FilePath]) @@ -1459,25 +1460,25 @@ $ [Either PoseidonException FilePath] -> [FilePath] forall a b. [Either a b] -> [b] rights [Either PoseidonException FilePath] -eitherPaths - where - isInVersionRange :: FilePath -> IO (Either PoseidonException FilePath) - isInVersionRange :: FilePath -> IO (Either PoseidonException FilePath) -isInVersionRange FilePath -posFile = do - FilePath -content <- FilePath -> IO FilePath -readFile' FilePath -posFile - let posLines :: [FilePath] -posLines = FilePath -> [FilePath] +eitherPaths + where + isInVersionRange :: FilePath -> IO (Either PoseidonException FilePath) + isInVersionRange :: FilePath -> IO (Either PoseidonException FilePath) +isInVersionRange FilePath +posFile = do + FilePath +content <- FilePath -> IO FilePath +readFile' FilePath +posFile + let posLines :: [FilePath] +posLines = FilePath -> [FilePath] lines FilePath -content - -- This implementation only works with a true YAML file. - -- But technically also JSON is YAML. If somebody prepares - -- a POSEIDON.yml file in JSON format, a wrong version - -- can not be caught. - case FilePath -> [FilePath] -> Maybe Int +content + -- This implementation only works with a true YAML file. + -- But technically also JSON is YAML. If somebody prepares + -- a POSEIDON.yml file in JSON format, a wrong version + -- can not be caught. + case FilePath -> [FilePath] -> Maybe Int forall a. Eq a => a -> [a] -> Maybe Int elemIndex FilePath "poseidonVersion:" (ShowS -> [FilePath] -> [FilePath] @@ -1486,8 +1487,8 @@ forall a. Int -> [a] -> [a] take Int 16) [FilePath] -posLines) of - Maybe Int +posLines) of + Maybe Int Nothing -> Either PoseidonException FilePath -> IO (Either PoseidonException FilePath) forall a. a -> IO a @@ -1504,17 +1505,17 @@ forall a b. (a -> b) -> a -> b $ FilePath -> PoseidonException PoseidonPackageMissingVersionException FilePath -posFile - Just Int -n -> do - let versionLine :: FilePath -versionLine = [FilePath] -posLines [FilePath] -> Int -> FilePath +posFile + Just Int +n -> do + let versionLine :: FilePath +versionLine = [FilePath] +posLines [FilePath] -> Int -> FilePath forall a. HasCallStack => [a] -> Int -> a !! Int -n - versionString :: FilePath -versionString = (Char -> Bool) -> ShowS +n + versionString :: FilePath +versionString = (Char -> Bool) -> ShowS forall a. (a -> Bool) -> [a] -> [a] filter (Bool -> Bool not (Bool -> Bool) -> (Char -> Bool) -> Char -> Bool @@ -1526,9 +1527,9 @@ forall a. Int -> [a] -> [a] drop Int 16 FilePath -versionLine - if FilePath -versionString FilePath -> [FilePath] -> Bool +versionLine + if FilePath +versionString FilePath -> [FilePath] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` (PoseidonVersion -> FilePath) -> [PoseidonVersion] -> [FilePath] @@ -1536,7 +1537,7 @@ map PoseidonVersion -> FilePath showPoseidonVersion [PoseidonVersion] validPoseidonVersions - then Either PoseidonException FilePath + then Either PoseidonException FilePath -> IO (Either PoseidonException FilePath) forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -1548,8 +1549,8 @@ $ FilePath -> Either PoseidonException FilePath forall a b. b -> Either a b Right FilePath -posFile - else Either PoseidonException FilePath +posFile + else Either PoseidonException FilePath -> IO (Either PoseidonException FilePath) forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -1565,25 +1566,25 @@ forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonPackageVersionException FilePath -posFile FilePath -versionString - readFile' :: FilePath -> IO String - readFile' :: FilePath -> IO FilePath -readFile' FilePath -filename = FilePath -> IOMode -> (Handle -> IO FilePath) -> IO FilePath +posFile FilePath +versionString + readFile' :: FilePath -> IO String + readFile' :: FilePath -> IO FilePath +readFile' FilePath +filename = FilePath -> IOMode -> (Handle -> IO FilePath) -> IO FilePath forall r. FilePath -> IOMode -> (Handle -> IO r) -> IO r withFile FilePath -filename IOMode +filename IOMode ReadMode ((Handle -> IO FilePath) -> IO FilePath) -> (Handle -> IO FilePath) -> IO FilePath forall a b. (a -> b) -> a -> b -$ \Handle -handle -> do - FilePath -theContent <- Handle -> IO FilePath +$ \Handle +handle -> do + FilePath +theContent <- Handle -> IO FilePath hGetContents Handle -handle - (Char -> IO Char) -> FilePath -> IO FilePath +handle + (Char -> IO Char) -> FilePath -> IO FilePath forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) @@ -1592,14 +1593,14 @@ forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return FilePath -theContent - tryDecodePoseidonPackage :: (Integer, FilePath) -> PoseidonIO (Either PoseidonException PoseidonPackage) - tryDecodePoseidonPackage :: (Integer, FilePath) +theContent + tryDecodePoseidonPackage :: (Integer, FilePath) -> PoseidonIO (Either PoseidonException PoseidonPackage) + tryDecodePoseidonPackage :: (Integer, FilePath) -> ReaderT Env IO (Either PoseidonException PoseidonPackage) -tryDecodePoseidonPackage (Integer -numberPackage, FilePath -path) = do - FilePath -> PoseidonIO () +tryDecodePoseidonPackage (Integer +numberPackage, FilePath +path) = do + FilePath -> PoseidonIO () logDebug (FilePath -> PoseidonIO ()) -> FilePath -> PoseidonIO () forall a b. (a -> b) -> a -> b $ FilePath @@ -1608,14 +1609,14 @@ ++ Integer -> FilePath forall a. Show a => a -> FilePath show Integer -numberPackage FilePath -> ShowS +numberPackage FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath ": " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath -path - ReaderT Env IO PoseidonPackage +path + ReaderT Env IO PoseidonPackage -> ReaderT Env IO (Either PoseidonException PoseidonPackage) forall (m :: * -> *) e a. (MonadCatch m, Exception e) => @@ -1628,29 +1629,29 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . PackageReadOptions -> FilePath -> ReaderT Env IO PoseidonPackage readPoseidonPackage PackageReadOptions -opts (FilePath +opts (FilePath -> ReaderT Env IO (Either PoseidonException PoseidonPackage)) -> FilePath -> ReaderT Env IO (Either PoseidonException PoseidonPackage) forall a b. (a -> b) -> a -> b $ FilePath -path - --- | A function to read in a poseidon package from a YAML file. Note that this function calls the addFullPaths function to --- make paths absolute. -readPoseidonPackage :: PackageReadOptions - -> FilePath -- ^ the file path to the yaml file - -> PoseidonIO PoseidonPackage -- ^ the returning package returned in the IO monad. -readPoseidonPackage :: PackageReadOptions -> FilePath -> ReaderT Env IO PoseidonPackage -readPoseidonPackage PackageReadOptions -opts FilePath -ymlPath = do - let baseDir :: FilePath -baseDir = ShowS +path + +-- | A function to read in a poseidon package from a YAML file. Note that this function calls the addFullPaths function to +-- make paths absolute. +readPoseidonPackage :: PackageReadOptions + -> FilePath -- ^ the file path to the yaml file + -> PoseidonIO PoseidonPackage -- ^ the returning package returned in the IO monad. +readPoseidonPackage :: PackageReadOptions -> FilePath -> ReaderT Env IO PoseidonPackage +readPoseidonPackage PackageReadOptions +opts FilePath +ymlPath = do + let baseDir :: FilePath +baseDir = ShowS takeDirectory FilePath -ymlPath - ByteString -bs <- IO ByteString -> ReaderT Env IO ByteString +ymlPath + ByteString +bs <- IO ByteString -> ReaderT Env IO ByteString forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO ByteString -> ReaderT Env IO ByteString) @@ -1658,31 +1659,31 @@ forall a b. (a -> b) -> a -> b $ FilePath -> IO ByteString B.readFile FilePath -ymlPath - - -- read yml files - yml :: PoseidonYamlStruct -yml@(PoseidonYamlStruct Version -ver FilePath -tit Maybe FilePath -des [ContributorSpec] -con Maybe Version -pacVer Maybe Day -mod_ GenotypeDataSpec -geno Maybe FilePath -jannoF Maybe FilePath -jannoC Maybe FilePath -seqSourceF Maybe FilePath -seqSourceC Maybe FilePath -bibF Maybe FilePath -bibC Maybe FilePath -readF Maybe FilePath -changeF) <- case ByteString -> Either ParseException PoseidonYamlStruct +ymlPath + + -- read yml files + yml :: PoseidonYamlStruct +yml@(PoseidonYamlStruct Version +ver FilePath +tit Maybe FilePath +des [ContributorSpec] +con Maybe Version +pacVer Maybe Day +mod_ GenotypeDataSpec +geno Maybe FilePath +jannoF Maybe FilePath +jannoC Maybe FilePath +seqSourceF Maybe FilePath +seqSourceC Maybe FilePath +bibF Maybe FilePath +bibC Maybe FilePath +readF Maybe FilePath +changeF) <- case ByteString -> Either ParseException PoseidonYamlStruct forall a. FromJSON a => ByteString -> Either ParseException a decodeEither' ByteString -bs of - Left ParseException -err -> PoseidonException -> ReaderT Env IO PoseidonYamlStruct +bs of + Left ParseException +err -> PoseidonException -> ReaderT Env IO PoseidonYamlStruct forall e a. Exception e => e -> ReaderT Env IO a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (PoseidonException -> ReaderT Env IO PoseidonYamlStruct) @@ -1690,47 +1691,47 @@ forall a b. (a -> b) -> a -> b $ FilePath -> ParseException -> PoseidonException PoseidonYamlParseException FilePath -ymlPath ParseException -err - Right PoseidonYamlStruct -pac -> PoseidonYamlStruct -> ReaderT Env IO PoseidonYamlStruct +ymlPath ParseException +err + Right PoseidonYamlStruct +pac -> PoseidonYamlStruct -> ReaderT Env IO PoseidonYamlStruct forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonYamlStruct -pac - PoseidonYamlStruct -> PoseidonIO () +pac + PoseidonYamlStruct -> PoseidonIO () checkYML PoseidonYamlStruct -yml - - -- file existence and checksum test - IO () -> PoseidonIO () +yml + + -- file existence and checksum test + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ FilePath -> Bool -> Bool -> PoseidonYamlStruct -> IO () checkFiles FilePath -baseDir (PackageReadOptions -> Bool +baseDir (PackageReadOptions -> Bool _readOptIgnoreChecksums PackageReadOptions -opts) (PackageReadOptions -> Bool +opts) (PackageReadOptions -> Bool _readOptIgnoreGeno PackageReadOptions -opts) PoseidonYamlStruct -yml - - -- read janno (or fill with empty dummy object) - [EigenstratIndEntry] -indEntries <- FilePath -> GenotypeDataSpec -> PoseidonIO [EigenstratIndEntry] +opts) PoseidonYamlStruct +yml + + -- read janno (or fill with empty dummy object) + [EigenstratIndEntry] +indEntries <- FilePath -> GenotypeDataSpec -> PoseidonIO [EigenstratIndEntry] loadIndividuals FilePath -baseDir GenotypeDataSpec -geno - JannoRows -janno <- case FilePath -> PoseidonYamlStruct -> Maybe FilePath +baseDir GenotypeDataSpec +geno + JannoRows +janno <- case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonJannoFilePath FilePath -baseDir PoseidonYamlStruct -yml of - Maybe FilePath +baseDir PoseidonYamlStruct +yml of + Maybe FilePath Nothing -> do - JannoRows -> ReaderT Env IO JannoRows + JannoRows -> ReaderT Env IO JannoRows forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return (JannoRows -> ReaderT Env IO JannoRows) @@ -1738,65 +1739,65 @@ forall a b. (a -> b) -> a -> b $ [EigenstratIndEntry] -> JannoRows createMinimalJanno [EigenstratIndEntry] -indEntries - Just FilePath -p -> do - JannoRows -loadedJanno <- FilePath -> ReaderT Env IO JannoRows +indEntries + Just FilePath +p -> do + JannoRows +loadedJanno <- FilePath -> ReaderT Env IO JannoRows readJannoFile FilePath -p - IO () -> PoseidonIO () +p + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ FilePath -> JannoRows -> [EigenstratIndEntry] -> IO () checkJannoIndConsistency FilePath -tit JannoRows -loadedJanno [EigenstratIndEntry] -indEntries - JannoRows -> ReaderT Env IO JannoRows +tit JannoRows +loadedJanno [EigenstratIndEntry] +indEntries + JannoRows -> ReaderT Env IO JannoRows forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return JannoRows -loadedJanno - - -- read seqSource - SeqSourceRows -seqSource <- case FilePath -> PoseidonYamlStruct -> Maybe FilePath +loadedJanno + + -- read seqSource + SeqSourceRows +seqSource <- case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonSeqSourceFilePath FilePath -baseDir PoseidonYamlStruct -yml of - Maybe FilePath +baseDir PoseidonYamlStruct +yml of + Maybe FilePath Nothing -> SeqSourceRows -> ReaderT Env IO SeqSourceRows forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return SeqSourceRows forall a. Monoid a => a mempty - Just FilePath -p -> FilePath -> ReaderT Env IO SeqSourceRows + Just FilePath +p -> FilePath -> ReaderT Env IO SeqSourceRows readSeqSourceFile FilePath -p - FilePath -> SeqSourceRows -> JannoRows -> PoseidonIO () +p + FilePath -> SeqSourceRows -> JannoRows -> PoseidonIO () checkSeqSourceJannoConsistency FilePath -tit SeqSourceRows -seqSource JannoRows -janno - - -- read bib (or fill with empty list) - BibTeX -bib <- case FilePath -> PoseidonYamlStruct -> Maybe FilePath +tit SeqSourceRows +seqSource JannoRows +janno + + -- read bib (or fill with empty list) + BibTeX +bib <- case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonBibFilePath FilePath -baseDir PoseidonYamlStruct -yml of - Maybe FilePath +baseDir PoseidonYamlStruct +yml of + Maybe FilePath Nothing -> BibTeX -> ReaderT Env IO BibTeX forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return ([] :: BibTeX) - Just FilePath -p -> IO BibTeX -> ReaderT Env IO BibTeX + Just FilePath +p -> IO BibTeX -> ReaderT Env IO BibTeX forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO BibTeX -> ReaderT Env IO BibTeX) @@ -1804,37 +1805,37 @@ forall a b. (a -> b) -> a -> b $ FilePath -> IO BibTeX readBibTeXFile FilePath -p - IO () -> PoseidonIO () +p + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ FilePath -> JannoRows -> BibTeX -> IO () checkJannoBibConsistency FilePath -tit JannoRows -janno BibTeX -bib - - Bool -> PoseidonIO () -> PoseidonIO () +tit JannoRows +janno BibTeX +bib + + Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (PackageReadOptions -> Bool _readOptFullGeno PackageReadOptions -opts) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +opts) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do - FilePath -> PoseidonIO () + FilePath -> PoseidonIO () logInfo (FilePath -> PoseidonIO ()) -> FilePath -> PoseidonIO () forall a b. (a -> b) -> a -> b $ FilePath "Trying to parse genotype data for package: " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath -tit - - -- create PoseidonPackage - let pac :: PoseidonPackage -pac = FilePath +tit + + -- create PoseidonPackage + let pac :: PoseidonPackage +pac = FilePath -> Version -> PacNameAndVersion -> Maybe FilePath @@ -1854,70 +1855,70 @@ -> Maybe FilePath -> PoseidonPackage PoseidonPackage FilePath -baseDir Version -ver (FilePath -> Maybe Version -> PacNameAndVersion +baseDir Version +ver (FilePath -> Maybe Version -> PacNameAndVersion PacNameAndVersion FilePath -tit Maybe Version -pacVer) Maybe FilePath -des [ContributorSpec] -con Maybe Day -mod_ GenotypeDataSpec -geno Maybe FilePath -jannoF JannoRows -janno Maybe FilePath -jannoC Maybe FilePath -seqSourceF SeqSourceRows -seqSource Maybe FilePath -seqSourceC Maybe FilePath -bibF BibTeX -bib Maybe FilePath -bibC Maybe FilePath -readF Maybe FilePath -changeF - - -- validate genotype data - Bool -> PoseidonIO () -> PoseidonIO () +tit Maybe Version +pacVer) Maybe FilePath +des [ContributorSpec] +con Maybe Day +mod_ GenotypeDataSpec +geno Maybe FilePath +jannoF JannoRows +janno Maybe FilePath +jannoC Maybe FilePath +seqSourceF SeqSourceRows +seqSource Maybe FilePath +seqSourceC Maybe FilePath +bibF BibTeX +bib Maybe FilePath +bibC Maybe FilePath +readF Maybe FilePath +changeF + + -- validate genotype data + Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (Bool -> Bool not (PackageReadOptions -> Bool _readOptIgnoreGeno PackageReadOptions -opts) Bool -> Bool -> Bool +opts) Bool -> Bool -> Bool && PackageReadOptions -> Bool _readOptGenoCheck PackageReadOptions -opts) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +opts) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ - PoseidonPackage -> Bool -> PoseidonIO () + PoseidonPackage -> Bool -> PoseidonIO () validateGeno PoseidonPackage -pac (PackageReadOptions -> Bool +pac (PackageReadOptions -> Bool _readOptFullGeno PackageReadOptions -opts) - - -- return complete, valid package - PoseidonPackage -> ReaderT Env IO PoseidonPackage +opts) + + -- return complete, valid package + PoseidonPackage -> ReaderT Env IO PoseidonPackage forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -pac - -checkYML :: PoseidonYamlStruct -> PoseidonIO () -checkYML :: PoseidonYamlStruct -> PoseidonIO () -checkYML PoseidonYamlStruct -yml = do - let contributors :: [ContributorSpec] -contributors = PoseidonYamlStruct -> [ContributorSpec] +pac + +checkYML :: PoseidonYamlStruct -> PoseidonIO () +checkYML :: PoseidonYamlStruct -> PoseidonIO () +checkYML PoseidonYamlStruct +yml = do + let contributors :: [ContributorSpec] +contributors = PoseidonYamlStruct -> [ContributorSpec] _posYamlContributor PoseidonYamlStruct -yml - Bool -> PoseidonIO () -> PoseidonIO () +yml + Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when ([ContributorSpec] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [ContributorSpec] -contributors) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +contributors) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do - FilePath -> PoseidonIO () + FilePath -> PoseidonIO () logWarning (FilePath -> PoseidonIO ()) -> FilePath -> PoseidonIO () forall a b. (a -> b) -> a -> b $ FilePath @@ -1926,26 +1927,26 @@ ++ PoseidonYamlStruct -> FilePath forall a. HasNameAndVersion a => a -> FilePath renderNameWithVersion PoseidonYamlStruct -yml - -validateGeno :: PoseidonPackage -> Bool -> PoseidonIO () -validateGeno :: PoseidonPackage -> Bool -> PoseidonIO () -validateGeno PoseidonPackage -pac Bool -checkFullGeno = do - LogA -logA <- PoseidonIO LogA +yml + +validateGeno :: PoseidonPackage -> Bool -> PoseidonIO () +validateGeno :: PoseidonPackage -> Bool -> PoseidonIO () +validateGeno PoseidonPackage +pac Bool +checkFullGeno = do + LogA +logA <- PoseidonIO LogA envLogAction - PlinkPopNameMode -plinkMode <- PoseidonIO PlinkPopNameMode + PlinkPopNameMode +plinkMode <- PoseidonIO PlinkPopNameMode envInputPlinkMode - ErrorLength -errLength <- PoseidonIO ErrorLength + ErrorLength +errLength <- PoseidonIO ErrorLength envErrorLength - --let jannoRows = getJannoRowsFromPac pac - --let ploidyList = map jGenotypePloidy jannoRows - --let indivNames = map jPoseidonID jannoRows - IO () -> PoseidonIO () + --let jannoRows = getJannoRowsFromPac pac + --let ploidyList = map jGenotypePloidy jannoRows + --let indivNames = map jPoseidonID jannoRows + IO () -> PoseidonIO () forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> PoseidonIO ()) -> IO () -> PoseidonIO () @@ -1953,18 +1954,18 @@ $ IO () -> (SomeException -> IO ()) -> IO () forall e a. Exception e => IO a -> (e -> IO a) -> IO a catch ( - SafeT IO () -> IO () + SafeT IO () -> IO () forall (m :: * -> *) r. (MonadMask m, MonadIO m) => SafeT m r -> m r runSafeT (SafeT IO () -> IO ()) -> SafeT IO () -> IO () forall a b. (a -> b) -> a -> b $ do - -- we're using getJointGenotypeData here on a single package to check for SNP consistency - -- since that check is only implemented in the jointLoading function, not in the per-package loading - ([EigenstratIndEntry] -_, Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -eigenstratProd) <- LogA + -- we're using getJointGenotypeData here on a single package to check for SNP consistency + -- since that check is only implemented in the jointLoading function, not in the per-package loading + ([EigenstratIndEntry] +_, Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +eigenstratProd) <- LogA -> Bool -> PlinkPopNameMode -> [PoseidonPackage] @@ -1983,30 +1984,30 @@ -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) getJointGenotypeData LogA -logA Bool +logA Bool False PlinkPopNameMode -plinkMode [PoseidonPackage -pac] Maybe FilePath +plinkMode [PoseidonPackage +pac] Maybe FilePath forall a. Maybe a Nothing - -- check all or only the first 100 SNPs - if Bool -checkFullGeno - then do - UTCTime -currentTime <- IO UTCTime -> SafeT IO UTCTime + -- check all or only the first 100 SNPs + if Bool +checkFullGeno + then do + UTCTime +currentTime <- IO UTCTime -> SafeT IO UTCTime forall a. IO a -> SafeT IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO UTCTime getCurrentTime - --runEffect $ eigenstratProd >-> checkPloidy logA ploidyList indivNames >-> printSNPCopyProgress logA currentTime >-> P.drain - Effect (SafeT IO) () -> SafeT IO () + --runEffect $ eigenstratProd >-> checkPloidy logA ploidyList indivNames >-> printSNPCopyProgress logA currentTime >-> P.drain + Effect (SafeT IO) () -> SafeT IO () forall (m :: * -> *) r. Monad m => Effect m r -> m r runEffect (Effect (SafeT IO) () -> SafeT IO ()) -> Effect (SafeT IO) () -> SafeT IO () forall a b. (a -> b) -> a -> b $ Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -eigenstratProd Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +eigenstratProd Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -> Proxy () (EigenstratSnpEntry, GenoLine) @@ -2031,8 +2032,8 @@ MonadIO m => LogA -> UTCTime -> Pipe a a m () printSNPCopyProgress LogA -logA UTCTime -currentTime Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +logA UTCTime +currentTime Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -> Proxy () (EigenstratSnpEntry, GenoLine) () X (SafeT IO) () -> Effect (SafeT IO) () forall (m :: * -> *) a' a b r c' c. @@ -2042,15 +2043,15 @@ Consumer' (EigenstratSnpEntry, GenoLine) (SafeT IO) () forall (m :: * -> *) a r. Functor m => Consumer' a m r P.drain - else - --runEffect $ eigenstratProd >-> P.take 100 >-> checkPloidy logA ploidyList indivNames >-> P.drain - Effect (SafeT IO) () -> SafeT IO () + else + --runEffect $ eigenstratProd >-> P.take 100 >-> checkPloidy logA ploidyList indivNames >-> P.drain + Effect (SafeT IO) () -> SafeT IO () forall (m :: * -> *) r. Monad m => Effect m r -> m r runEffect (Effect (SafeT IO) () -> SafeT IO ()) -> Effect (SafeT IO) () -> SafeT IO () forall a b. (a -> b) -> a -> b $ Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -eigenstratProd Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +eigenstratProd Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -> Proxy () (EigenstratSnpEntry, GenoLine) @@ -2082,294 +2083,299 @@ Consumer' (EigenstratSnpEntry, GenoLine) (SafeT IO) () forall (m :: * -> *) a r. Functor m => Consumer' a m r P.drain - ) (PoseidonException -> IO () + ) (PoseidonException -> IO () forall e a. Exception e => e -> IO a throwIO (PoseidonException -> IO ()) -> (SomeException -> PoseidonException) -> SomeException -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . ErrorLength -> SomeException -> PoseidonException PoseidonGenotypeExceptionForward ErrorLength -errLength) - -- where - -- checkPloidy logA ploidyList indivNames = for cat $ \(_, genoLine) -> do - -- let illegals = - -- map (\(_, ind, _) -> renderNameWithVersion pac ++ ": " ++ ind) . - -- filter (\(ploidy, _, geno) -> ploidy == Just Haploid && geno == Het) . - -- zip3 ploidyList indivNames . V.toList $ genoLine - -- unless (null illegals) $ do - -- logWithEnv logA . logDebug $ "The following samples have heterozygote genotypes despite being annotated as \"haploid\" in the Janno file:" - -- mapM_ (logWithEnv logA . logDebug) illegals - -- liftIO . throwIO $ PoseidonGenotypeException "Illegal heterozygote genotypes for individuals marked as 'haploid' in the Janno file. Choose --logMode VerboseLog to output more" - +errLength) + -- where + -- checkPloidy logA ploidyList indivNames = for cat $ \(_, genoLine) -> do + -- let illegals = + -- map (\(_, ind, _) -> renderNameWithVersion pac ++ ": " ++ ind) . + -- filter (\(ploidy, _, geno) -> ploidy == Just Haploid && geno == Het) . + -- zip3 ploidyList indivNames . V.toList $ genoLine + -- unless (null illegals) $ do + -- logWithEnv logA . logDebug $ "The following samples have heterozygote genotypes despite being annotated as \"haploid\" in the Janno file:" + -- mapM_ (logWithEnv logA . logDebug) illegals + -- liftIO . throwIO $ PoseidonGenotypeException "Illegal heterozygote genotypes for individuals marked as 'haploid' in the Janno file. Choose --logMode VerboseLog to output more" --- throws exception if any file is missing or checksum is incorrect -checkFiles :: FilePath -> Bool -> Bool -> PoseidonYamlStruct -> IO () -checkFiles :: FilePath -> Bool -> Bool -> PoseidonYamlStruct -> IO () -checkFiles FilePath -baseDir Bool -ignoreChecksums Bool -ignoreGenotypeFilesMissing PoseidonYamlStruct -yml = do - -- Check README File - case FilePath -> PoseidonYamlStruct -> Maybe FilePath + +-- throws exception if any file is missing or checksum is incorrect +checkFiles :: FilePath -> Bool -> Bool -> PoseidonYamlStruct -> IO () +checkFiles :: FilePath -> Bool -> Bool -> PoseidonYamlStruct -> IO () +checkFiles FilePath +baseDir Bool +ignoreChecksums Bool +ignoreGenotypeFilesMissing PoseidonYamlStruct +yml = do + -- Check README File + case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonReadmeFilePath FilePath -baseDir PoseidonYamlStruct -yml of - Maybe FilePath +baseDir PoseidonYamlStruct +yml of + Maybe FilePath Nothing -> () -> IO () forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return () - Just FilePath -fn -> FilePath -> Maybe FilePath -> IO () + Just FilePath +fn -> FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn Maybe FilePath +fn Maybe FilePath forall a. Maybe a Nothing - -- Check CHANGELOG File - case FilePath -> PoseidonYamlStruct -> Maybe FilePath + -- Check CHANGELOG File + case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonChangelogFilePath FilePath -baseDir PoseidonYamlStruct -yml of - Maybe FilePath +baseDir PoseidonYamlStruct +yml of + Maybe FilePath Nothing -> () -> IO () forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return () - Just FilePath -fn -> FilePath -> Maybe FilePath -> IO () + Just FilePath +fn -> FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn Maybe FilePath +fn Maybe FilePath forall a. Maybe a Nothing - -- Check Bib File - case FilePath -> PoseidonYamlStruct -> Maybe FilePath + -- Check Bib File + case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonBibFilePath FilePath -baseDir PoseidonYamlStruct -yml of - Maybe FilePath +baseDir PoseidonYamlStruct +yml of + Maybe FilePath Nothing -> () -> IO () forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return () - Just FilePath -fn -> if Bool -ignoreChecksums - then FilePath -> Maybe FilePath -> IO () + Just FilePath +fn -> if Bool +ignoreChecksums + then FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn Maybe FilePath +fn Maybe FilePath forall a. Maybe a Nothing - else FilePath -> Maybe FilePath -> IO () + else FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn (Maybe FilePath -> IO ()) -> Maybe FilePath -> IO () +fn (Maybe FilePath -> IO ()) -> Maybe FilePath -> IO () forall a b. (a -> b) -> a -> b $ PoseidonYamlStruct -> Maybe FilePath _posYamlBibFileChkSum PoseidonYamlStruct -yml - -- Check Janno File - case FilePath -> PoseidonYamlStruct -> Maybe FilePath +yml + -- Check Janno File + case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonJannoFilePath FilePath -baseDir PoseidonYamlStruct -yml of - Maybe FilePath +baseDir PoseidonYamlStruct +yml of + Maybe FilePath Nothing -> () -> IO () forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return () - Just FilePath -fn -> if Bool -ignoreChecksums - then FilePath -> Maybe FilePath -> IO () + Just FilePath +fn -> if Bool +ignoreChecksums + then FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn Maybe FilePath +fn Maybe FilePath forall a. Maybe a Nothing - else FilePath -> Maybe FilePath -> IO () + else FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn (Maybe FilePath -> IO ()) -> Maybe FilePath -> IO () +fn (Maybe FilePath -> IO ()) -> Maybe FilePath -> IO () forall a b. (a -> b) -> a -> b $ PoseidonYamlStruct -> Maybe FilePath _posYamlJannoFileChkSum PoseidonYamlStruct -yml - -- Check SeqSource File - case FilePath -> PoseidonYamlStruct -> Maybe FilePath +yml + -- Check SeqSource File + case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonSeqSourceFilePath FilePath -baseDir PoseidonYamlStruct -yml of - Maybe FilePath +baseDir PoseidonYamlStruct +yml of + Maybe FilePath Nothing -> () -> IO () forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return () - Just FilePath -fn -> if Bool -ignoreChecksums - then FilePath -> Maybe FilePath -> IO () + Just FilePath +fn -> if Bool +ignoreChecksums + then FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn Maybe FilePath +fn Maybe FilePath forall a. Maybe a Nothing - else FilePath -> Maybe FilePath -> IO () + else FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn (Maybe FilePath -> IO ()) -> Maybe FilePath -> IO () +fn (Maybe FilePath -> IO ()) -> Maybe FilePath -> IO () forall a b. (a -> b) -> a -> b $ PoseidonYamlStruct -> Maybe FilePath _posYamlSeqSourceFileChkSum PoseidonYamlStruct -yml - -- Check Genotype files - Bool -> IO () -> IO () +yml + -- Check Genotype files + Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -ignoreGenotypeFilesMissing (IO () -> IO ()) -> IO () -> IO () +ignoreGenotypeFilesMissing (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ do - let gd :: GenotypeDataSpec -gd = PoseidonYamlStruct -> GenotypeDataSpec + let gd :: GenotypeDataSpec +gd = PoseidonYamlStruct -> GenotypeDataSpec _posYamlGenotypeData PoseidonYamlStruct -yml - d :: FilePath -d = FilePath -baseDir - if Bool -ignoreChecksums - then do - FilePath -> Maybe FilePath -> IO () +yml + d :: FilePath +d = FilePath +baseDir + if Bool +ignoreChecksums + then do + FilePath -> Maybe FilePath -> IO () checkFile (FilePath -d FilePath -> ShowS +d FilePath -> ShowS </> GenotypeDataSpec -> FilePath genoFile GenotypeDataSpec -gd) Maybe FilePath +gd) Maybe FilePath forall a. Maybe a Nothing - FilePath -> Maybe FilePath -> IO () + FilePath -> Maybe FilePath -> IO () checkFile (FilePath -d FilePath -> ShowS +d FilePath -> ShowS </> GenotypeDataSpec -> FilePath snpFile GenotypeDataSpec -gd) Maybe FilePath +gd) Maybe FilePath forall a. Maybe a Nothing - FilePath -> Maybe FilePath -> IO () + FilePath -> Maybe FilePath -> IO () checkFile (FilePath -d FilePath -> ShowS +d FilePath -> ShowS </> GenotypeDataSpec -> FilePath indFile GenotypeDataSpec -gd) Maybe FilePath +gd) Maybe FilePath forall a. Maybe a Nothing - else do - FilePath -> Maybe FilePath -> IO () + else do + FilePath -> Maybe FilePath -> IO () checkFile (FilePath -d FilePath -> ShowS +d FilePath -> ShowS </> GenotypeDataSpec -> FilePath genoFile GenotypeDataSpec -gd) (Maybe FilePath -> IO ()) -> Maybe FilePath -> IO () +gd) (Maybe FilePath -> IO ()) -> Maybe FilePath -> IO () forall a b. (a -> b) -> a -> b $ GenotypeDataSpec -> Maybe FilePath genoFileChkSum GenotypeDataSpec -gd - FilePath -> Maybe FilePath -> IO () +gd + FilePath -> Maybe FilePath -> IO () checkFile (FilePath -d FilePath -> ShowS +d FilePath -> ShowS </> GenotypeDataSpec -> FilePath snpFile GenotypeDataSpec -gd) (Maybe FilePath -> IO ()) -> Maybe FilePath -> IO () +gd) (Maybe FilePath -> IO ()) -> Maybe FilePath -> IO () forall a b. (a -> b) -> a -> b $ GenotypeDataSpec -> Maybe FilePath snpFileChkSum GenotypeDataSpec -gd - FilePath -> Maybe FilePath -> IO () +gd + FilePath -> Maybe FilePath -> IO () checkFile (FilePath -d FilePath -> ShowS +d FilePath -> ShowS </> GenotypeDataSpec -> FilePath indFile GenotypeDataSpec -gd) (Maybe FilePath -> IO ()) -> Maybe FilePath -> IO () +gd) (Maybe FilePath -> IO ()) -> Maybe FilePath -> IO () forall a b. (a -> b) -> a -> b $ GenotypeDataSpec -> Maybe FilePath indFileChkSum GenotypeDataSpec -gd - -checkJannoIndConsistency :: String -> JannoRows -> [EigenstratIndEntry] -> IO () -checkJannoIndConsistency :: FilePath -> JannoRows -> [EigenstratIndEntry] -> IO () -checkJannoIndConsistency FilePath -pacName (JannoRows [JannoRow] -rows) [EigenstratIndEntry] -indEntries = do - let genoIDs :: [FilePath] -genoIDs = [ FilePath -x | EigenstratIndEntry FilePath -x Sex +gd + +checkJannoIndConsistency :: String -> JannoRows -> [EigenstratIndEntry] -> IO () +checkJannoIndConsistency :: FilePath -> JannoRows -> [EigenstratIndEntry] -> IO () +checkJannoIndConsistency FilePath +pacName (JannoRows [JannoRow] +rows) [EigenstratIndEntry] +indEntries = do + let genoIDs :: [FilePath] +genoIDs = [ FilePath +x | EigenstratIndEntry FilePath +x Sex _ FilePath _ <- [EigenstratIndEntry] -indEntries] - genoSexs :: [Sex] -genoSexs = [ Sex -x | EigenstratIndEntry FilePath -_ Sex -x FilePath +indEntries] + genoSexs :: [Sex] +genoSexs = [ Sex +x | EigenstratIndEntry FilePath +_ Sex +x FilePath _ <- [EigenstratIndEntry] -indEntries] - genoGroups :: [FilePath] -genoGroups = [ FilePath -x | EigenstratIndEntry FilePath +indEntries] + genoGroups :: [FilePath] +genoGroups = [ FilePath +x | EigenstratIndEntry FilePath _ Sex -_ FilePath -x <- [EigenstratIndEntry] -indEntries] - let jannoIDs :: [FilePath] -jannoIDs = (JannoRow -> FilePath) -> [JannoRow] -> [FilePath] +_ FilePath +x <- [EigenstratIndEntry] +indEntries] + let jannoIDs :: [FilePath] +jannoIDs = (JannoRow -> FilePath) -> [JannoRow] -> [FilePath] forall a b. (a -> b) -> [a] -> [b] map JannoRow -> FilePath jPoseidonID [JannoRow] -rows - jannoSexs :: [Sex] -jannoSexs = (JannoRow -> Sex) -> [JannoRow] -> [Sex] +rows + jannoSexs :: [Sex] +jannoSexs = (JannoRow -> Sex) -> [JannoRow] -> [Sex] forall a b. (a -> b) -> [a] -> [b] -map (JannoSex -> Sex -sfSex (JannoSex -> Sex) -> (JannoRow -> JannoSex) -> JannoRow -> Sex +map (GeneticSex -> Sex +sfSex (GeneticSex -> Sex) -> (JannoRow -> GeneticSex) -> JannoRow -> Sex forall b c a. (b -> c) -> (a -> b) -> a -> c -. JannoRow -> JannoSex +. JannoRow -> GeneticSex jGeneticSex) [JannoRow] -rows - jannoGroups :: [FilePath] -jannoGroups = (JannoRow -> FilePath) -> [JannoRow] -> [FilePath] +rows + jannoGroups :: [FilePath] +jannoGroups = (JannoRow -> FilePath) -> [JannoRow] -> [FilePath] forall a b. (a -> b) -> [a] -> [b] -map ([FilePath] -> FilePath +map (GroupName -> FilePath +forall a. Show a => a -> FilePath +show (GroupName -> FilePath) +-> (JannoRow -> GroupName) -> JannoRow -> FilePath +forall b c a. (b -> c) -> (a -> b) -> a -> c +. [GroupName] -> GroupName forall a. HasCallStack => [a] -> a -head ([FilePath] -> FilePath) --> (JannoRow -> [FilePath]) -> JannoRow -> FilePath +head ([GroupName] -> GroupName) +-> (JannoRow -> [GroupName]) -> JannoRow -> GroupName forall b c a. (b -> c) -> (a -> b) -> a -> c -. JannoList FilePath -> [FilePath] -forall a. JannoList a -> [a] -getJannoList (JannoList FilePath -> [FilePath]) --> (JannoRow -> JannoList FilePath) -> JannoRow -> [FilePath] +. ListColumn GroupName -> [GroupName] +forall a. ListColumn a -> [a] +getListColumn (ListColumn GroupName -> [GroupName]) +-> (JannoRow -> ListColumn GroupName) -> JannoRow -> [GroupName] forall b c a. (b -> c) -> (a -> b) -> a -> c -. JannoRow -> JannoList FilePath +. JannoRow -> ListColumn GroupName jGroupName) [JannoRow] -rows - let idMis :: Bool -idMis = [FilePath] -genoIDs [FilePath] -> [FilePath] -> Bool +rows + let idMis :: Bool +idMis = [FilePath] +genoIDs [FilePath] -> [FilePath] -> Bool forall a. Eq a => a -> a -> Bool /= [FilePath] -jannoIDs - sexMis :: Bool -sexMis = [Sex] -genoSexs [Sex] -> [Sex] -> Bool +jannoIDs + sexMis :: Bool +sexMis = [Sex] +genoSexs [Sex] -> [Sex] -> Bool forall a. Eq a => a -> a -> Bool /= [Sex] -jannoSexs - groupMis :: Bool -groupMis = [FilePath] -genoGroups [FilePath] -> [FilePath] -> Bool +jannoSexs + groupMis :: Bool +groupMis = [FilePath] +genoGroups [FilePath] -> [FilePath] -> Bool forall a. Eq a => a -> a -> Bool /= [FilePath] -jannoGroups - Bool -> IO () -> IO () +jannoGroups + Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -idMis (IO () -> IO ()) -> IO () -> IO () +idMis (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ PoseidonException -> IO () forall e a. Exception e => e -> IO a @@ -2378,21 +2384,21 @@ forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonCrossFileConsistencyException FilePath -pacName (FilePath -> PoseidonException) -> FilePath -> PoseidonException +pacName (FilePath -> PoseidonException) -> FilePath -> PoseidonException forall a b. (a -> b) -> a -> b $ - FilePath + FilePath "Individual ID mismatch between genotype data (left) and .janno files (right): " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ - [FilePath] -> [FilePath] -> FilePath + [FilePath] -> [FilePath] -> FilePath renderMismatch [FilePath] -genoIDs [FilePath] -jannoIDs - Bool -> IO () -> IO () +genoIDs [FilePath] +jannoIDs + Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -sexMis (IO () -> IO ()) -> IO () -> IO () +sexMis (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ PoseidonException -> IO () forall e a. Exception e => e -> IO a @@ -2401,29 +2407,29 @@ forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonCrossFileConsistencyException FilePath -pacName (FilePath -> PoseidonException) -> FilePath -> PoseidonException +pacName (FilePath -> PoseidonException) -> FilePath -> PoseidonException forall a b. (a -> b) -> a -> b $ - FilePath + FilePath "Individual Sex mismatch between genotype data (left) and .janno files (right): " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ - [FilePath] -> [FilePath] -> FilePath + [FilePath] -> [FilePath] -> FilePath renderMismatch ((Sex -> FilePath) -> [Sex] -> [FilePath] forall a b. (a -> b) -> [a] -> [b] map Sex -> FilePath forall a. Show a => a -> FilePath show [Sex] -genoSexs) ((Sex -> FilePath) -> [Sex] -> [FilePath] +genoSexs) ((Sex -> FilePath) -> [Sex] -> [FilePath] forall a b. (a -> b) -> [a] -> [b] map Sex -> FilePath forall a. Show a => a -> FilePath show [Sex] -jannoSexs) - Bool -> IO () -> IO () +jannoSexs) + Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -groupMis (IO () -> IO ()) -> IO () -> IO () +groupMis (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ PoseidonException -> IO () forall e a. Exception e => e -> IO a @@ -2432,46 +2438,46 @@ forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonCrossFileConsistencyException FilePath -pacName (FilePath -> PoseidonException) -> FilePath -> PoseidonException +pacName (FilePath -> PoseidonException) -> FilePath -> PoseidonException forall a b. (a -> b) -> a -> b $ - FilePath + FilePath "Individual GroupID mismatch between genotype data (left) and .janno files (right). Note \ \that this could be due to a wrong Plink file population-name encoding \ \(see the --inPlinkPopName option). " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ - [FilePath] -> [FilePath] -> FilePath + [FilePath] -> [FilePath] -> FilePath renderMismatch [FilePath] -genoGroups [FilePath] -jannoGroups - -renderMismatch :: [String] -> [String] -> String -renderMismatch :: [FilePath] -> [FilePath] -> FilePath -renderMismatch [FilePath] -a [FilePath] -b = - let misMatchList :: [FilePath] -misMatchList = ((FilePath, FilePath) -> FilePath) +genoGroups [FilePath] +jannoGroups + +renderMismatch :: [String] -> [String] -> String +renderMismatch :: [FilePath] -> [FilePath] -> FilePath +renderMismatch [FilePath] +a [FilePath] +b = + let misMatchList :: [FilePath] +misMatchList = ((FilePath, FilePath) -> FilePath) -> [(FilePath, FilePath)] -> [FilePath] forall a b. (a -> b) -> [a] -> [b] -map (\ (FilePath -x, FilePath -y) -> FilePath +map (\ (FilePath +x, FilePath +y) -> FilePath "(" FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath -x FilePath -> ShowS +x FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath " = " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath -y FilePath -> ShowS +y FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath ")") - (((FilePath, FilePath) -> Bool) + (((FilePath, FilePath) -> Bool) -> [(FilePath, FilePath)] -> [(FilePath, FilePath)] forall a. (a -> Bool) -> [a] -> [a] filter ((FilePath -> FilePath -> Bool) -> (FilePath, FilePath) -> Bool @@ -2487,122 +2493,122 @@ zipWithPadding FilePath "?" FilePath "?" [FilePath] -a [FilePath] -b) - in if [FilePath] -> Int +a [FilePath] +b) + in if [FilePath] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [FilePath] -misMatchList Int -> Int -> Bool +misMatchList Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 5 - then FilePath -> [FilePath] -> FilePath + then FilePath -> [FilePath] -> FilePath forall a. [a] -> [[a]] -> [a] intercalate FilePath ", " (Int -> [FilePath] -> [FilePath] forall a. Int -> [a] -> [a] take Int 5 [FilePath] -misMatchList) FilePath -> ShowS +misMatchList) FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath ", ..." - else FilePath -> [FilePath] -> FilePath + else FilePath -> [FilePath] -> FilePath forall a. [a] -> [[a]] -> [a] intercalate FilePath ", " [FilePath] -misMatchList - -zipWithPadding :: a -> b -> [a] -> [b] -> [(a,b)] -zipWithPadding :: forall a b. a -> b -> [a] -> [b] -> [(a, b)] -zipWithPadding a -a b -b (a -x:[a] -xs) (b -y:[b] -ys) = (a -x,b -y) (a, b) -> [(a, b)] -> [(a, b)] +misMatchList + +zipWithPadding :: a -> b -> [a] -> [b] -> [(a,b)] +zipWithPadding :: forall a b. a -> b -> [a] -> [b] -> [(a, b)] +zipWithPadding a +a b +b (a +x:[a] +xs) (b +y:[b] +ys) = (a +x,b +y) (a, b) -> [(a, b)] -> [(a, b)] forall a. a -> [a] -> [a] : a -> b -> [a] -> [b] -> [(a, b)] forall a b. a -> b -> [a] -> [b] -> [(a, b)] zipWithPadding a -a b -b [a] -xs [b] -ys -zipWithPadding a -a b -_ [] [b] -ys = [a] -> [b] -> [(a, b)] +a b +b [a] +xs [b] +ys +zipWithPadding a +a b +_ [] [b] +ys = [a] -> [b] -> [(a, b)] forall a b. [a] -> [b] -> [(a, b)] zip (a -> [a] forall a. a -> [a] repeat a -a) [b] -ys -zipWithPadding a -_ b -b [a] -xs [] = [a] -> [b] -> [(a, b)] +a) [b] +ys +zipWithPadding a +_ b +b [a] +xs [] = [a] -> [b] -> [(a, b)] forall a b. [a] -> [b] -> [(a, b)] zip [a] -xs (b -> [b] +xs (b -> [b] forall a. a -> [a] repeat b -b) - -checkSeqSourceJannoConsistency :: String -> SeqSourceRows -> JannoRows -> PoseidonIO () -checkSeqSourceJannoConsistency :: FilePath -> SeqSourceRows -> JannoRows -> PoseidonIO () -checkSeqSourceJannoConsistency FilePath -pacName (SeqSourceRows [SeqSourceRow] -sRows) (JannoRows [JannoRow] -jRows) = do - PoseidonIO () -checkPoseidonIDOverlap +b) + +checkSeqSourceJannoConsistency :: String -> SeqSourceRows -> JannoRows -> PoseidonIO () +checkSeqSourceJannoConsistency :: FilePath -> SeqSourceRows -> JannoRows -> PoseidonIO () +checkSeqSourceJannoConsistency FilePath +pacName (SeqSourceRows [SeqSourceRow] +sRows) (JannoRows [JannoRow] +jRows) = do PoseidonIO () -checkUDGandLibraryBuiltOverlap - where - js :: [(FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)] -js = (JannoRow -> (FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)) +checkPoseidonIDOverlap + PoseidonIO () +checkUDGandLibraryBuiltOverlap + where + js :: [(FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)] +js = (JannoRow -> (FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)) -> [JannoRow] -> [(FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)] forall a b. (a -> b) -> [a] -> [b] -map (\JannoRow -r -> (JannoRow -> FilePath +map (\JannoRow +r -> (JannoRow -> FilePath jPoseidonID JannoRow -r, JannoRow -> Maybe JannoUDG +r, JannoRow -> Maybe JannoUDG jUDG JannoRow -r, JannoRow -> Maybe JannoLibraryBuilt +r, JannoRow -> Maybe JannoLibraryBuilt jLibraryBuilt JannoRow -r)) [JannoRow] -jRows - ss :: [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] -ss = (SeqSourceRow -> ([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)) +r)) [JannoRow] +jRows + ss :: [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] +ss = (SeqSourceRow -> ([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)) -> [SeqSourceRow] -> [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] forall a b. (a -> b) -> [a] -> [b] -map (\SeqSourceRow -r -> (Maybe (JannoList FilePath) -> [FilePath] -forall a. Maybe (JannoList a) -> [a] -getMaybeJannoList (Maybe (JannoList FilePath) -> [FilePath]) --> Maybe (JannoList FilePath) -> [FilePath] +map (\SeqSourceRow +r -> (Maybe (ListColumn FilePath) -> [FilePath] +forall a. Maybe (ListColumn a) -> [a] +getMaybeListColumn (Maybe (ListColumn FilePath) -> [FilePath]) +-> Maybe (ListColumn FilePath) -> [FilePath] forall a b. (a -> b) -> a -> b -$ SeqSourceRow -> Maybe (JannoList FilePath) +$ SeqSourceRow -> Maybe (ListColumn FilePath) sPoseidonID SeqSourceRow -r, SeqSourceRow -> Maybe SSFUDG +r, SeqSourceRow -> Maybe SSFUDG sUDG SeqSourceRow -r, SeqSourceRow -> Maybe SSFLibraryBuilt +r, SeqSourceRow -> Maybe SSFLibraryBuilt sLibraryBuilt SeqSourceRow -r)) [SeqSourceRow] -sRows - checkPoseidonIDOverlap :: PoseidonIO () - checkPoseidonIDOverlap :: PoseidonIO () -checkPoseidonIDOverlap = do - let flatSeqSourceIDs :: [FilePath] -flatSeqSourceIDs = [FilePath] -> [FilePath] +r)) [SeqSourceRow] +sRows + checkPoseidonIDOverlap :: PoseidonIO () + checkPoseidonIDOverlap :: PoseidonIO () +checkPoseidonIDOverlap = do + let flatSeqSourceIDs :: [FilePath] +flatSeqSourceIDs = [FilePath] -> [FilePath] forall a. Eq a => [a] -> [a] nub ([FilePath] -> [FilePath]) -> [FilePath] -> [FilePath] forall a b. (a -> b) -> a -> b @@ -2611,52 +2617,52 @@ concat ([[FilePath]] -> [FilePath]) -> [[FilePath]] -> [FilePath] forall a b. (a -> b) -> a -> b $ [[FilePath] -a | ([FilePath] -a,Maybe SSFUDG +a | ([FilePath] +a,Maybe SSFUDG _,Maybe SSFLibraryBuilt _) <- [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] -ss] - misMatch :: [FilePath] -misMatch = [FilePath] -flatSeqSourceIDs [FilePath] -> [FilePath] -> [FilePath] +ss] + misMatch :: [FilePath] +misMatch = [FilePath] +flatSeqSourceIDs [FilePath] -> [FilePath] -> [FilePath] forall a. Eq a => [a] -> [a] -> [a] \\ [FilePath -a | (FilePath -a,Maybe JannoUDG +a | (FilePath +a,Maybe JannoUDG _,Maybe JannoLibraryBuilt _) <- [(FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)] -js] - Bool -> PoseidonIO () -> PoseidonIO () +js] + Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless ([FilePath] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [FilePath] -misMatch) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +misMatch) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ do - FilePath -> PoseidonIO () + FilePath -> PoseidonIO () logWarning (FilePath -> PoseidonIO ()) -> FilePath -> PoseidonIO () forall a b. (a -> b) -> a -> b $ FilePath "The .ssf file in the package " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath -pacName FilePath -> ShowS +pacName FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ - FilePath + FilePath " features Poseidon_IDs that are not in the package: " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath -> [FilePath] -> FilePath forall a. [a] -> [[a]] -> [a] intercalate FilePath ", " [FilePath] -misMatch - checkUDGandLibraryBuiltOverlap :: PoseidonIO () - checkUDGandLibraryBuiltOverlap :: PoseidonIO () -checkUDGandLibraryBuiltOverlap = do - ((FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt) +misMatch + checkUDGandLibraryBuiltOverlap :: PoseidonIO () + checkUDGandLibraryBuiltOverlap :: PoseidonIO () +checkUDGandLibraryBuiltOverlap = do + ((FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt) -> PoseidonIO ()) -> [(FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)] -> PoseidonIO () @@ -2665,73 +2671,73 @@ (a -> m b) -> t a -> m () mapM_ (FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt) -> PoseidonIO () -checkOneIndividual [(FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)] -js - where - checkOneIndividual :: (String, Maybe JannoUDG, Maybe JannoLibraryBuilt) -> PoseidonIO () - checkOneIndividual :: (FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt) +checkOneIndividual [(FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)] +js + where + checkOneIndividual :: (String, Maybe JannoUDG, Maybe JannoLibraryBuilt) -> PoseidonIO () + checkOneIndividual :: (FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt) -> PoseidonIO () -checkOneIndividual (FilePath -jannoPoseidonID, Maybe JannoUDG -jannoUDG, Maybe JannoLibraryBuilt -jannoLibraryBuilt) = do - let relevantSeqSourceRows :: [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] -relevantSeqSourceRows = (([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt) -> Bool) +checkOneIndividual (FilePath +jannoPoseidonID, Maybe JannoUDG +jannoUDG, Maybe JannoLibraryBuilt +jannoLibraryBuilt) = do + let relevantSeqSourceRows :: [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] +relevantSeqSourceRows = (([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt) -> Bool) -> [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] -> [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] forall a. (a -> Bool) -> [a] -> [a] -filter (\([FilePath] -seqSourcePoseidonID,Maybe SSFUDG +filter (\([FilePath] +seqSourcePoseidonID,Maybe SSFUDG _,Maybe SSFLibraryBuilt _) -> FilePath -jannoPoseidonID FilePath -> [FilePath] -> Bool +jannoPoseidonID FilePath -> [FilePath] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [FilePath] -seqSourcePoseidonID) [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] -ss - allSeqSourceUDGs :: [SSFUDG] -allSeqSourceUDGs = [Maybe SSFUDG] -> [SSFUDG] +seqSourcePoseidonID) [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] +ss + allSeqSourceUDGs :: [SSFUDG] +allSeqSourceUDGs = [Maybe SSFUDG] -> [SSFUDG] forall a. [Maybe a] -> [a] catMaybes ([Maybe SSFUDG] -> [SSFUDG]) -> [Maybe SSFUDG] -> [SSFUDG] forall a b. (a -> b) -> a -> b $ [Maybe SSFUDG -b | ([FilePath] -_,Maybe SSFUDG -b,Maybe SSFLibraryBuilt +b | ([FilePath] +_,Maybe SSFUDG +b,Maybe SSFLibraryBuilt _) <- [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] -relevantSeqSourceRows] - allSeqSourceLibraryBuilts :: [SSFLibraryBuilt] -allSeqSourceLibraryBuilts = [Maybe SSFLibraryBuilt] -> [SSFLibraryBuilt] +relevantSeqSourceRows] + allSeqSourceLibraryBuilts :: [SSFLibraryBuilt] +allSeqSourceLibraryBuilts = [Maybe SSFLibraryBuilt] -> [SSFLibraryBuilt] forall a. [Maybe a] -> [a] catMaybes ([Maybe SSFLibraryBuilt] -> [SSFLibraryBuilt]) -> [Maybe SSFLibraryBuilt] -> [SSFLibraryBuilt] forall a b. (a -> b) -> a -> b $ [Maybe SSFLibraryBuilt -c | ([FilePath] +c | ([FilePath] _,Maybe SSFUDG -_,Maybe SSFLibraryBuilt -c) <- [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] -relevantSeqSourceRows] - case Maybe JannoUDG -jannoUDG of - Maybe JannoUDG +_,Maybe SSFLibraryBuilt +c) <- [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] +relevantSeqSourceRows] + case Maybe JannoUDG +jannoUDG of + Maybe JannoUDG Nothing -> () -> PoseidonIO () forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return () - Just JannoUDG -j -> Bool -> PoseidonIO () -> PoseidonIO () + Just JannoUDG +j -> Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless ((SSFUDG -> Bool) -> [SSFUDG] -> Bool forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool all (JannoUDG -> SSFUDG -> Bool -compareU JannoUDG -j) [SSFUDG] -allSeqSourceUDGs) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +compareU JannoUDG +j) [SSFUDG] +allSeqSourceUDGs) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ - PoseidonException -> PoseidonIO () + PoseidonException -> PoseidonIO () forall e a. Exception e => e -> ReaderT Env IO a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (PoseidonException -> PoseidonIO ()) @@ -2739,18 +2745,18 @@ forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonCrossFileConsistencyException FilePath -pacName (FilePath -> PoseidonException) -> FilePath -> PoseidonException +pacName (FilePath -> PoseidonException) -> FilePath -> PoseidonException forall a b. (a -> b) -> a -> b $ - FilePath + FilePath "The information on UDG treatment in .janno and .ssf do not match" FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ - FilePath + FilePath " for the individual: " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath -jannoPoseidonID FilePath -> ShowS +jannoPoseidonID FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath " (" FilePath -> ShowS @@ -2758,7 +2764,7 @@ ++ JannoUDG -> FilePath forall a. Show a => a -> FilePath show JannoUDG -j FilePath -> ShowS +j FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath " <> " FilePath -> ShowS @@ -2766,29 +2772,29 @@ ++ [SSFUDG] -> FilePath forall a. Show a => a -> FilePath show [SSFUDG] -allSeqSourceUDGs FilePath -> ShowS +allSeqSourceUDGs FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath ")" - case Maybe JannoLibraryBuilt -jannoLibraryBuilt of - Maybe JannoLibraryBuilt + case Maybe JannoLibraryBuilt +jannoLibraryBuilt of + Maybe JannoLibraryBuilt Nothing -> () -> PoseidonIO () forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return () - Just JannoLibraryBuilt -j -> Bool -> PoseidonIO () -> PoseidonIO () + Just JannoLibraryBuilt +j -> Bool -> PoseidonIO () -> PoseidonIO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless ((SSFLibraryBuilt -> Bool) -> [SSFLibraryBuilt] -> Bool forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool all (JannoLibraryBuilt -> SSFLibraryBuilt -> Bool -compareL JannoLibraryBuilt -j) [SSFLibraryBuilt] -allSeqSourceLibraryBuilts) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () +compareL JannoLibraryBuilt +j) [SSFLibraryBuilt] +allSeqSourceLibraryBuilts) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO () forall a b. (a -> b) -> a -> b $ - PoseidonException -> PoseidonIO () + PoseidonException -> PoseidonIO () forall e a. Exception e => e -> ReaderT Env IO a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (PoseidonException -> PoseidonIO ()) @@ -2796,18 +2802,18 @@ forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonCrossFileConsistencyException FilePath -pacName (FilePath -> PoseidonException) -> FilePath -> PoseidonException +pacName (FilePath -> PoseidonException) -> FilePath -> PoseidonException forall a b. (a -> b) -> a -> b $ - FilePath + FilePath "The information on library strandedness in .janno and .ssf do not match" FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ - FilePath + FilePath " for the individual: " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath -jannoPoseidonID FilePath -> ShowS +jannoPoseidonID FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath " (" FilePath -> ShowS @@ -2815,7 +2821,7 @@ ++ JannoLibraryBuilt -> FilePath forall a. Show a => a -> FilePath show JannoLibraryBuilt -j FilePath -> ShowS +j FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath " <> " FilePath -> ShowS @@ -2823,82 +2829,94 @@ ++ [SSFLibraryBuilt] -> FilePath forall a. Show a => a -> FilePath show [SSFLibraryBuilt] -allSeqSourceLibraryBuilts FilePath -> ShowS +allSeqSourceLibraryBuilts FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath ")" - compareU :: JannoUDG -> SSFUDG -> Bool - compareU :: JannoUDG -> SSFUDG -> Bool -compareU JannoUDG -Mixed SSFUDG + compareU :: JannoUDG -> SSFUDG -> Bool + compareU :: JannoUDG -> SSFUDG -> Bool +compareU JannoUDG +Mixed SSFUDG _ = Bool True - compareU JannoUDG -Minus SSFUDG + compareU JannoUDG +Minus SSFUDG SSFMinus = Bool True - compareU JannoUDG -Half SSFUDG + compareU JannoUDG +Half SSFUDG SSFHalf = Bool True - compareU JannoUDG -Plus SSFUDG + compareU JannoUDG +Plus SSFUDG SSFPlus = Bool True - compareU JannoUDG + compareU JannoUDG _ SSFUDG _ = Bool False - compareL :: JannoLibraryBuilt -> SSFLibraryBuilt -> Bool - compareL :: JannoLibraryBuilt -> SSFLibraryBuilt -> Bool -compareL JannoLibraryBuilt -MixedSSDS SSFLibraryBuilt + compareL :: JannoLibraryBuilt -> SSFLibraryBuilt -> Bool + compareL :: JannoLibraryBuilt -> SSFLibraryBuilt -> Bool +compareL JannoLibraryBuilt +MixedSSDS SSFLibraryBuilt _ = Bool True - compareL JannoLibraryBuilt -DS SSFLibraryBuilt + compareL JannoLibraryBuilt +DS SSFLibraryBuilt SSFDS = Bool True - compareL JannoLibraryBuilt -SS SSFLibraryBuilt + compareL JannoLibraryBuilt +SS SSFLibraryBuilt SSFSS = Bool True - compareL JannoLibraryBuilt + compareL JannoLibraryBuilt _ SSFLibraryBuilt _ = Bool False - -checkJannoBibConsistency :: String -> JannoRows -> BibTeX -> IO () -checkJannoBibConsistency :: FilePath -> JannoRows -> BibTeX -> IO () -checkJannoBibConsistency FilePath -pacName (JannoRows [JannoRow] -rows) BibTeX -bibtex = do - -- Cross-file consistency - let literatureInJanno :: [FilePath] -literatureInJanno = [FilePath] -> [FilePath] + +checkJannoBibConsistency :: String -> JannoRows -> BibTeX -> IO () +checkJannoBibConsistency :: FilePath -> JannoRows -> BibTeX -> IO () +checkJannoBibConsistency FilePath +pacName (JannoRows [JannoRow] +rows) BibTeX +bibtex = do + -- Cross-file consistency + let literatureInJanno :: [FilePath] +literatureInJanno = (JannoPublication -> FilePath) -> [JannoPublication] -> [FilePath] +forall a b. (a -> b) -> [a] -> [b] +map JannoPublication -> FilePath +forall a. Show a => a -> FilePath +show ([JannoPublication] -> [FilePath]) +-> [JannoPublication] -> [FilePath] +forall a b. (a -> b) -> a -> b +$ [JannoPublication] -> [JannoPublication] forall a. Eq a => [a] -> [a] -nub ([FilePath] -> [FilePath]) --> ([JannoRow] -> [FilePath]) -> [JannoRow] -> [FilePath] +nub ([JannoPublication] -> [JannoPublication]) +-> ([JannoRow] -> [JannoPublication]) +-> [JannoRow] +-> [JannoPublication] forall b c a. (b -> c) -> (a -> b) -> a -> c -. (JannoList FilePath -> [FilePath]) --> [JannoList FilePath] -> [FilePath] +. (ListColumn JannoPublication -> [JannoPublication]) +-> [ListColumn JannoPublication] -> [JannoPublication] forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] -concatMap JannoList FilePath -> [FilePath] -forall a. JannoList a -> [a] -getJannoList ([JannoList FilePath] -> [FilePath]) --> ([JannoRow] -> [JannoList FilePath]) -> [JannoRow] -> [FilePath] +concatMap ListColumn JannoPublication -> [JannoPublication] +forall a. ListColumn a -> [a] +getListColumn ([ListColumn JannoPublication] -> [JannoPublication]) +-> ([JannoRow] -> [ListColumn JannoPublication]) +-> [JannoRow] +-> [JannoPublication] forall b c a. (b -> c) -> (a -> b) -> a -> c -. (JannoRow -> Maybe (JannoList FilePath)) --> [JannoRow] -> [JannoList FilePath] +. (JannoRow -> Maybe (ListColumn JannoPublication)) +-> [JannoRow] -> [ListColumn JannoPublication] forall a b. (a -> Maybe b) -> [a] -> [b] -mapMaybe JannoRow -> Maybe (JannoList FilePath) -jPublication ([JannoRow] -> [FilePath]) -> [JannoRow] -> [FilePath] +mapMaybe JannoRow -> Maybe (ListColumn JannoPublication) +jPublication ([JannoRow] -> [JannoPublication]) +-> [JannoRow] -> [JannoPublication] forall a b. (a -> b) -> a -> b $ [JannoRow] -rows - literatureInBib :: [FilePath] -literatureInBib = [FilePath] -> [FilePath] +rows + literatureInBib :: [FilePath] +literatureInBib = [FilePath] -> [FilePath] forall a. Eq a => [a] -> [a] nub ([FilePath] -> [FilePath]) -> [FilePath] -> [FilePath] forall a b. (a -> b) -> a -> b @@ -2906,20 +2924,20 @@ forall a b. (a -> b) -> [a] -> [b] map BibEntry -> FilePath bibEntryId BibTeX -bibtex - literatureNotInBibButInJanno :: [FilePath] -literatureNotInBibButInJanno = [FilePath] -literatureInJanno [FilePath] -> [FilePath] -> [FilePath] +bibtex + literatureNotInBibButInJanno :: [FilePath] +literatureNotInBibButInJanno = [FilePath] +literatureInJanno [FilePath] -> [FilePath] -> [FilePath] forall a. Eq a => [a] -> [a] -> [a] \\ [FilePath] -literatureInBib - Bool -> IO () -> IO () +literatureInBib + Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless ([FilePath] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [FilePath] -literatureNotInBibButInJanno) (IO () -> IO ()) -> IO () -> IO () +literatureNotInBibButInJanno) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ PoseidonException -> IO () forall e a. Exception e => e -> IO a @@ -2928,32 +2946,32 @@ forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonCrossFileConsistencyException FilePath -pacName (FilePath -> PoseidonException) -> FilePath -> PoseidonException +pacName (FilePath -> PoseidonException) -> FilePath -> PoseidonException forall a b. (a -> b) -> a -> b $ - FilePath + FilePath "The following papers lack BibTeX entries: " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ - FilePath -> [FilePath] -> FilePath + FilePath -> [FilePath] -> FilePath forall a. [a] -> [[a]] -> [a] intercalate FilePath ", " [FilePath] -literatureNotInBibButInJanno - -findAllPoseidonYmlFiles :: FilePath -> IO [FilePath] -findAllPoseidonYmlFiles :: FilePath -> IO [FilePath] -findAllPoseidonYmlFiles FilePath -baseDir = do - [FilePath] -entries <- FilePath -> IO [FilePath] +literatureNotInBibButInJanno + +findAllPoseidonYmlFiles :: FilePath -> IO [FilePath] +findAllPoseidonYmlFiles :: FilePath -> IO [FilePath] +findAllPoseidonYmlFiles FilePath +baseDir = do + [FilePath] +entries <- FilePath -> IO [FilePath] listDirectory FilePath -baseDir - let posFiles :: [FilePath] -posFiles = ShowS -> [FilePath] -> [FilePath] +baseDir + let posFiles :: [FilePath] +posFiles = ShowS -> [FilePath] -> [FilePath] forall a b. (a -> b) -> [a] -> [b] map (FilePath -baseDir FilePath -> ShowS +baseDir FilePath -> ShowS </>) ([FilePath] -> [FilePath]) -> [FilePath] -> [FilePath] forall a b. (a -> b) -> a -> b $ (FilePath -> Bool) -> [FilePath] -> [FilePath] @@ -2967,9 +2985,9 @@ forall a b. (a -> b) -> [a] -> [b] map ShowS takeFileName [FilePath] -entries - [FilePath] -subDirs <- (FilePath -> IO Bool) -> [FilePath] -> IO [FilePath] +entries + [FilePath] +subDirs <- (FilePath -> IO Bool) -> [FilePath] -> IO [FilePath] forall (m :: * -> *) a. Applicative m => (a -> m Bool) -> [a] -> m [a] @@ -2980,13 +2998,13 @@ . ShowS -> [FilePath] -> [FilePath] forall a b. (a -> b) -> [a] -> [b] map (FilePath -baseDir FilePath -> ShowS +baseDir FilePath -> ShowS </>) ([FilePath] -> IO [FilePath]) -> [FilePath] -> IO [FilePath] forall a b. (a -> b) -> a -> b $ [FilePath] -entries - [FilePath] -morePosFiles <- ([[FilePath]] -> [FilePath]) -> IO [[FilePath]] -> IO [FilePath] +entries + [FilePath] +morePosFiles <- ([[FilePath]] -> [FilePath]) -> IO [[FilePath]] -> IO [FilePath] forall a b. (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap [[FilePath]] -> [FilePath] @@ -3003,28 +3021,28 @@ findAllPoseidonYmlFiles ([FilePath] -> IO [FilePath]) -> [FilePath] -> IO [FilePath] forall a b. (a -> b) -> a -> b $ [FilePath] -subDirs - [FilePath] -> IO [FilePath] +subDirs + [FilePath] -> IO [FilePath] forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return ([FilePath] -> IO [FilePath]) -> [FilePath] -> IO [FilePath] forall a b. (a -> b) -> a -> b $ [FilePath] -posFiles [FilePath] -> [FilePath] -> [FilePath] +posFiles [FilePath] -> [FilePath] -> [FilePath] forall a. [a] -> [a] -> [a] ++ [FilePath] -morePosFiles - --- | A function to read genotype data jointly from multiple packages -getJointGenotypeData :: MonadSafe m => - LogA -- ^ how messages should be logged - -> Bool -- ^ whether to generate an intersection instead of union of input sites - -> PlinkPopNameMode -- ^ how to read population labels from Plink - -> [PoseidonPackage] -- ^ A list of poseidon packages. - -> Maybe FilePath -- ^ a genotype file to select SNPs from - -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) - -- ^ a pair of the EigenstratIndEntries and a Producer over the Snp position values and the genotype line, joined across all packages. -getJointGenotypeData :: forall (m :: * -> *). +morePosFiles + +-- | A function to read genotype data jointly from multiple packages +getJointGenotypeData :: MonadSafe m => + LogA -- ^ how messages should be logged + -> Bool -- ^ whether to generate an intersection instead of union of input sites + -> PlinkPopNameMode -- ^ how to read population labels from Plink + -> [PoseidonPackage] -- ^ A list of poseidon packages. + -> Maybe FilePath -- ^ a genotype file to select SNPs from + -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) + -- ^ a pair of the EigenstratIndEntries and a Producer over the Snp position values and the genotype line, joined across all packages. +getJointGenotypeData :: forall (m :: * -> *). MonadSafe m => LogA -> Bool @@ -3033,15 +3051,15 @@ -> Maybe FilePath -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) -getJointGenotypeData LogA -logA Bool -intersect PlinkPopNameMode -popMode [PoseidonPackage] -pacs Maybe FilePath -maybeSnpFile = do - [([EigenstratIndEntry], +getJointGenotypeData LogA +logA Bool +intersect PlinkPopNameMode +popMode [PoseidonPackage] +pacs Maybe FilePath +maybeSnpFile = do + [([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())] -genotypeTuples <- [m ([EigenstratIndEntry], +genotypeTuples <- [m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())] -> m [([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())] @@ -3063,14 +3081,14 @@ Producer (EigenstratSnpEntry, GenoLine) m ()) loadGenotypeData (PoseidonPackage -> FilePath posPacBaseDir PoseidonPackage -pac) (PoseidonPackage -> GenotypeDataSpec +pac) (PoseidonPackage -> GenotypeDataSpec posPacGenotypeData PoseidonPackage -pac) PlinkPopNameMode -popMode | PoseidonPackage -pac <- [PoseidonPackage] -pacs] - let indEntries :: [[EigenstratIndEntry]] -indEntries = (([EigenstratIndEntry], +pac) PlinkPopNameMode +popMode | PoseidonPackage +pac <- [PoseidonPackage] +pacs] + let indEntries :: [[EigenstratIndEntry]] +indEntries = (([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) -> [EigenstratIndEntry]) -> [([EigenstratIndEntry], @@ -3083,29 +3101,29 @@ forall a b. (a, b) -> a fst [([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())] -genotypeTuples - jointIndEntries :: [EigenstratIndEntry] -jointIndEntries = [[EigenstratIndEntry]] -> [EigenstratIndEntry] +genotypeTuples + jointIndEntries :: [EigenstratIndEntry] +jointIndEntries = [[EigenstratIndEntry]] -> [EigenstratIndEntry] forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [[EigenstratIndEntry]] -indEntries - nrInds :: [Int] -nrInds = ([EigenstratIndEntry] -> Int) -> [[EigenstratIndEntry]] -> [Int] +indEntries + nrInds :: [Int] +nrInds = ([EigenstratIndEntry] -> Int) -> [[EigenstratIndEntry]] -> [Int] forall a b. (a -> b) -> [a] -> [b] map [EigenstratIndEntry] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [[EigenstratIndEntry]] -indEntries - pacNames :: [FilePath] -pacNames = (PoseidonPackage -> FilePath) -> [PoseidonPackage] -> [FilePath] +indEntries + pacNames :: [FilePath] +pacNames = (PoseidonPackage -> FilePath) -> [PoseidonPackage] -> [FilePath] forall a b. (a -> b) -> [a] -> [b] map PoseidonPackage -> FilePath forall a. HasNameAndVersion a => a -> FilePath getPacName [PoseidonPackage] -pacs - prod :: Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] -prod = (((EigenstratSnpEntry, GenoLine) +pacs + prod :: Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] +prod = (((EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) -> Ordering) -> [Producer (EigenstratSnpEntry, GenoLine) m ()] -> Producer [Maybe (EigenstratSnpEntry, GenoLine)] m [()] @@ -3115,7 +3133,7 @@ -> [Producer a m r] -> Producer [Maybe a] m [r] orderedZipAll (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) -> Ordering -compFunc ([Producer (EigenstratSnpEntry, GenoLine) m ()] +compFunc ([Producer (EigenstratSnpEntry, GenoLine) m ()] -> Producer [Maybe (EigenstratSnpEntry, GenoLine)] m [()]) -> ([([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())] @@ -3137,7 +3155,7 @@ forall a b. (a, b) -> b snd) [([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())] -genotypeTuples Producer [Maybe (EigenstratSnpEntry, GenoLine)] m [()] +genotypeTuples Producer [Maybe (EigenstratSnpEntry, GenoLine)] m [()] -> Proxy () [Maybe (EigenstratSnpEntry, GenoLine)] @@ -3150,7 +3168,7 @@ Functor m => Proxy a' a () b m r -> Proxy () b c' c m r -> Proxy a' a c' c m r >-> - ([Maybe (EigenstratSnpEntry, GenoLine)] -> Bool) + ([Maybe (EigenstratSnpEntry, GenoLine)] -> Bool) -> Proxy () [Maybe (EigenstratSnpEntry, GenoLine)] @@ -3160,7 +3178,7 @@ [()] forall (m :: * -> *) a r. Functor m => (a -> Bool) -> Pipe a a m r P.filter [Maybe (EigenstratSnpEntry, GenoLine)] -> Bool -filterUnionOrIntersection Producer [Maybe (EigenstratSnpEntry, GenoLine)] m [()] +filterUnionOrIntersection Producer [Maybe (EigenstratSnpEntry, GenoLine)] m [()] -> Proxy () [Maybe (EigenstratSnpEntry, GenoLine)] @@ -3193,29 +3211,29 @@ m r joinEntryPipe LogA -logA [Int] -nrInds [FilePath] -pacNames - Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] -jointProducer <- case Maybe FilePath -maybeSnpFile of - Maybe FilePath +logA [Int] +nrInds [FilePath] +pacNames + Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] +jointProducer <- case Maybe FilePath +maybeSnpFile of + Maybe FilePath Nothing -> do - Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] + Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] -> m (Proxy X () () (EigenstratSnpEntry, GenoLine) m [()]) forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] -prod - Just FilePath -fn -> do - let snpProd :: Proxy X () () EigenstratSnpEntry m () -snpProd = FilePath -> Proxy X () () EigenstratSnpEntry m () +prod + Just FilePath +fn -> do + let snpProd :: Proxy X () () EigenstratSnpEntry m () +snpProd = FilePath -> Proxy X () () EigenstratSnpEntry m () forall (m :: * -> *). MonadSafe m => FilePath -> Producer EigenstratSnpEntry m () loadBimOrSnpFile FilePath -fn Proxy X () () EigenstratSnpEntry m () +fn Proxy X () () EigenstratSnpEntry m () -> Proxy () EigenstratSnpEntry () EigenstratSnpEntry m () -> Proxy X () () EigenstratSnpEntry m () forall (m :: * -> *) a' a b r c' c. @@ -3227,8 +3245,8 @@ (MonadIO m, MonadSafe m, Show a) => (a -> a -> Ordering) -> Pipe a a m r orderCheckPipe EigenstratSnpEntry -> EigenstratSnpEntry -> Ordering -compFunc3 - Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] +compFunc3 + Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] -> m (Proxy X () () (EigenstratSnpEntry, GenoLine) m [()]) forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a @@ -3251,9 +3269,9 @@ -> Producer b m r2 -> Producer (Maybe a, Maybe b) m (r1, r2) orderedZip EigenstratSnpEntry -> (EigenstratSnpEntry, GenoLine) -> Ordering -compFunc2 Proxy X () () EigenstratSnpEntry m () -snpProd Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] -prod Producer +compFunc2 Proxy X () () EigenstratSnpEntry m () +snpProd Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] +prod Producer (Maybe EigenstratSnpEntry, Maybe (EigenstratSnpEntry, GenoLine)) m ((), [()]) @@ -3346,37 +3364,37 @@ (EigenstratSnpEntry, GenoLine) m r -selectSnps ([Int] -> Int +selectSnps ([Int] -> Int forall a. Num a => [a] -> a forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum [Int] -nrInds) - ([EigenstratIndEntry], +nrInds) + ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return ([EigenstratIndEntry] -jointIndEntries, Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] +jointIndEntries, Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] -> Producer (EigenstratSnpEntry, GenoLine) m () forall (f :: * -> *) a. Functor f => f a -> f () void Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] -jointProducer) - where - compFunc :: (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) -> Ordering - compFunc :: (EigenstratSnpEntry, GenoLine) +jointProducer) + where + compFunc :: (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) -> Ordering + compFunc :: (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) -> Ordering -compFunc (EigenstratSnpEntry Chrom -c1 Int -p1 Double +compFunc (EigenstratSnpEntry Chrom +c1 Int +p1 Double _ ByteString _ Char _ Char _, GenoLine -_) (EigenstratSnpEntry Chrom -c2 Int -p2 Double +_) (EigenstratSnpEntry Chrom +c2 Int +p2 Double _ ByteString _ Char _ Char @@ -3384,21 +3402,21 @@ _) = (Chrom, Int) -> (Chrom, Int) -> Ordering forall a. Ord a => a -> a -> Ordering compare (Chrom -c1, Int -p1) (Chrom -c2, Int -p2) - compFunc2 :: EigenstratSnpEntry -> (EigenstratSnpEntry, GenoLine) -> Ordering - compFunc2 :: EigenstratSnpEntry -> (EigenstratSnpEntry, GenoLine) -> Ordering -compFunc2 (EigenstratSnpEntry Chrom -c1 Int -p1 Double +c1, Int +p1) (Chrom +c2, Int +p2) + compFunc2 :: EigenstratSnpEntry -> (EigenstratSnpEntry, GenoLine) -> Ordering + compFunc2 :: EigenstratSnpEntry -> (EigenstratSnpEntry, GenoLine) -> Ordering +compFunc2 (EigenstratSnpEntry Chrom +c1 Int +p1 Double _ ByteString _ Char _ Char -_) (EigenstratSnpEntry Chrom -c2 Int -p2 Double +_) (EigenstratSnpEntry Chrom +c2 Int +p2 Double _ ByteString _ Char _ Char @@ -3406,37 +3424,37 @@ _) = (Chrom, Int) -> (Chrom, Int) -> Ordering forall a. Ord a => a -> a -> Ordering compare (Chrom -c1, Int -p1) (Chrom -c2, Int -p2) - compFunc3 :: EigenstratSnpEntry -> EigenstratSnpEntry -> Ordering - compFunc3 :: EigenstratSnpEntry -> EigenstratSnpEntry -> Ordering -compFunc3 (EigenstratSnpEntry Chrom -c1 Int -p1 Double +c1, Int +p1) (Chrom +c2, Int +p2) + compFunc3 :: EigenstratSnpEntry -> EigenstratSnpEntry -> Ordering + compFunc3 :: EigenstratSnpEntry -> EigenstratSnpEntry -> Ordering +compFunc3 (EigenstratSnpEntry Chrom +c1 Int +p1 Double _ ByteString _ Char _ Char -_) (EigenstratSnpEntry Chrom -c2 Int -p2 Double +_) (EigenstratSnpEntry Chrom +c2 Int +p2 Double _ ByteString _ Char _ Char _) = (Chrom, Int) -> (Chrom, Int) -> Ordering forall a. Ord a => a -> a -> Ordering compare (Chrom -c1, Int -p1) (Chrom -c2, Int -p2) - filterUnionOrIntersection :: [Maybe (EigenstratSnpEntry, GenoLine)] -> Bool - filterUnionOrIntersection :: [Maybe (EigenstratSnpEntry, GenoLine)] -> Bool -filterUnionOrIntersection [Maybe (EigenstratSnpEntry, GenoLine)] -maybeTuples = Bool -> Bool +c1, Int +p1) (Chrom +c2, Int +p2) + filterUnionOrIntersection :: [Maybe (EigenstratSnpEntry, GenoLine)] -> Bool + filterUnionOrIntersection :: [Maybe (EigenstratSnpEntry, GenoLine)] -> Bool +filterUnionOrIntersection [Maybe (EigenstratSnpEntry, GenoLine)] +maybeTuples = Bool -> Bool not Bool -intersect Bool -> Bool -> Bool +intersect Bool -> Bool -> Bool || Bool -> Bool not ((Maybe (EigenstratSnpEntry, GenoLine) -> Bool) -> [Maybe (EigenstratSnpEntry, GenoLine)] -> Bool @@ -3444,9 +3462,9 @@ any Maybe (EigenstratSnpEntry, GenoLine) -> Bool forall a. Maybe a -> Bool isNothing [Maybe (EigenstratSnpEntry, GenoLine)] -maybeTuples) - selectSnps :: (Monad m) => Int -> Pipe (Maybe EigenstratSnpEntry, Maybe (EigenstratSnpEntry, GenoLine)) (EigenstratSnpEntry, GenoLine) m r - selectSnps :: forall (m :: * -> *) r. +maybeTuples) + selectSnps :: (Monad m) => Int -> Pipe (Maybe EigenstratSnpEntry, Maybe (EigenstratSnpEntry, GenoLine)) (EigenstratSnpEntry, GenoLine) m r + selectSnps :: forall (m :: * -> *) r. Monad m => Int -> Pipe @@ -3454,8 +3472,8 @@ (EigenstratSnpEntry, GenoLine) m r -selectSnps Int -n = Proxy +selectSnps Int +n = Proxy () (Maybe EigenstratSnpEntry, Maybe (EigenstratSnpEntry, GenoLine)) () @@ -3523,10 +3541,10 @@ r forall a b. (a -> b) -> a -> b $ \case - (Just EigenstratSnpEntry -_, Just (EigenstratSnpEntry -es, GenoLine -gl)) -> (EigenstratSnpEntry, GenoLine) + (Just EigenstratSnpEntry +_, Just (EigenstratSnpEntry +es, GenoLine +gl)) -> (EigenstratSnpEntry, GenoLine) -> Proxy () (Maybe EigenstratSnpEntry, Maybe (EigenstratSnpEntry, GenoLine)) @@ -3536,10 +3554,10 @@ () forall (m :: * -> *) a x' x. Functor m => a -> Proxy x' x () a m () yield (EigenstratSnpEntry -es, GenoLine -gl) - (Just EigenstratSnpEntry -snp, Maybe (EigenstratSnpEntry, GenoLine) +es, GenoLine +gl) + (Just EigenstratSnpEntry +snp, Maybe (EigenstratSnpEntry, GenoLine) Nothing) -> Bool -> Proxy () @@ -3557,7 +3575,7 @@ () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -intersect (Proxy +intersect (Proxy () (Maybe EigenstratSnpEntry, Maybe (EigenstratSnpEntry, GenoLine)) () @@ -3596,12 +3614,12 @@ () forall (m :: * -> *) a x' x. Functor m => a -> Proxy x' x () a m () yield (EigenstratSnpEntry -snp, Int -> GenoEntry -> GenoLine +snp, Int -> GenoEntry -> GenoLine forall a. Int -> a -> Vector a V.replicate Int -n GenoEntry +n GenoEntry Missing) - (Maybe EigenstratSnpEntry, Maybe (EigenstratSnpEntry, GenoLine)) + (Maybe EigenstratSnpEntry, Maybe (EigenstratSnpEntry, GenoLine)) _ -> () -> Proxy () @@ -3621,11 +3639,11 @@ a forall (m :: * -> *) a. Monad m => a -> m a return () - -getJointJanno :: [PoseidonPackage] -> JannoRows -getJointJanno :: [PoseidonPackage] -> JannoRows -getJointJanno [PoseidonPackage] -pacs = [JannoRows] -> JannoRows + +getJointJanno :: [PoseidonPackage] -> JannoRows +getJointJanno :: [PoseidonPackage] -> JannoRows +getJointJanno [PoseidonPackage] +pacs = [JannoRows] -> JannoRows forall a. Monoid a => [a] -> a mconcat ([JannoRows] -> JannoRows) -> [JannoRows] -> JannoRows forall a b. (a -> b) -> a -> b @@ -3633,21 +3651,21 @@ forall a b. (a -> b) -> [a] -> [b] map PoseidonPackage -> JannoRows posPacJanno [PoseidonPackage] -pacs - -getJannoRowsFromPac :: PoseidonPackage -> [JannoRow] -getJannoRowsFromPac :: PoseidonPackage -> [JannoRow] -getJannoRowsFromPac PoseidonPackage -pac = let (JannoRows [JannoRow] -rows) = PoseidonPackage -> JannoRows +pacs + +getJannoRowsFromPac :: PoseidonPackage -> [JannoRow] +getJannoRowsFromPac :: PoseidonPackage -> [JannoRow] +getJannoRowsFromPac PoseidonPackage +pac = let (JannoRows [JannoRow] +rows) = PoseidonPackage -> JannoRows posPacJanno PoseidonPackage -pac in [JannoRow] -rows - --- | A pipe to merge the genotype entries from multiple packages. --- Uses the `joinEntries` function and catches exceptions to skip the respective SNPs. -joinEntryPipe :: (MonadIO m) => LogA -> [Int] -> [String] -> Pipe [Maybe (EigenstratSnpEntry, GenoLine)] (EigenstratSnpEntry, GenoLine) m r -joinEntryPipe :: forall (m :: * -> *) r. +pac in [JannoRow] +rows + +-- | A pipe to merge the genotype entries from multiple packages. +-- Uses the `joinEntries` function and catches exceptions to skip the respective SNPs. +joinEntryPipe :: (MonadIO m) => LogA -> [Int] -> [String] -> Pipe [Maybe (EigenstratSnpEntry, GenoLine)] (EigenstratSnpEntry, GenoLine) m r +joinEntryPipe :: forall (m :: * -> *) r. MonadIO m => LogA -> [Int] @@ -3657,10 +3675,10 @@ (EigenstratSnpEntry, GenoLine) m r -joinEntryPipe LogA -logA [Int] -nrInds [FilePath] -pacNames = Proxy +joinEntryPipe LogA +logA [Int] +nrInds [FilePath] +pacNames = Proxy () [Maybe (EigenstratSnpEntry, GenoLine)] () @@ -3725,10 +3743,10 @@ m r forall a b. (a -> b) -> a -> b -$ \[Maybe (EigenstratSnpEntry, GenoLine)] -maybeEntries -> do - Either PoseidonException (EigenstratSnpEntry, GenoLine) -eitherJE <- IO (Either PoseidonException (EigenstratSnpEntry, GenoLine)) +$ \[Maybe (EigenstratSnpEntry, GenoLine)] +maybeEntries -> do + Either PoseidonException (EigenstratSnpEntry, GenoLine) +eitherJE <- IO (Either PoseidonException (EigenstratSnpEntry, GenoLine)) -> Proxy () [Maybe (EigenstratSnpEntry, GenoLine)] @@ -3800,15 +3818,15 @@ -> [Maybe (EigenstratSnpEntry, GenoLine)] -> m (EigenstratSnpEntry, GenoLine) joinEntries LogA -logA [Int] -nrInds [FilePath] -pacNames [Maybe (EigenstratSnpEntry, GenoLine)] -maybeEntries - case Either PoseidonException (EigenstratSnpEntry, GenoLine) -eitherJE of - Left (PoseidonGenotypeException FilePath -err) -> - LogA +logA [Int] +nrInds [FilePath] +pacNames [Maybe (EigenstratSnpEntry, GenoLine)] +maybeEntries + case Either PoseidonException (EigenstratSnpEntry, GenoLine) +eitherJE of + Left (PoseidonGenotypeException FilePath +err) -> + LogA -> PoseidonIO () -> Proxy () @@ -3819,7 +3837,7 @@ () forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () logWithEnv LogA -logA (PoseidonIO () +logA (PoseidonIO () -> Proxy () [Maybe (EigenstratSnpEntry, GenoLine)] @@ -3859,9 +3877,9 @@ "Skipping SNP due to " FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath -err - Left PoseidonException -e -> IO () +err + Left PoseidonException +e -> IO () -> Proxy () [Maybe (EigenstratSnpEntry, GenoLine)] @@ -3917,10 +3935,10 @@ () forall a b. (a -> b) -> a -> b $ PoseidonException -e - Right (EigenstratSnpEntry -eigenstratSnpEntry, GenoLine -genoLine) -> (EigenstratSnpEntry, GenoLine) +e + Right (EigenstratSnpEntry +eigenstratSnpEntry, GenoLine +genoLine) -> (EigenstratSnpEntry, GenoLine) -> Proxy () [Maybe (EigenstratSnpEntry, GenoLine)] @@ -3930,18 +3948,18 @@ () forall (m :: * -> *) a x' x. Functor m => a -> Proxy x' x () a m () yield (EigenstratSnpEntry -eigenstratSnpEntry, GenoLine -genoLine) - -loadBimOrSnpFile :: (MonadSafe m) => FilePath -> Producer EigenstratSnpEntry m () -loadBimOrSnpFile :: forall (m :: * -> *). +eigenstratSnpEntry, GenoLine +genoLine) + +loadBimOrSnpFile :: (MonadSafe m) => FilePath -> Producer EigenstratSnpEntry m () +loadBimOrSnpFile :: forall (m :: * -> *). MonadSafe m => FilePath -> Producer EigenstratSnpEntry m () -loadBimOrSnpFile FilePath -fn - | ShowS +loadBimOrSnpFile FilePath +fn + | ShowS takeExtension FilePath -fn FilePath -> [FilePath] -> Bool +fn FilePath -> [FilePath] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [FilePath @@ -3951,10 +3969,10 @@ MonadSafe m => FilePath -> Producer EigenstratSnpEntry m () readEigenstratSnpFile FilePath -fn - | ShowS +fn + | ShowS takeExtension FilePath -fn FilePath -> [FilePath] -> Bool +fn FilePath -> [FilePath] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [FilePath @@ -3964,8 +3982,8 @@ MonadSafe m => FilePath -> Producer EigenstratSnpEntry m () readBimFile FilePath -fn - | Bool +fn + | Bool otherwise = PoseidonException -> Producer EigenstratSnpEntry m () forall e a. Exception e => @@ -3974,46 +3992,46 @@ throwM (FilePath -> PoseidonException PoseidonGenotypeException FilePath "option snpFile requires file endings to be *.snp or *.bim or *.snp.gz or *.bim.gz") - --- | A function to create a minimal POSEIDON package -newMinimalPackageTemplate :: FilePath -> String -> GenotypeDataSpec -> PoseidonPackage -newMinimalPackageTemplate :: FilePath -> FilePath -> GenotypeDataSpec -> PoseidonPackage -newMinimalPackageTemplate FilePath -baseDir FilePath -name (GenotypeDataSpec GenotypeFormatSpec -format_ FilePath -geno Maybe FilePath -_ FilePath -snp Maybe FilePath -_ FilePath -ind Maybe FilePath -_ Maybe SNPSetSpec -snpSet_) = - PoseidonPackage { - posPacBaseDir :: FilePath + +-- | A function to create a minimal POSEIDON package +newMinimalPackageTemplate :: FilePath -> String -> GenotypeDataSpec -> PoseidonPackage +newMinimalPackageTemplate :: FilePath -> FilePath -> GenotypeDataSpec -> PoseidonPackage +newMinimalPackageTemplate FilePath +baseDir FilePath +name (GenotypeDataSpec GenotypeFormatSpec +format_ FilePath +geno Maybe FilePath +_ FilePath +snp Maybe FilePath +_ FilePath +ind Maybe FilePath +_ Maybe SNPSetSpec +snpSet_) = + PoseidonPackage { + posPacBaseDir :: FilePath posPacBaseDir = FilePath -baseDir - , posPacPoseidonVersion :: Version +baseDir + , posPacPoseidonVersion :: Version posPacPoseidonVersion = PoseidonVersion -> Version asVersion PoseidonVersion latestPoseidonVersion - , posPacNameAndVersion :: PacNameAndVersion + , posPacNameAndVersion :: PacNameAndVersion posPacNameAndVersion = FilePath -> Maybe Version -> PacNameAndVersion PacNameAndVersion FilePath -name Maybe Version +name Maybe Version forall a. Maybe a Nothing - , posPacDescription :: Maybe FilePath + , posPacDescription :: Maybe FilePath posPacDescription = Maybe FilePath forall a. Maybe a Nothing - , posPacContributor :: [ContributorSpec] + , posPacContributor :: [ContributorSpec] posPacContributor = [] - , posPacLastModified :: Maybe Day + , posPacLastModified :: Maybe Day posPacLastModified = Maybe Day forall a. Maybe a Nothing - , posPacGenotypeData :: GenotypeDataSpec + , posPacGenotypeData :: GenotypeDataSpec posPacGenotypeData = GenotypeFormatSpec -> FilePath -> Maybe FilePath @@ -4024,95 +4042,95 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -format_ (ShowS +format_ (ShowS takeFileName FilePath -geno) Maybe FilePath +geno) Maybe FilePath forall a. Maybe a Nothing (ShowS takeFileName FilePath -snp) Maybe FilePath +snp) Maybe FilePath forall a. Maybe a Nothing (ShowS takeFileName FilePath -ind) Maybe FilePath +ind) Maybe FilePath forall a. Maybe a Nothing Maybe SNPSetSpec -snpSet_ - , posPacJannoFile :: Maybe FilePath +snpSet_ + , posPacJannoFile :: Maybe FilePath posPacJannoFile = Maybe FilePath forall a. Maybe a Nothing - , posPacJanno :: JannoRows + , posPacJanno :: JannoRows posPacJanno = JannoRows forall a. Monoid a => a mempty - , posPacJannoFileChkSum :: Maybe FilePath + , posPacJannoFileChkSum :: Maybe FilePath posPacJannoFileChkSum = Maybe FilePath forall a. Maybe a Nothing - , posPacSeqSourceFile :: Maybe FilePath + , posPacSeqSourceFile :: Maybe FilePath posPacSeqSourceFile = Maybe FilePath forall a. Maybe a Nothing - , posPacSeqSource :: SeqSourceRows + , posPacSeqSource :: SeqSourceRows posPacSeqSource = SeqSourceRows forall a. Monoid a => a mempty - , posPacSeqSourceFileChkSum :: Maybe FilePath + , posPacSeqSourceFileChkSum :: Maybe FilePath posPacSeqSourceFileChkSum = Maybe FilePath forall a. Maybe a Nothing - , posPacBibFile :: Maybe FilePath + , posPacBibFile :: Maybe FilePath posPacBibFile = Maybe FilePath forall a. Maybe a Nothing - , posPacBib :: BibTeX + , posPacBib :: BibTeX posPacBib = [] :: BibTeX - , posPacBibFileChkSum :: Maybe FilePath + , posPacBibFileChkSum :: Maybe FilePath posPacBibFileChkSum = Maybe FilePath forall a. Maybe a Nothing - , posPacReadmeFile :: Maybe FilePath + , posPacReadmeFile :: Maybe FilePath posPacReadmeFile = Maybe FilePath forall a. Maybe a Nothing - , posPacChangelogFile :: Maybe FilePath + , posPacChangelogFile :: Maybe FilePath posPacChangelogFile = Maybe FilePath forall a. Maybe a Nothing - } - -makePseudoPackageFromGenotypeData :: GenotypeDataSpec -> PoseidonIO PoseidonPackage -makePseudoPackageFromGenotypeData :: GenotypeDataSpec -> ReaderT Env IO PoseidonPackage -makePseudoPackageFromGenotypeData (GenotypeDataSpec GenotypeFormatSpec -format_ FilePath -genoFile_ Maybe FilePath -_ FilePath -snpFile_ Maybe FilePath -_ FilePath -indFile_ Maybe FilePath -_ Maybe SNPSetSpec -snpSet_) = do - let baseDir :: FilePath -baseDir = FilePath -> FilePath -> ShowS -getBaseDir FilePath -genoFile_ FilePath -snpFile_ FilePath -indFile_ - outInd :: FilePath -outInd = ShowS + } + +makePseudoPackageFromGenotypeData :: GenotypeDataSpec -> PoseidonIO PoseidonPackage +makePseudoPackageFromGenotypeData :: GenotypeDataSpec -> ReaderT Env IO PoseidonPackage +makePseudoPackageFromGenotypeData (GenotypeDataSpec GenotypeFormatSpec +format_ FilePath +genoFile_ Maybe FilePath +_ FilePath +snpFile_ Maybe FilePath +_ FilePath +indFile_ Maybe FilePath +_ Maybe SNPSetSpec +snpSet_) = do + let baseDir :: FilePath +baseDir = FilePath -> FilePath -> ShowS +getBaseDir FilePath +genoFile_ FilePath +snpFile_ FilePath +indFile_ + outInd :: FilePath +outInd = ShowS takeFileName FilePath -indFile_ - outSnp :: FilePath -outSnp = ShowS +indFile_ + outSnp :: FilePath +outSnp = ShowS takeFileName FilePath -snpFile_ - outGeno :: FilePath -outGeno = ShowS +snpFile_ + outGeno :: FilePath +outGeno = ShowS takeFileName FilePath -genoFile_ - genotypeData :: GenotypeDataSpec -genotypeData = GenotypeFormatSpec +genoFile_ + genotypeData :: GenotypeDataSpec +genotypeData = GenotypeFormatSpec -> FilePath -> Maybe FilePath -> FilePath @@ -4122,27 +4140,27 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -format_ FilePath -outGeno Maybe FilePath +format_ FilePath +outGeno Maybe FilePath forall a. Maybe a Nothing FilePath -outSnp Maybe FilePath +outSnp Maybe FilePath forall a. Maybe a Nothing FilePath -outInd Maybe FilePath +outInd Maybe FilePath forall a. Maybe a Nothing Maybe SNPSetSpec -snpSet_ - pacName :: FilePath -pacName = ShowS +snpSet_ + pacName :: FilePath +pacName = ShowS takeBaseName FilePath -genoFile_ - [EigenstratIndEntry] -inds <- FilePath -> GenotypeDataSpec -> PoseidonIO [EigenstratIndEntry] +genoFile_ + [EigenstratIndEntry] +inds <- FilePath -> GenotypeDataSpec -> PoseidonIO [EigenstratIndEntry] loadIndividuals FilePath -baseDir GenotypeDataSpec -genotypeData - FilePath +baseDir GenotypeDataSpec +genotypeData + FilePath -> FilePath -> GenotypeDataSpec -> Maybe (Either [EigenstratIndEntry] JannoRows) @@ -4150,111 +4168,111 @@ -> BibTeX -> ReaderT Env IO PoseidonPackage newPackageTemplate FilePath -baseDir FilePath -pacName GenotypeDataSpec -genotypeData (Either [EigenstratIndEntry] JannoRows +baseDir FilePath +pacName GenotypeDataSpec +genotypeData (Either [EigenstratIndEntry] JannoRows -> Maybe (Either [EigenstratIndEntry] JannoRows) forall a. a -> Maybe a Just ([EigenstratIndEntry] -> Either [EigenstratIndEntry] JannoRows forall a b. a -> Either a b Left [EigenstratIndEntry] -inds)) SeqSourceRows +inds)) SeqSourceRows forall a. Monoid a => a mempty [] - where - getBaseDir :: FilePath -> FilePath -> FilePath -> FilePath - getBaseDir :: FilePath -> FilePath -> ShowS -getBaseDir FilePath -g FilePath -s FilePath -i = - let baseDirGeno :: FilePath -baseDirGeno = ShowS + where + getBaseDir :: FilePath -> FilePath -> FilePath -> FilePath + getBaseDir :: FilePath -> FilePath -> ShowS +getBaseDir FilePath +g FilePath +s FilePath +i = + let baseDirGeno :: FilePath +baseDirGeno = ShowS takeDirectory FilePath -genoFile_ - baseDirSnp :: FilePath -baseDirSnp = ShowS +genoFile_ + baseDirSnp :: FilePath +baseDirSnp = ShowS takeDirectory FilePath -snpFile_ - baseDirInd :: FilePath -baseDirInd = ShowS +snpFile_ + baseDirInd :: FilePath +baseDirInd = ShowS takeDirectory FilePath -indFile_ - in if FilePath -baseDirGeno FilePath -> FilePath -> Bool +indFile_ + in if FilePath +baseDirGeno FilePath -> FilePath -> Bool forall a. Eq a => a -> a -> Bool == FilePath -baseDirSnp Bool -> Bool -> Bool +baseDirSnp Bool -> Bool -> Bool && FilePath -baseDirSnp FilePath -> FilePath -> Bool +baseDirSnp FilePath -> FilePath -> Bool forall a. Eq a => a -> a -> Bool == FilePath -baseDirInd - then FilePath -baseDirGeno - else PoseidonException -> FilePath +baseDirInd + then FilePath +baseDirGeno + else PoseidonException -> FilePath forall e a. Exception e => e -> [a] forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (PoseidonException -> FilePath) -> PoseidonException -> FilePath forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> FilePath -> PoseidonException PoseidonUnequalBaseDirException FilePath -g FilePath -s FilePath -i - --- | A function to create a more complete POSEIDON package --- This will take only the filenames of the provided files, so it assumes that the files will be copied into --- the directory into which the YAML file will be written -newPackageTemplate :: - FilePath - -> String - -> GenotypeDataSpec - -> Maybe (Either [EigenstratIndEntry] JannoRows) - -> SeqSourceRows - -> BibTeX - -> PoseidonIO PoseidonPackage -newPackageTemplate :: FilePath +g FilePath +s FilePath +i + +-- | A function to create a more complete POSEIDON package +-- This will take only the filenames of the provided files, so it assumes that the files will be copied into +-- the directory into which the YAML file will be written +newPackageTemplate :: + FilePath + -> String + -> GenotypeDataSpec + -> Maybe (Either [EigenstratIndEntry] JannoRows) + -> SeqSourceRows + -> BibTeX + -> PoseidonIO PoseidonPackage +newPackageTemplate :: FilePath -> FilePath -> GenotypeDataSpec -> Maybe (Either [EigenstratIndEntry] JannoRows) -> SeqSourceRows -> BibTeX -> ReaderT Env IO PoseidonPackage -newPackageTemplate FilePath -baseDir FilePath -name GenotypeDataSpec -genoData Maybe (Either [EigenstratIndEntry] JannoRows) -indsOrJanno SeqSourceRows -seqSource BibTeX -bib = do - (UTCTime Day -today DiffTime +newPackageTemplate FilePath +baseDir FilePath +name GenotypeDataSpec +genoData Maybe (Either [EigenstratIndEntry] JannoRows) +indsOrJanno SeqSourceRows +seqSource BibTeX +bib = do + (UTCTime Day +today DiffTime _) <- IO UTCTime -> ReaderT Env IO UTCTime forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO UTCTime getCurrentTime - let minimalTemplate :: PoseidonPackage -minimalTemplate = FilePath -> FilePath -> GenotypeDataSpec -> PoseidonPackage + let minimalTemplate :: PoseidonPackage +minimalTemplate = FilePath -> FilePath -> GenotypeDataSpec -> PoseidonPackage newMinimalPackageTemplate FilePath -baseDir FilePath -name GenotypeDataSpec -genoData - fluffedUpTemplate :: PoseidonPackage -fluffedUpTemplate = PoseidonPackage -minimalTemplate { - posPacDescription :: Maybe FilePath +baseDir FilePath +name GenotypeDataSpec +genoData + fluffedUpTemplate :: PoseidonPackage +fluffedUpTemplate = PoseidonPackage +minimalTemplate { + posPacDescription :: Maybe FilePath posPacDescription = FilePath -> Maybe FilePath forall a. a -> Maybe a Just FilePath "Empty package template. Please add a description" - , posPacContributor :: [ContributorSpec] + , posPacContributor :: [ContributorSpec] posPacContributor = [] - , posPacNameAndVersion :: PacNameAndVersion + , posPacNameAndVersion :: PacNameAndVersion posPacNameAndVersion = FilePath -> Maybe Version -> PacNameAndVersion PacNameAndVersion FilePath -name (Version -> Maybe Version +name (Version -> Maybe Version forall a. a -> Maybe a Just (Version -> Maybe Version) -> Version -> Maybe Version forall a b. (a -> b) -> a -> b @@ -4263,163 +4281,163 @@ 0, Int 1, Int 0]) - , posPacLastModified :: Maybe Day + , posPacLastModified :: Maybe Day posPacLastModified = Day -> Maybe Day forall a. a -> Maybe a Just Day -today - } - jannoFilledTemplate :: PoseidonPackage -jannoFilledTemplate = FilePath +today + } + jannoFilledTemplate :: PoseidonPackage +jannoFilledTemplate = FilePath -> Maybe (Either [EigenstratIndEntry] JannoRows) -> PoseidonPackage -> PoseidonPackage -completeJannoSpec FilePath -name Maybe (Either [EigenstratIndEntry] JannoRows) -indsOrJanno PoseidonPackage -fluffedUpTemplate - seqSourceFilledTemplate :: PoseidonPackage -seqSourceFilledTemplate = FilePath -> SeqSourceRows -> PoseidonPackage -> PoseidonPackage -completeSeqSourceSpec FilePath -name SeqSourceRows -seqSource PoseidonPackage -jannoFilledTemplate - bibFilledTemplate :: PoseidonPackage -bibFilledTemplate = FilePath -> BibTeX -> PoseidonPackage -> PoseidonPackage -completeBibSpec FilePath -name BibTeX -bib PoseidonPackage -seqSourceFilledTemplate - PoseidonPackage -> ReaderT Env IO PoseidonPackage +completeJannoSpec FilePath +name Maybe (Either [EigenstratIndEntry] JannoRows) +indsOrJanno PoseidonPackage +fluffedUpTemplate + seqSourceFilledTemplate :: PoseidonPackage +seqSourceFilledTemplate = FilePath -> SeqSourceRows -> PoseidonPackage -> PoseidonPackage +completeSeqSourceSpec FilePath +name SeqSourceRows +seqSource PoseidonPackage +jannoFilledTemplate + bibFilledTemplate :: PoseidonPackage +bibFilledTemplate = FilePath -> BibTeX -> PoseidonPackage -> PoseidonPackage +completeBibSpec FilePath +name BibTeX +bib PoseidonPackage +seqSourceFilledTemplate + PoseidonPackage -> ReaderT Env IO PoseidonPackage forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -bibFilledTemplate - where - completeJannoSpec :: FilePath +bibFilledTemplate + where + completeJannoSpec :: FilePath -> Maybe (Either [EigenstratIndEntry] JannoRows) -> PoseidonPackage -> PoseidonPackage -completeJannoSpec FilePath +completeJannoSpec FilePath _ Maybe (Either [EigenstratIndEntry] JannoRows) -Nothing PoseidonPackage -inTemplate = PoseidonPackage -inTemplate - completeJannoSpec FilePath -name_ (Just (Left [EigenstratIndEntry] -a)) PoseidonPackage -inTemplate = - PoseidonPackage -inTemplate { - posPacJannoFile :: Maybe FilePath +Nothing PoseidonPackage +inTemplate = PoseidonPackage +inTemplate + completeJannoSpec FilePath +name_ (Just (Left [EigenstratIndEntry] +a)) PoseidonPackage +inTemplate = + PoseidonPackage +inTemplate { + posPacJannoFile :: Maybe FilePath posPacJannoFile = FilePath -> Maybe FilePath forall a. a -> Maybe a Just (FilePath -> Maybe FilePath) -> FilePath -> Maybe FilePath forall a b. (a -> b) -> a -> b $ FilePath -name_ FilePath -> ShowS +name_ FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath ".janno", - posPacJanno :: JannoRows + posPacJanno :: JannoRows posPacJanno = [EigenstratIndEntry] -> JannoRows createMinimalJanno [EigenstratIndEntry] -a - } - completeJannoSpec FilePath -name_ (Just (Right JannoRows -b)) PoseidonPackage -inTemplate = - PoseidonPackage -inTemplate { - posPacJannoFile :: Maybe FilePath +a + } + completeJannoSpec FilePath +name_ (Just (Right JannoRows +b)) PoseidonPackage +inTemplate = + PoseidonPackage +inTemplate { + posPacJannoFile :: Maybe FilePath posPacJannoFile = FilePath -> Maybe FilePath forall a. a -> Maybe a Just (FilePath -> Maybe FilePath) -> FilePath -> Maybe FilePath forall a b. (a -> b) -> a -> b $ FilePath -name_ FilePath -> ShowS +name_ FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath ".janno", - posPacJanno :: JannoRows + posPacJanno :: JannoRows posPacJanno = JannoRows -b - } - completeSeqSourceSpec :: FilePath -> SeqSourceRows -> PoseidonPackage -> PoseidonPackage -completeSeqSourceSpec FilePath -_ (SeqSourceRows []) PoseidonPackage -inTemplate = PoseidonPackage -inTemplate - completeSeqSourceSpec FilePath -name_ SeqSourceRows -xs PoseidonPackage -inTemplate = - PoseidonPackage -inTemplate { - posPacSeqSourceFile :: Maybe FilePath +b + } + completeSeqSourceSpec :: FilePath -> SeqSourceRows -> PoseidonPackage -> PoseidonPackage +completeSeqSourceSpec FilePath +_ (SeqSourceRows []) PoseidonPackage +inTemplate = PoseidonPackage +inTemplate + completeSeqSourceSpec FilePath +name_ SeqSourceRows +xs PoseidonPackage +inTemplate = + PoseidonPackage +inTemplate { + posPacSeqSourceFile :: Maybe FilePath posPacSeqSourceFile = FilePath -> Maybe FilePath forall a. a -> Maybe a Just (FilePath -> Maybe FilePath) -> FilePath -> Maybe FilePath forall a b. (a -> b) -> a -> b $ FilePath -name_ FilePath -> ShowS +name_ FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath ".ssf", - posPacSeqSource :: SeqSourceRows + posPacSeqSource :: SeqSourceRows posPacSeqSource = SeqSourceRows -xs - } - completeBibSpec :: FilePath -> BibTeX -> PoseidonPackage -> PoseidonPackage -completeBibSpec FilePath -_ [] PoseidonPackage -inTemplate = PoseidonPackage -inTemplate - completeBibSpec FilePath -name_ BibTeX -xs PoseidonPackage -inTemplate = - PoseidonPackage -inTemplate { - posPacBibFile :: Maybe FilePath +xs + } + completeBibSpec :: FilePath -> BibTeX -> PoseidonPackage -> PoseidonPackage +completeBibSpec FilePath +_ [] PoseidonPackage +inTemplate = PoseidonPackage +inTemplate + completeBibSpec FilePath +name_ BibTeX +xs PoseidonPackage +inTemplate = + PoseidonPackage +inTemplate { + posPacBibFile :: Maybe FilePath posPacBibFile = FilePath -> Maybe FilePath forall a. a -> Maybe a Just (FilePath -> Maybe FilePath) -> FilePath -> Maybe FilePath forall a b. (a -> b) -> a -> b $ FilePath -name_ FilePath -> ShowS +name_ FilePath -> ShowS forall a. [a] -> [a] -> [a] ++ FilePath ".bib", - posPacBib :: BibTeX + posPacBib :: BibTeX posPacBib = BibTeX -xs - } - -writePoseidonPackage :: PoseidonPackage -> IO () -writePoseidonPackage :: PoseidonPackage -> IO () -writePoseidonPackage (PoseidonPackage FilePath -baseDir Version -ver PacNameAndVersion -nameAndVer Maybe FilePath -des [ContributorSpec] -con Maybe Day -mod_ GenotypeDataSpec -geno Maybe FilePath -jannoF JannoRows -_ Maybe FilePath -jannoC Maybe FilePath -seqSourceF SeqSourceRows -_ Maybe FilePath -seqSourceC Maybe FilePath -bibF BibTeX -_ Maybe FilePath -bibFC Maybe FilePath -readF Maybe FilePath -changeF) = do - let yamlPac :: PoseidonYamlStruct -yamlPac = Version +xs + } + +writePoseidonPackage :: PoseidonPackage -> IO () +writePoseidonPackage :: PoseidonPackage -> IO () +writePoseidonPackage (PoseidonPackage FilePath +baseDir Version +ver PacNameAndVersion +nameAndVer Maybe FilePath +des [ContributorSpec] +con Maybe Day +mod_ GenotypeDataSpec +geno Maybe FilePath +jannoF JannoRows +_ Maybe FilePath +jannoC Maybe FilePath +seqSourceF SeqSourceRows +_ Maybe FilePath +seqSourceC Maybe FilePath +bibF BibTeX +_ Maybe FilePath +bibFC Maybe FilePath +readF Maybe FilePath +changeF) = do + let yamlPac :: PoseidonYamlStruct +yamlPac = Version -> FilePath -> Maybe FilePath -> [ContributorSpec] @@ -4436,42 +4454,42 @@ -> Maybe FilePath -> PoseidonYamlStruct PoseidonYamlStruct Version -ver (PacNameAndVersion -> FilePath +ver (PacNameAndVersion -> FilePath forall a. HasNameAndVersion a => a -> FilePath getPacName PacNameAndVersion -nameAndVer) Maybe FilePath -des [ContributorSpec] -con (PacNameAndVersion -> Maybe Version +nameAndVer) Maybe FilePath +des [ContributorSpec] +con (PacNameAndVersion -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PacNameAndVersion -nameAndVer) Maybe Day -mod_ GenotypeDataSpec -geno Maybe FilePath -jannoF Maybe FilePath -jannoC Maybe FilePath -seqSourceF Maybe FilePath -seqSourceC Maybe FilePath -bibF Maybe FilePath -bibFC Maybe FilePath -readF Maybe FilePath -changeF - outF :: FilePath -outF = FilePath -baseDir FilePath -> ShowS +nameAndVer) Maybe Day +mod_ GenotypeDataSpec +geno Maybe FilePath +jannoF Maybe FilePath +jannoC Maybe FilePath +seqSourceF Maybe FilePath +seqSourceC Maybe FilePath +bibF Maybe FilePath +bibFC Maybe FilePath +readF Maybe FilePath +changeF + outF :: FilePath +outF = FilePath +baseDir FilePath -> ShowS </> FilePath "POSEIDON.yml" - FilePath -> ByteString -> IO () + FilePath -> ByteString -> IO () B.writeFile FilePath -outF (ByteString -> IO ()) -> ByteString -> IO () +outF (ByteString -> IO ()) -> ByteString -> IO () forall a b. NFData a => (a -> b) -> a -> b $!! Config -> PoseidonYamlStruct -> ByteString forall a. ToJSON a => Config -> a -> ByteString encodePretty Config -opts PoseidonYamlStruct -yamlPac - where - opts :: Config -opts = Bool -> Config -> Config +opts PoseidonYamlStruct +yamlPac + where + opts :: Config +opts = Bool -> Config -> Config setConfDropNull Bool True (Config -> Config) -> Config -> Config forall a b. (a -> b) -> a -> b @@ -4482,130 +4500,130 @@ -> (Text -> Int) -> Text -> Text -> Ordering forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c `on` Text -> Int -fieldIndex) Config +fieldIndex) Config defConfig - fieldIndex :: Text -> Int -fieldIndex Text -s = Int -> Maybe Int -> Int + fieldIndex :: Text -> Int +fieldIndex Text +s = Int -> Maybe Int -> Int forall a. a -> Maybe a -> a fromMaybe ([Text] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [Text] -fields) (Maybe Int -> Int) -> Maybe Int -> Int +fields) (Maybe Int -> Int) -> Maybe Int -> Int forall a b. (a -> b) -> a -> b $ Text -s Text -> [Text] -> Maybe Int +s Text -> [Text] -> Maybe Int forall a. Eq a => a -> [a] -> Maybe Int `elemIndex` [Text] -fields - fields :: [Text] -fields = [ - Text -"poseidonVersion", +fields + fields :: [Text] +fields = [ Text -"title", +"poseidonVersion", Text -"description", +"title", Text -"contributor", +"description", Text -"name", +"contributor", Text -"email", +"name", Text -"orcid", +"email", Text -"packageVersion", +"orcid", Text -"lastModified", +"packageVersion", Text -"genotypeData", +"lastModified", Text -"format", +"genotypeData", Text -"genoFile", +"format", Text -"genoFileChkSum", +"genoFile", Text -"snpFile", +"genoFileChkSum", Text -"snpFileChkSum", +"snpFile", Text -"indFile", +"snpFileChkSum", Text -"indFileChkSum", +"indFile", Text -"snpSet", +"indFileChkSum", Text -"jannoFile", +"snpSet", Text -"jannoFileChkSum", +"jannoFile", Text -"sequencingSourceFile", +"jannoFileChkSum", Text -"sequencingSourceFileChkSum", +"sequencingSourceFile", Text -"bibFile", +"sequencingSourceFileChkSum", Text -"bibFileChkSum", +"bibFile", Text -"readmeFile", +"bibFileChkSum", Text +"readmeFile", + Text "changelogFile" - ] - -packagesToPackageInfos :: (MonadThrow m) => [PoseidonPackage] -> m [PackageInfo] -packagesToPackageInfos :: forall (m :: * -> *). + ] + +packagesToPackageInfos :: (MonadThrow m) => [PoseidonPackage] -> m [PackageInfo] +packagesToPackageInfos :: forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> m [PackageInfo] -packagesToPackageInfos [PoseidonPackage] -pacs = do - [PoseidonPackage] +packagesToPackageInfos [PoseidonPackage] +pacs = do + [PoseidonPackage] -> (PoseidonPackage -> m PackageInfo) -> m [PackageInfo] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM [PoseidonPackage] -pacs ((PoseidonPackage -> m PackageInfo) -> m [PackageInfo]) +pacs ((PoseidonPackage -> m PackageInfo) -> m [PackageInfo]) -> (PoseidonPackage -> m PackageInfo) -> m [PackageInfo] forall a b. (a -> b) -> a -> b -$ \PoseidonPackage -pac -> do - Bool -isLatest <- [PoseidonPackage] -> PoseidonPackage -> m Bool +$ \PoseidonPackage +pac -> do + Bool +isLatest <- [PoseidonPackage] -> PoseidonPackage -> m Bool forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [PoseidonPackage] -pacs PoseidonPackage -pac - PackageInfo -> m PackageInfo +pacs PoseidonPackage +pac + PackageInfo -> m PackageInfo forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return (PackageInfo -> m PackageInfo) -> PackageInfo -> m PackageInfo forall a b. (a -> b) -> a -> b $ PackageInfo { - pPac :: PacNameAndVersion + pPac :: PacNameAndVersion pPac = PoseidonPackage -> PacNameAndVersion posPacNameAndVersion PoseidonPackage -pac, - pIsLatest :: Bool +pac, + pIsLatest :: Bool pIsLatest = Bool -isLatest, - pPosVersion :: Version +isLatest, + pPosVersion :: Version pPosVersion = PoseidonPackage -> Version posPacPoseidonVersion PoseidonPackage -pac, - pDescription :: Maybe FilePath +pac, + pDescription :: Maybe FilePath pDescription = PoseidonPackage -> Maybe FilePath posPacDescription PoseidonPackage -pac, - pLastModified :: Maybe Day +pac, + pLastModified :: Maybe Day pLastModified = PoseidonPackage -> Maybe Day posPacLastModified PoseidonPackage -pac, - pNrIndividuals :: Int +pac, + pNrIndividuals :: Int pNrIndividuals = ([JannoRow] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int @@ -4614,112 +4632,121 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . PoseidonPackage -> [JannoRow] getJannoRowsFromPac) PoseidonPackage -pac - } - -getAllGroupInfo :: (MonadThrow m) => [PoseidonPackage] -> m [GroupInfo] -getAllGroupInfo :: forall (m :: * -> *). +pac + } + +getAllGroupInfo :: (MonadThrow m) => [PoseidonPackage] -> m [GroupInfo] +getAllGroupInfo :: forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> m [GroupInfo] -getAllGroupInfo [PoseidonPackage] -packages = do - let individualInfoUnnested :: [(FilePath, PacNameAndVersion)] -individualInfoUnnested = do - PoseidonPackage -pac <- [PoseidonPackage] -packages - JannoRow -jannoRow <- PoseidonPackage -> [JannoRow] +getAllGroupInfo [PoseidonPackage] +packages = do + let individualInfoUnnested :: [(GroupName, PacNameAndVersion)] +individualInfoUnnested = do + PoseidonPackage +pac <- [PoseidonPackage] +packages + JannoRow +jannoRow <- PoseidonPackage -> [JannoRow] getJannoRowsFromPac PoseidonPackage -pac - let groups :: [FilePath] -groups = JannoList FilePath -> [FilePath] -forall a. JannoList a -> [a] -getJannoList (JannoList FilePath -> [FilePath]) --> (JannoRow -> JannoList FilePath) -> JannoRow -> [FilePath] +pac + let groups :: [GroupName] +groups = ListColumn GroupName -> [GroupName] +forall a. ListColumn a -> [a] +getListColumn (ListColumn GroupName -> [GroupName]) +-> (JannoRow -> ListColumn GroupName) -> JannoRow -> [GroupName] forall b c a. (b -> c) -> (a -> b) -> a -> c -. JannoRow -> JannoList FilePath -jGroupName (JannoRow -> [FilePath]) -> JannoRow -> [FilePath] +. JannoRow -> ListColumn GroupName +jGroupName (JannoRow -> [GroupName]) -> JannoRow -> [GroupName] forall a b. (a -> b) -> a -> b $ JannoRow -jannoRow - [(FilePath -g, PoseidonPackage -> PacNameAndVersion +jannoRow + [(GroupName +g, PoseidonPackage -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion PoseidonPackage -pac) | FilePath -g <- [FilePath] -groups] - -- loop over pairs of groups and pacNames - [[(FilePath, PacNameAndVersion)]] --> ([(FilePath, PacNameAndVersion)] -> m GroupInfo) +pac) | GroupName +g <- [GroupName] +groups] + -- loop over pairs of groups and pacNames + [[(GroupName, PacNameAndVersion)]] +-> ([(GroupName, PacNameAndVersion)] -> m GroupInfo) -> m [GroupInfo] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) -forM (([(FilePath, PacNameAndVersion)] --> [[(FilePath, PacNameAndVersion)]] +forM (([(GroupName, PacNameAndVersion)] +-> [[(GroupName, PacNameAndVersion)]] forall a. Eq a => [a] -> [[a]] -group ([(FilePath, PacNameAndVersion)] - -> [[(FilePath, PacNameAndVersion)]]) --> ([(FilePath, PacNameAndVersion)] - -> [(FilePath, PacNameAndVersion)]) --> [(FilePath, PacNameAndVersion)] --> [[(FilePath, PacNameAndVersion)]] +group ([(GroupName, PacNameAndVersion)] + -> [[(GroupName, PacNameAndVersion)]]) +-> ([(GroupName, PacNameAndVersion)] + -> [(GroupName, PacNameAndVersion)]) +-> [(GroupName, PacNameAndVersion)] +-> [[(GroupName, PacNameAndVersion)]] forall b c a. (b -> c) -> (a -> b) -> a -> c -. [(FilePath, PacNameAndVersion)] -> [(FilePath, PacNameAndVersion)] +. [(GroupName, PacNameAndVersion)] +-> [(GroupName, PacNameAndVersion)] forall a. Ord a => [a] -> [a] -sort) [(FilePath, PacNameAndVersion)] -individualInfoUnnested) (([(FilePath, PacNameAndVersion)] -> m GroupInfo) -> m [GroupInfo]) --> ([(FilePath, PacNameAndVersion)] -> m GroupInfo) +sort) [(GroupName, PacNameAndVersion)] +individualInfoUnnested) (([(GroupName, PacNameAndVersion)] -> m GroupInfo) + -> m [GroupInfo]) +-> ([(GroupName, PacNameAndVersion)] -> m GroupInfo) -> m [GroupInfo] forall a b. (a -> b) -> a -> b -$ \[(FilePath, PacNameAndVersion)] -group_ -> do - let groupName :: FilePath -groupName = [FilePath] -> FilePath -forall a. HasCallStack => [a] -> a -head ([FilePath] -> FilePath) --> ([(FilePath, PacNameAndVersion)] -> [FilePath]) --> [(FilePath, PacNameAndVersion)] +$ \[(GroupName, PacNameAndVersion)] +group_ -> do + let groupName :: FilePath +groupName = GroupName -> FilePath +forall a. Show a => a -> FilePath +show (GroupName -> FilePath) +-> ([(GroupName, PacNameAndVersion)] -> GroupName) +-> [(GroupName, PacNameAndVersion)] -> FilePath forall b c a. (b -> c) -> (a -> b) -> a -> c -. ((FilePath, PacNameAndVersion) -> FilePath) --> [(FilePath, PacNameAndVersion)] -> [FilePath] +. [GroupName] -> GroupName +forall a. HasCallStack => [a] -> a +head ([GroupName] -> GroupName) +-> ([(GroupName, PacNameAndVersion)] -> [GroupName]) +-> [(GroupName, PacNameAndVersion)] +-> GroupName +forall b c a. (b -> c) -> (a -> b) -> a -> c +. ((GroupName, PacNameAndVersion) -> GroupName) +-> [(GroupName, PacNameAndVersion)] -> [GroupName] forall a b. (a -> b) -> [a] -> [b] -map (FilePath, PacNameAndVersion) -> FilePath +map (GroupName, PacNameAndVersion) -> GroupName forall a b. (a, b) -> a -fst ([(FilePath, PacNameAndVersion)] -> FilePath) --> [(FilePath, PacNameAndVersion)] -> FilePath +fst ([(GroupName, PacNameAndVersion)] -> FilePath) +-> [(GroupName, PacNameAndVersion)] -> FilePath forall a b. (a -> b) -> a -> b -$ [(FilePath, PacNameAndVersion)] -group_ - groupPac :: PacNameAndVersion -groupPac = [PacNameAndVersion] -> PacNameAndVersion +$ [(GroupName, PacNameAndVersion)] +group_ + groupPac :: PacNameAndVersion +groupPac = [PacNameAndVersion] -> PacNameAndVersion forall a. HasCallStack => [a] -> a head ([PacNameAndVersion] -> PacNameAndVersion) --> ([(FilePath, PacNameAndVersion)] -> [PacNameAndVersion]) --> [(FilePath, PacNameAndVersion)] +-> ([(GroupName, PacNameAndVersion)] -> [PacNameAndVersion]) +-> [(GroupName, PacNameAndVersion)] -> PacNameAndVersion forall b c a. (b -> c) -> (a -> b) -> a -> c -. ((FilePath, PacNameAndVersion) -> PacNameAndVersion) --> [(FilePath, PacNameAndVersion)] -> [PacNameAndVersion] +. ((GroupName, PacNameAndVersion) -> PacNameAndVersion) +-> [(GroupName, PacNameAndVersion)] -> [PacNameAndVersion] forall a b. (a -> b) -> [a] -> [b] -map (FilePath, PacNameAndVersion) -> PacNameAndVersion +map (GroupName, PacNameAndVersion) -> PacNameAndVersion forall a b. (a, b) -> b -snd ([(FilePath, PacNameAndVersion)] -> PacNameAndVersion) --> [(FilePath, PacNameAndVersion)] -> PacNameAndVersion +snd ([(GroupName, PacNameAndVersion)] -> PacNameAndVersion) +-> [(GroupName, PacNameAndVersion)] -> PacNameAndVersion forall a b. (a -> b) -> a -> b -$ [(FilePath, PacNameAndVersion)] -group_ - groupNrInds :: Int -groupNrInds = [(FilePath, PacNameAndVersion)] -> Int +$ [(GroupName, PacNameAndVersion)] +group_ + groupNrInds :: Int +groupNrInds = [(GroupName, PacNameAndVersion)] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int -length [(FilePath, PacNameAndVersion)] -group_ - Bool -isLatest <- [PacNameAndVersion] -> PacNameAndVersion -> m Bool +length [(GroupName, PacNameAndVersion)] +group_ + Bool +isLatest <- [PacNameAndVersion] -> PacNameAndVersion -> m Bool forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool @@ -4729,50 +4756,50 @@ map PoseidonPackage -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion [PoseidonPackage] -packages) PacNameAndVersion -groupPac - GroupInfo -> m GroupInfo +packages) PacNameAndVersion +groupPac + GroupInfo -> m GroupInfo forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return (GroupInfo -> m GroupInfo) -> GroupInfo -> m GroupInfo forall a b. (a -> b) -> a -> b $ FilePath -> PacNameAndVersion -> Bool -> Int -> GroupInfo GroupInfo FilePath -groupName PacNameAndVersion -groupPac Bool -isLatest Int -groupNrInds - -getJointIndividualInfo :: (MonadThrow m) => [PoseidonPackage] -> m IndividualInfoCollection -getJointIndividualInfo :: forall (m :: * -> *). +groupName PacNameAndVersion +groupPac Bool +isLatest Int +groupNrInds + +getJointIndividualInfo :: (MonadThrow m) => [PoseidonPackage] -> m IndividualInfoCollection +getJointIndividualInfo :: forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> m IndividualInfoCollection -getJointIndividualInfo [PoseidonPackage] -packages = do - [[(IndividualInfo, Bool)]] -indInfoLatestPairs <- [PoseidonPackage] +getJointIndividualInfo [PoseidonPackage] +packages = do + [[(IndividualInfo, Bool)]] +indInfoLatestPairs <- [PoseidonPackage] -> (PoseidonPackage -> m [(IndividualInfo, Bool)]) -> m [[(IndividualInfo, Bool)]] forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM [PoseidonPackage] -packages ((PoseidonPackage -> m [(IndividualInfo, Bool)]) +packages ((PoseidonPackage -> m [(IndividualInfo, Bool)]) -> m [[(IndividualInfo, Bool)]]) -> (PoseidonPackage -> m [(IndividualInfo, Bool)]) -> m [[(IndividualInfo, Bool)]] forall a b. (a -> b) -> a -> b -$ \PoseidonPackage -pac -> do - Bool -isLatest <- [PoseidonPackage] -> PoseidonPackage -> m Bool +$ \PoseidonPackage +pac -> do + Bool +isLatest <- [PoseidonPackage] -> PoseidonPackage -> m Bool forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [PoseidonPackage] -packages PoseidonPackage -pac - [JannoRow] +packages PoseidonPackage +pac + [JannoRow] -> (JannoRow -> m (IndividualInfo, Bool)) -> m [(IndividualInfo, Bool)] forall (t :: * -> *) (m :: * -> *) a b. @@ -4780,38 +4807,45 @@ t a -> (a -> m b) -> m (t b) forM (PoseidonPackage -> [JannoRow] getJannoRowsFromPac PoseidonPackage -pac) ((JannoRow -> m (IndividualInfo, Bool)) +pac) ((JannoRow -> m (IndividualInfo, Bool)) -> m [(IndividualInfo, Bool)]) -> (JannoRow -> m (IndividualInfo, Bool)) -> m [(IndividualInfo, Bool)] forall a b. (a -> b) -> a -> b -$ \JannoRow -jannoRow -> do - let indInfo :: IndividualInfo -indInfo = FilePath -> [FilePath] -> PacNameAndVersion -> IndividualInfo +$ \JannoRow +jannoRow -> do + let indInfo :: IndividualInfo +indInfo = FilePath -> [FilePath] -> PacNameAndVersion -> IndividualInfo IndividualInfo - (JannoRow -> FilePath + (JannoRow -> FilePath jPoseidonID JannoRow -jannoRow) - ((JannoList FilePath -> [FilePath] -forall a. JannoList a -> [a] -getJannoList (JannoList FilePath -> [FilePath]) --> (JannoRow -> JannoList FilePath) -> JannoRow -> [FilePath] +jannoRow) + (((GroupName -> FilePath) -> [GroupName] -> [FilePath] +forall a b. (a -> b) -> [a] -> [b] +map GroupName -> FilePath +forall a. Show a => a -> FilePath +show ([GroupName] -> [FilePath]) +-> (JannoRow -> [GroupName]) -> JannoRow -> [FilePath] forall b c a. (b -> c) -> (a -> b) -> a -> c -. JannoRow -> JannoList FilePath +. ListColumn GroupName -> [GroupName] +forall a. ListColumn a -> [a] +getListColumn (ListColumn GroupName -> [GroupName]) +-> (JannoRow -> ListColumn GroupName) -> JannoRow -> [GroupName] +forall b c a. (b -> c) -> (a -> b) -> a -> c +. JannoRow -> ListColumn GroupName jGroupName) JannoRow -jannoRow) - (PoseidonPackage -> PacNameAndVersion +jannoRow) + (PoseidonPackage -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion PoseidonPackage -pac) - (IndividualInfo, Bool) -> m (IndividualInfo, Bool) +pac) + (IndividualInfo, Bool) -> m (IndividualInfo, Bool) forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return (IndividualInfo -indInfo, Bool -isLatest) - IndividualInfoCollection -> m IndividualInfoCollection +indInfo, Bool +isLatest) + IndividualInfoCollection -> m IndividualInfoCollection forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return (((IndividualInfo, Bool) -> IndividualInfo) @@ -4830,7 +4864,7 @@ -> [[(IndividualInfo, Bool)]] -> [IndividualInfo] forall a b. (a -> b) -> a -> b $ [[(IndividualInfo, Bool)]] -indInfoLatestPairs, ((IndividualInfo, Bool) -> Bool) +indInfoLatestPairs, ((IndividualInfo, Bool) -> Bool) -> [(IndividualInfo, Bool)] -> [Bool] forall a b. (a -> b) -> [a] -> [b] map (IndividualInfo, Bool) -> Bool @@ -4846,16 +4880,16 @@ -> [[(IndividualInfo, Bool)]] -> [Bool] forall a b. (a -> b) -> a -> b $ [[(IndividualInfo, Bool)]] -indInfoLatestPairs) - +indInfoLatestPairs) -getExtendedIndividualInfo :: (MonadThrow m) => [PoseidonPackage] -> AddJannoColSpec -> m [ExtendedIndividualInfo] -getExtendedIndividualInfo :: forall (m :: * -> *). + +getExtendedIndividualInfo :: (MonadThrow m) => [PoseidonPackage] -> AddJannoColSpec -> m [ExtendedIndividualInfo] +getExtendedIndividualInfo :: forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> AddJannoColSpec -> m [ExtendedIndividualInfo] -getExtendedIndividualInfo [PoseidonPackage] -allPackages AddJannoColSpec -addJannoColSpec = [m ExtendedIndividualInfo] -> m [ExtendedIndividualInfo] +getExtendedIndividualInfo [PoseidonPackage] +allPackages AddJannoColSpec +addJannoColSpec = [m ExtendedIndividualInfo] -> m [ExtendedIndividualInfo] forall (t :: * -> *) (m :: * -> *) a. (Traversable t, Monad m) => t (m a) -> m (t a) @@ -4864,67 +4898,73 @@ -> [m ExtendedIndividualInfo] -> m [ExtendedIndividualInfo] forall a b. (a -> b) -> a -> b $ do -- list monad - PoseidonPackage -pac <- [PoseidonPackage] -allPackages -- outer loop (automatically concatenating over inner loops) - JannoRow -jannoRow <- PoseidonPackage -> [JannoRow] + PoseidonPackage +pac <- [PoseidonPackage] +allPackages -- outer loop (automatically concatenating over inner loops) + JannoRow +jannoRow <- PoseidonPackage -> [JannoRow] getJannoRowsFromPac PoseidonPackage -pac -- inner loop - let name :: FilePath -name = JannoRow -> FilePath +pac -- inner loop + let name :: FilePath +name = JannoRow -> FilePath jPoseidonID JannoRow -jannoRow - groups :: [FilePath] -groups = JannoList FilePath -> [FilePath] -forall a. JannoList a -> [a] -getJannoList (JannoList FilePath -> [FilePath]) --> (JannoRow -> JannoList FilePath) -> JannoRow -> [FilePath] +jannoRow + groups :: [FilePath] +groups = (GroupName -> FilePath) -> [GroupName] -> [FilePath] +forall a b. (a -> b) -> [a] -> [b] +map GroupName -> FilePath +forall a. Show a => a -> FilePath +show ([GroupName] -> [FilePath]) -> [GroupName] -> [FilePath] +forall a b. (a -> b) -> a -> b +$ ListColumn GroupName -> [GroupName] +forall a. ListColumn a -> [a] +getListColumn (ListColumn GroupName -> [GroupName]) +-> (JannoRow -> ListColumn GroupName) -> JannoRow -> [GroupName] forall b c a. (b -> c) -> (a -> b) -> a -> c -. JannoRow -> JannoList FilePath -jGroupName (JannoRow -> [FilePath]) -> JannoRow -> [FilePath] +. JannoRow -> ListColumn GroupName +jGroupName (JannoRow -> [GroupName]) -> JannoRow -> [GroupName] forall a b. (a -> b) -> a -> b $ JannoRow -jannoRow - colNames :: [FilePath] -colNames = case AddJannoColSpec -addJannoColSpec of - AddJannoColSpec +jannoRow + colNames :: [FilePath] +colNames = case AddJannoColSpec +addJannoColSpec of + AddJannoColSpec AddJannoColAll -> [FilePath] jannoHeaderString [FilePath] -> [FilePath] -> [FilePath] forall a. Eq a => [a] -> [a] -> [a] \\ [FilePath "Poseidon_ID", FilePath "Group_Name"] -- Nothing means all Janno columns - -- except for these two which are already explicit - AddJannoColList [FilePath] -c -> [FilePath] -c - additionalColumnEntries :: [(FilePath, Maybe FilePath)] -additionalColumnEntries = [(FilePath -k, ByteString -> FilePath + -- except for these two which are already explicit + AddJannoColList [FilePath] +c -> [FilePath] +c + additionalColumnEntries :: [(FilePath, Maybe FilePath)] +additionalColumnEntries = [(FilePath +k, ByteString -> FilePath BSC.unpack (ByteString -> FilePath) -> Maybe ByteString -> Maybe FilePath forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> JannoRow -> NamedRecord forall a. ToNamedRecord a => a -> NamedRecord toNamedRecord JannoRow -jannoRow NamedRecord -> ByteString -> Maybe ByteString +jannoRow NamedRecord -> ByteString -> Maybe ByteString forall k v. (Eq k, Hashable k) => HashMap k v -> k -> Maybe v HM.!? FilePath -> ByteString BSC.pack FilePath -k) | FilePath -k <- [FilePath] -colNames] - Bool -isLatest <- [PoseidonPackage] -> PoseidonPackage -> [Bool] +k) | FilePath +k <- [FilePath] +colNames] + Bool +isLatest <- [PoseidonPackage] -> PoseidonPackage -> [Bool] forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [PoseidonPackage] -allPackages PoseidonPackage -pac -- this lives in monad m - -- double-return for m and then list. - m ExtendedIndividualInfo -> [m ExtendedIndividualInfo] +allPackages PoseidonPackage +pac -- this lives in monad m + -- double-return for m and then list. + m ExtendedIndividualInfo -> [m ExtendedIndividualInfo] forall a. a -> [a] forall (m :: * -> *) a. Monad m => a -> m a return (m ExtendedIndividualInfo -> [m ExtendedIndividualInfo]) @@ -4945,38 +4985,38 @@ -> [(FilePath, Maybe FilePath)] -> ExtendedIndividualInfo ExtendedIndividualInfo FilePath -name [FilePath] -groups (PoseidonPackage -> PacNameAndVersion +name [FilePath] +groups (PoseidonPackage -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion PoseidonPackage -pac) Bool -isLatest [(FilePath, Maybe FilePath)] -additionalColumnEntries - --- | Filter packages such that only packages with individuals covered by the given EntitySpec are returned -filterToRelevantPackages :: (MonadThrow m) => (EntitySpec a) => [a] -> [PoseidonPackage] -> m [PoseidonPackage] -filterToRelevantPackages :: forall (m :: * -> *) a. +pac) Bool +isLatest [(FilePath, Maybe FilePath)] +additionalColumnEntries + +-- | Filter packages such that only packages with individuals covered by the given EntitySpec are returned +filterToRelevantPackages :: (MonadThrow m) => (EntitySpec a) => [a] -> [PoseidonPackage] -> m [PoseidonPackage] +filterToRelevantPackages :: forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> [PoseidonPackage] -> m [PoseidonPackage] -filterToRelevantPackages [a] -entities [PoseidonPackage] -packages = do - IndividualInfoCollection -indInfoCollection <- [PoseidonPackage] -> m IndividualInfoCollection +filterToRelevantPackages [a] +entities [PoseidonPackage] +packages = do + IndividualInfoCollection +indInfoCollection <- [PoseidonPackage] -> m IndividualInfoCollection forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> m IndividualInfoCollection getJointIndividualInfo [PoseidonPackage] -packages - [PacNameAndVersion] -relevantPacs <- [a] -> IndividualInfoCollection -> m [PacNameAndVersion] +packages + [PacNameAndVersion] +relevantPacs <- [a] -> IndividualInfoCollection -> m [PacNameAndVersion] forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> IndividualInfoCollection -> m [PacNameAndVersion] determineRelevantPackages [a] -entities IndividualInfoCollection -indInfoCollection - [PoseidonPackage] -> m [PoseidonPackage] +entities IndividualInfoCollection +indInfoCollection + [PoseidonPackage] -> m [PoseidonPackage] forall a. a -> m a forall (m :: * -> *) a. Monad m => a -> m a return ([PoseidonPackage] -> m [PoseidonPackage]) @@ -4984,14 +5024,14 @@ forall a b. (a -> b) -> a -> b $ (PoseidonPackage -> Bool) -> [PoseidonPackage] -> [PoseidonPackage] forall a. (a -> Bool) -> [a] -> [a] -filter (\PoseidonPackage -p -> PoseidonPackage -> PacNameAndVersion +filter (\PoseidonPackage +p -> PoseidonPackage -> PacNameAndVersion forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion PoseidonPackage -p PacNameAndVersion -> [PacNameAndVersion] -> Bool +p PacNameAndVersion -> [PacNameAndVersion] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [PacNameAndVersion] -relevantPacs) [PoseidonPackage] -packages - \ No newline at end of file +relevantPacs) [PoseidonPackage] +packages + \ No newline at end of file diff --git a/src/Poseidon.PoseidonVersion.html b/src/Poseidon.PoseidonVersion.html index ebf98e39..89d98c1a 100644 --- a/src/Poseidon.PoseidonVersion.html +++ b/src/Poseidon.PoseidonVersion.html @@ -9,7 +9,7 @@ import Data.Version (Version (..), makeVersion, showVersion) newtype PoseidonVersion = PoseidonVersion Version - deriving (Int -> PoseidonVersion -> ShowS + deriving (Int -> PoseidonVersion -> ShowS [PoseidonVersion] -> ShowS PoseidonVersion -> String (Int -> PoseidonVersion -> ShowS) @@ -24,7 +24,7 @@ show :: PoseidonVersion -> String $cshowList :: [PoseidonVersion] -> ShowS showList :: [PoseidonVersion] -> ShowS -Show, PoseidonVersion -> PoseidonVersion -> Bool +Show, PoseidonVersion -> PoseidonVersion -> Bool (PoseidonVersion -> PoseidonVersion -> Bool) -> (PoseidonVersion -> PoseidonVersion -> Bool) -> Eq PoseidonVersion @@ -33,7 +33,7 @@ == :: PoseidonVersion -> PoseidonVersion -> Bool $c/= :: PoseidonVersion -> PoseidonVersion -> Bool /= :: PoseidonVersion -> PoseidonVersion -> Bool -Eq, Eq PoseidonVersion +Eq, Eq PoseidonVersion Eq PoseidonVersion -> (PoseidonVersion -> PoseidonVersion -> Ordering) -> (PoseidonVersion -> PoseidonVersion -> Bool) @@ -104,16 +104,16 @@ asVersion :: PoseidonVersion -> Version asVersion :: PoseidonVersion -> Version -asVersion (PoseidonVersion Version -x) = Version -x +asVersion (PoseidonVersion Version +x) = Version +x showPoseidonVersion :: PoseidonVersion -> String showPoseidonVersion :: PoseidonVersion -> String -showPoseidonVersion (PoseidonVersion Version -x) = Version -> String +showPoseidonVersion (PoseidonVersion Version +x) = Version -> String showVersion Version -x +x -- this is for the server minimalRequiredClientVersion :: Version diff --git a/src/Poseidon.SequencingSource.html b/src/Poseidon.SequencingSource.html index 6fc1eab7..e7a7e133 100644 --- a/src/Poseidon.SequencingSource.html +++ b/src/Poseidon.SequencingSource.html @@ -1,54 +1,409 @@ -
{-# LANGUAGE DeriveGeneric       #-}
+
{-# LANGUAGE DeriveGeneric       #-}
 {-# LANGUAGE OverloadedStrings   #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
 module Poseidon.SequencingSource where
 
-import           Poseidon.Janno             (AccessionID (..),
-                                             CsvNamedRecord (..), JURI,
-                                             JannoList (..), JannoStringList,
-                                             decodingOptions, encodingOptions,
-                                             explicitNA, filterLookup,
-                                             filterLookupOptional, getCsvNR,
-                                             makeAccessionID,
-                                             parseCsvParseError,
-                                             removeUselessSuffix,
-                                             renderCsvParseError)
-import           Poseidon.Utils             (PoseidonException (..), PoseidonIO,
-                                             logDebug, logError, logWarning,
-                                             renderPoseidonException)
-
-import           Control.Exception          (throwIO)
-import           Control.Monad              (unless, when)
-import           Control.Monad.IO.Class     (liftIO)
-import           Data.Aeson                 (FromJSON, Options (..), ToJSON,
-                                             defaultOptions, genericToEncoding,
-                                             toEncoding, withText)
-import           Data.Aeson.Encoding        (text)
-import           Data.Bifunctor             (second)
-import qualified Data.ByteString.Char8      as Bchs
-import qualified Data.ByteString.Lazy.Char8 as Bch
-import           Data.Char                  (isHexDigit)
-import qualified Data.Csv                   as Csv
-import           Data.Either                (lefts, rights)
-import qualified Data.HashMap.Strict        as HM
-import           Data.List                  (foldl', nub, sort)
-import           Data.Maybe                 (isJust, mapMaybe)
-import qualified Data.Text                  as T
-import           Data.Time                  (Day)
-import           Data.Time.Format           (defaultTimeLocale, formatTime,
-                                             parseTimeM)
-import qualified Data.Vector                as V
-import           Data.Yaml.Aeson            (FromJSON (..))
-import           GHC.Generics               (Generic)
-import qualified Text.Parsec                as P
-
--- |A datatype to represent UDG in a ssf file
-data SSFUDG =
-      SSFMinus
-    | SSFHalf
-    | SSFPlus
-    deriving (SSFUDG -> SSFUDG -> Bool
+import           Poseidon.Janno             (CsvNamedRecord (..),
+                                             JannoStringList, ListColumn (..),
+                                             decodingOptions, encodingOptions,
+                                             explicitNA, filterLookup,
+                                             filterLookupOptional, getCsvNR,
+                                             parseCsvParseError,
+                                             removeUselessSuffix,
+                                             renderCsvParseError)
+import           Poseidon.Utils             (PoseidonException (..), PoseidonIO,
+                                             logDebug, logError, logWarning,
+                                             renderPoseidonException)
+
+import           Control.Exception          (throwIO)
+import           Control.Monad              (unless, when)
+import           Control.Monad.IO.Class     (liftIO)
+import           Data.Bifunctor             (second)
+import qualified Data.ByteString.Char8      as Bchs
+import qualified Data.ByteString.Lazy.Char8 as Bch
+import           Data.Char                  (isHexDigit)
+import qualified Data.Csv                   as Csv
+import           Data.Either                (lefts, rights)
+import qualified Data.HashMap.Strict        as HM
+import           Data.List                  (foldl', nub, sort)
+import           Data.Maybe                 (isJust, mapMaybe)
+import           Data.Time                  (Day)
+import           Data.Time.Format           (defaultTimeLocale, formatTime,
+                                             parseTimeM)
+import qualified Data.Vector                as V
+import           GHC.Generics               (Generic)
+import           Network.URI                (isURIReference)
+import qualified Text.Parsec                as P
+import qualified Text.Regex.TDFA            as Reg
+
+-- |A datatype to represent AccessionIDs in a ssf file
+data AccessionID =
+      INSDCProject String
+    | INSDCStudy String
+    | INSDCBioSample String
+    | INSDCSample String
+    | INSDCExperiment String
+    | INSDCRun String
+    | INSDCAnalysis String
+    | OtherID String
+    deriving (AccessionID -> AccessionID -> Bool
+(AccessionID -> AccessionID -> Bool)
+-> (AccessionID -> AccessionID -> Bool) -> Eq AccessionID
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: AccessionID -> AccessionID -> Bool
+== :: AccessionID -> AccessionID -> Bool
+$c/= :: AccessionID -> AccessionID -> Bool
+/= :: AccessionID -> AccessionID -> Bool
+Eq, Eq AccessionID
+Eq AccessionID
+-> (AccessionID -> AccessionID -> Ordering)
+-> (AccessionID -> AccessionID -> Bool)
+-> (AccessionID -> AccessionID -> Bool)
+-> (AccessionID -> AccessionID -> Bool)
+-> (AccessionID -> AccessionID -> Bool)
+-> (AccessionID -> AccessionID -> AccessionID)
+-> (AccessionID -> AccessionID -> AccessionID)
+-> Ord AccessionID
+AccessionID -> AccessionID -> Bool
+AccessionID -> AccessionID -> Ordering
+AccessionID -> AccessionID -> AccessionID
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: AccessionID -> AccessionID -> Ordering
+compare :: AccessionID -> AccessionID -> Ordering
+$c< :: AccessionID -> AccessionID -> Bool
+< :: AccessionID -> AccessionID -> Bool
+$c<= :: AccessionID -> AccessionID -> Bool
+<= :: AccessionID -> AccessionID -> Bool
+$c> :: AccessionID -> AccessionID -> Bool
+> :: AccessionID -> AccessionID -> Bool
+$c>= :: AccessionID -> AccessionID -> Bool
+>= :: AccessionID -> AccessionID -> Bool
+$cmax :: AccessionID -> AccessionID -> AccessionID
+max :: AccessionID -> AccessionID -> AccessionID
+$cmin :: AccessionID -> AccessionID -> AccessionID
+min :: AccessionID -> AccessionID -> AccessionID
+Ord, (forall x. AccessionID -> Rep AccessionID x)
+-> (forall x. Rep AccessionID x -> AccessionID)
+-> Generic AccessionID
+forall x. Rep AccessionID x -> AccessionID
+forall x. AccessionID -> Rep AccessionID x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. AccessionID -> Rep AccessionID x
+from :: forall x. AccessionID -> Rep AccessionID x
+$cto :: forall x. Rep AccessionID x -> AccessionID
+to :: forall x. Rep AccessionID x -> AccessionID
+Generic)
+
+instance Show AccessionID where
+    show :: AccessionID -> [Char]
+show (INSDCProject [Char]
+x)    = [Char]
+x
+    show (INSDCStudy [Char]
+x)      = [Char]
+x
+    show (INSDCBioSample [Char]
+x)  = [Char]
+x
+    show (INSDCSample [Char]
+x)     = [Char]
+x
+    show (INSDCExperiment [Char]
+x) = [Char]
+x
+    show (INSDCRun [Char]
+x)        = [Char]
+x
+    show (INSDCAnalysis [Char]
+x)   = [Char]
+x
+    show (OtherID [Char]
+x)         = [Char]
+x
+
+-- the patterns are documented at:
+-- https://ena-docs.readthedocs.io/en/latest/submit/general-guide/accessions.html
+makeAccessionID :: MonadFail m => String -> m AccessionID
+makeAccessionID :: forall (m :: * -> *). MonadFail m => [Char] -> m AccessionID
+makeAccessionID [Char]
+x
+    | [Char]
+x [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"PRJ[EDN][A-Z][0-9]+"  :: String) = AccessionID -> m AccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
+forall a b. (a -> b) -> a -> b
+$ [Char] -> AccessionID
+INSDCProject [Char]
+x
+    | [Char]
+x [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"[EDS]RP[0-9]{6,}"     :: String) = AccessionID -> m AccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
+forall a b. (a -> b) -> a -> b
+$ [Char] -> AccessionID
+INSDCStudy [Char]
+x
+    | [Char]
+x [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"SAM[EDN][A-Z]?[0-9]+" :: String) = AccessionID -> m AccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
+forall a b. (a -> b) -> a -> b
+$ [Char] -> AccessionID
+INSDCBioSample [Char]
+x
+    | [Char]
+x [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"[EDS]RS[0-9]{6,}"     :: String) = AccessionID -> m AccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
+forall a b. (a -> b) -> a -> b
+$ [Char] -> AccessionID
+INSDCSample [Char]
+x
+    | [Char]
+x [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"[EDS]RX[0-9]{6,}"     :: String) = AccessionID -> m AccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
+forall a b. (a -> b) -> a -> b
+$ [Char] -> AccessionID
+INSDCExperiment [Char]
+x
+    | [Char]
+x [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"[EDS]RR[0-9]{6,}"     :: String) = AccessionID -> m AccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
+forall a b. (a -> b) -> a -> b
+$ [Char] -> AccessionID
+INSDCRun [Char]
+x
+    | [Char]
+x [Char] -> [Char] -> Bool
+forall source source1 target.
+(RegexMaker Regex CompOption ExecOption source,
+ RegexContext Regex source1 target) =>
+source1 -> source -> target
+Reg.=~ ([Char]
+"[EDS]RZ[0-9]{6,}"     :: String) = AccessionID -> m AccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
+forall a b. (a -> b) -> a -> b
+$ [Char] -> AccessionID
+INSDCAnalysis [Char]
+x
+    | Bool
+otherwise                                   = AccessionID -> m AccessionID
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (AccessionID -> m AccessionID) -> AccessionID -> m AccessionID
+forall a b. (a -> b) -> a -> b
+$ [Char] -> AccessionID
+OtherID [Char]
+x
+
+instance Csv.ToField AccessionID where
+    toField :: AccessionID -> ByteString
+toField AccessionID
+x = [Char] -> ByteString
+forall a. ToField a => a -> ByteString
+Csv.toField ([Char] -> ByteString) -> [Char] -> ByteString
+forall a b. (a -> b) -> a -> b
+$ AccessionID -> [Char]
+forall a. Show a => a -> [Char]
+show AccessionID
+x
+instance Csv.FromField AccessionID where
+    parseField :: ByteString -> Parser AccessionID
+parseField ByteString
+x = ByteString -> Parser [Char]
+forall a. FromField a => ByteString -> Parser a
+Csv.parseField ByteString
+x Parser [Char]
+-> ([Char] -> Parser AccessionID) -> Parser AccessionID
+forall a b. Parser a -> (a -> Parser b) -> Parser b
+forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+>>= [Char] -> Parser AccessionID
+forall (m :: * -> *). MonadFail m => [Char] -> m AccessionID
+makeAccessionID
+
+-- | A datatype to represent URIs in a ssf file
+newtype JURI =
+        JURI String
+    deriving (JURI -> JURI -> Bool
+(JURI -> JURI -> Bool) -> (JURI -> JURI -> Bool) -> Eq JURI
+forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
+$c== :: JURI -> JURI -> Bool
+== :: JURI -> JURI -> Bool
+$c/= :: JURI -> JURI -> Bool
+/= :: JURI -> JURI -> Bool
+Eq, Eq JURI
+Eq JURI
+-> (JURI -> JURI -> Ordering)
+-> (JURI -> JURI -> Bool)
+-> (JURI -> JURI -> Bool)
+-> (JURI -> JURI -> Bool)
+-> (JURI -> JURI -> Bool)
+-> (JURI -> JURI -> JURI)
+-> (JURI -> JURI -> JURI)
+-> Ord JURI
+JURI -> JURI -> Bool
+JURI -> JURI -> Ordering
+JURI -> JURI -> JURI
+forall a.
+Eq a
+-> (a -> a -> Ordering)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> Bool)
+-> (a -> a -> a)
+-> (a -> a -> a)
+-> Ord a
+$ccompare :: JURI -> JURI -> Ordering
+compare :: JURI -> JURI -> Ordering
+$c< :: JURI -> JURI -> Bool
+< :: JURI -> JURI -> Bool
+$c<= :: JURI -> JURI -> Bool
+<= :: JURI -> JURI -> Bool
+$c> :: JURI -> JURI -> Bool
+> :: JURI -> JURI -> Bool
+$c>= :: JURI -> JURI -> Bool
+>= :: JURI -> JURI -> Bool
+$cmax :: JURI -> JURI -> JURI
+max :: JURI -> JURI -> JURI
+$cmin :: JURI -> JURI -> JURI
+min :: JURI -> JURI -> JURI
+Ord, (forall x. JURI -> Rep JURI x)
+-> (forall x. Rep JURI x -> JURI) -> Generic JURI
+forall x. Rep JURI x -> JURI
+forall x. JURI -> Rep JURI x
+forall a.
+(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
+$cfrom :: forall x. JURI -> Rep JURI x
+from :: forall x. JURI -> Rep JURI x
+$cto :: forall x. Rep JURI x -> JURI
+to :: forall x. Rep JURI x -> JURI
+Generic)
+
+instance Show JURI where
+    show :: JURI -> [Char]
+show (JURI [Char]
+x) = [Char]
+x
+
+makeJURI :: MonadFail m => String -> m JURI
+makeJURI :: forall (m :: * -> *). MonadFail m => [Char] -> m JURI
+makeJURI [Char]
+x
+    | [Char] -> Bool
+isURIReference [Char]
+x   = JURI -> m JURI
+forall a. a -> m a
+forall (f :: * -> *) a. Applicative f => a -> f a
+pure (JURI -> m JURI) -> JURI -> m JURI
+forall a b. (a -> b) -> a -> b
+$ [Char] -> JURI
+JURI [Char]
+x
+    | Bool
+otherwise          = [Char] -> m JURI
+forall a. [Char] -> m a
+forall (m :: * -> *) a. MonadFail m => [Char] -> m a
+fail ([Char] -> m JURI) -> [Char] -> m JURI
+forall a b. (a -> b) -> a -> b
+$ [Char]
+"URI " [Char] -> ShowS
+forall a. [a] -> [a] -> [a]
+++ ShowS
+forall a. Show a => a -> [Char]
+show [Char]
+x [Char] -> ShowS
+forall a. [a] -> [a] -> [a]
+++ [Char]
+" not well structured"
+
+instance Csv.ToField JURI where
+    toField :: JURI -> ByteString
+toField JURI
+x = [Char] -> ByteString
+forall a. ToField a => a -> ByteString
+Csv.toField ([Char] -> ByteString) -> [Char] -> ByteString
+forall a b. (a -> b) -> a -> b
+$ JURI -> [Char]
+forall a. Show a => a -> [Char]
+show JURI
+x
+instance Csv.FromField JURI where
+    parseField :: ByteString -> Parser JURI
+parseField ByteString
+x = ByteString -> Parser [Char]
+forall a. FromField a => ByteString -> Parser a
+Csv.parseField ByteString
+x Parser [Char] -> ([Char] -> Parser JURI) -> Parser JURI
+forall a b. Parser a -> (a -> Parser b) -> Parser b
+forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+>>= [Char] -> Parser JURI
+forall (m :: * -> *). MonadFail m => [Char] -> m JURI
+makeJURI
+
+-- |A datatype to represent UDG in a ssf file
+data SSFUDG =
+      SSFMinus
+    | SSFHalf
+    | SSFPlus
+    deriving (SSFUDG -> SSFUDG -> Bool
 (SSFUDG -> SSFUDG -> Bool)
 -> (SSFUDG -> SSFUDG -> Bool) -> Eq SSFUDG
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -56,7 +411,7 @@
 == :: SSFUDG -> SSFUDG -> Bool
 $c/= :: SSFUDG -> SSFUDG -> Bool
 /= :: SSFUDG -> SSFUDG -> Bool
-Eq, Eq SSFUDG
+Eq, Eq SSFUDG
 Eq SSFUDG
 -> (SSFUDG -> SSFUDG -> Ordering)
 -> (SSFUDG -> SSFUDG -> Bool)
@@ -93,7 +448,7 @@
 max :: SSFUDG -> SSFUDG -> SSFUDG
 $cmin :: SSFUDG -> SSFUDG -> SSFUDG
 min :: SSFUDG -> SSFUDG -> SSFUDG
-Ord, (forall x. SSFUDG -> Rep SSFUDG x)
+Ord, (forall x. SSFUDG -> Rep SSFUDG x)
 -> (forall x. Rep SSFUDG x -> SSFUDG) -> Generic SSFUDG
 forall x. Rep SSFUDG x -> SSFUDG
 forall x. SSFUDG -> Rep SSFUDG x
@@ -103,7 +458,7 @@
 from :: forall x. SSFUDG -> Rep SSFUDG x
 $cto :: forall x. Rep SSFUDG x -> SSFUDG
 to :: forall x. Rep SSFUDG x -> SSFUDG
-Generic, Int -> SSFUDG
+Generic, Int -> SSFUDG
 SSFUDG -> Int
 SSFUDG -> [SSFUDG]
 SSFUDG -> SSFUDG
@@ -144,7 +499,7 @@
 enumFromTo :: SSFUDG -> SSFUDG -> [SSFUDG]
 $cenumFromThenTo :: SSFUDG -> SSFUDG -> SSFUDG -> [SSFUDG]
 enumFromThenTo :: SSFUDG -> SSFUDG -> SSFUDG -> [SSFUDG]
-Enum, SSFUDG
+Enum, SSFUDG
 SSFUDG -> SSFUDG -> Bounded SSFUDG
 forall a. a -> a -> Bounded a
 $cminBound :: SSFUDG
@@ -152,25 +507,25 @@
 $cmaxBound :: SSFUDG
 maxBound :: SSFUDG
 Bounded)
-
-instance Show SSFUDG where
-    show :: SSFUDG -> [Char]
-show SSFUDG
+
+instance Show SSFUDG where
+    show :: SSFUDG -> [Char]
+show SSFUDG
 SSFMinus = [Char]
 "minus"
-    show SSFUDG
+    show SSFUDG
 SSFHalf  = [Char]
 "half"
-    show SSFUDG
+    show SSFUDG
 SSFPlus  = [Char]
 "plus"
-
-makeSSFUDG :: MonadFail m => String -> m SSFUDG
-makeSSFUDG :: forall (m :: * -> *). MonadFail m => [Char] -> m SSFUDG
-makeSSFUDG [Char]
-x
-    | [Char]
-x [Char] -> [Char] -> Bool
+
+makeSSFUDG :: MonadFail m => String -> m SSFUDG
+makeSSFUDG :: forall (m :: * -> *). MonadFail m => [Char] -> m SSFUDG
+makeSSFUDG [Char]
+x
+    | [Char]
+x [Char] -> [Char] -> Bool
 forall a. Eq a => a -> a -> Bool
 == [Char]
 "minus" = SSFUDG -> m SSFUDG
@@ -178,8 +533,8 @@
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure SSFUDG
 SSFMinus
-    | [Char]
-x [Char] -> [Char] -> Bool
+    | [Char]
+x [Char] -> [Char] -> Bool
 forall a. Eq a => a -> a -> Bool
 == [Char]
 "half"  = SSFUDG -> m SSFUDG
@@ -187,8 +542,8 @@
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure SSFUDG
 SSFHalf
-    | [Char]
-x [Char] -> [Char] -> Bool
+    | [Char]
+x [Char] -> [Char] -> Bool
 forall a. Eq a => a -> a -> Bool
 == [Char]
 "plus"  = SSFUDG -> m SSFUDG
@@ -196,7 +551,7 @@
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure SSFUDG
 SSFPlus
-    | Bool
+    | Bool
 otherwise    = [Char] -> m SSFUDG
 forall a. [Char] -> m a
 forall (m :: * -> *) a. MonadFail m => [Char] -> m a
@@ -208,66 +563,40 @@
 ++ ShowS
 forall a. Show a => a -> [Char]
 show [Char]
-x [Char] -> ShowS
+x [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ [Char]
 " not in [minus, half, plus]"
-
-instance Csv.ToField SSFUDG where
-    toField :: SSFUDG -> ByteString
-toField SSFUDG
-x = [Char] -> ByteString
+
+instance Csv.ToField SSFUDG where
+    toField :: SSFUDG -> ByteString
+toField SSFUDG
+x = [Char] -> ByteString
 forall a. ToField a => a -> ByteString
 Csv.toField ([Char] -> ByteString) -> [Char] -> ByteString
 forall a b. (a -> b) -> a -> b
 $ SSFUDG -> [Char]
 forall a. Show a => a -> [Char]
 show SSFUDG
-x
-instance Csv.FromField SSFUDG where
-    parseField :: ByteString -> Parser SSFUDG
-parseField ByteString
-x = ByteString -> Parser [Char]
+x
+instance Csv.FromField SSFUDG where
+    parseField :: ByteString -> Parser SSFUDG
+parseField ByteString
+x = ByteString -> Parser [Char]
 forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x Parser [Char] -> ([Char] -> Parser SSFUDG) -> Parser SSFUDG
+x Parser [Char] -> ([Char] -> Parser SSFUDG) -> Parser SSFUDG
 forall a b. Parser a -> (a -> Parser b) -> Parser b
 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= [Char] -> Parser SSFUDG
 forall (m :: * -> *). MonadFail m => [Char] -> m SSFUDG
 makeSSFUDG
-instance ToJSON SSFUDG where
-    toEncoding :: SSFUDG -> Encoding
-toEncoding SSFUDG
-x = Text -> Encoding
-forall a. Text -> Encoding' a
-text (Text -> Encoding) -> Text -> Encoding
-forall a b. (a -> b) -> a -> b
-$ [Char] -> Text
-T.pack ([Char] -> Text) -> [Char] -> Text
-forall a b. (a -> b) -> a -> b
-$ SSFUDG -> [Char]
-forall a. Show a => a -> [Char]
-show SSFUDG
-x
-instance FromJSON SSFUDG where
-    parseJSON :: Value -> Parser SSFUDG
-parseJSON = [Char] -> (Text -> Parser SSFUDG) -> Value -> Parser SSFUDG
-forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a
-withText [Char]
-"SSFUDG" ([Char] -> Parser SSFUDG
-forall (m :: * -> *). MonadFail m => [Char] -> m SSFUDG
-makeSSFUDG ([Char] -> Parser SSFUDG)
--> (Text -> [Char]) -> Text -> Parser SSFUDG
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. Text -> [Char]
-T.unpack)
-
--- |A datatype to represent Library_Built in a janno file
-data SSFLibraryBuilt =
-      SSFDS
-    | SSFSS
-    deriving (SSFLibraryBuilt -> SSFLibraryBuilt -> Bool
+
+-- |A datatype to represent Library_Built in a janno file
+data SSFLibraryBuilt =
+      SSFDS
+    | SSFSS
+    deriving (SSFLibraryBuilt -> SSFLibraryBuilt -> Bool
 (SSFLibraryBuilt -> SSFLibraryBuilt -> Bool)
 -> (SSFLibraryBuilt -> SSFLibraryBuilt -> Bool)
 -> Eq SSFLibraryBuilt
@@ -276,7 +605,7 @@
 == :: SSFLibraryBuilt -> SSFLibraryBuilt -> Bool
 $c/= :: SSFLibraryBuilt -> SSFLibraryBuilt -> Bool
 /= :: SSFLibraryBuilt -> SSFLibraryBuilt -> Bool
-Eq, Eq SSFLibraryBuilt
+Eq, Eq SSFLibraryBuilt
 Eq SSFLibraryBuilt
 -> (SSFLibraryBuilt -> SSFLibraryBuilt -> Ordering)
 -> (SSFLibraryBuilt -> SSFLibraryBuilt -> Bool)
@@ -313,7 +642,7 @@
 max :: SSFLibraryBuilt -> SSFLibraryBuilt -> SSFLibraryBuilt
 $cmin :: SSFLibraryBuilt -> SSFLibraryBuilt -> SSFLibraryBuilt
 min :: SSFLibraryBuilt -> SSFLibraryBuilt -> SSFLibraryBuilt
-Ord, (forall x. SSFLibraryBuilt -> Rep SSFLibraryBuilt x)
+Ord, (forall x. SSFLibraryBuilt -> Rep SSFLibraryBuilt x)
 -> (forall x. Rep SSFLibraryBuilt x -> SSFLibraryBuilt)
 -> Generic SSFLibraryBuilt
 forall x. Rep SSFLibraryBuilt x -> SSFLibraryBuilt
@@ -324,7 +653,7 @@
 from :: forall x. SSFLibraryBuilt -> Rep SSFLibraryBuilt x
 $cto :: forall x. Rep SSFLibraryBuilt x -> SSFLibraryBuilt
 to :: forall x. Rep SSFLibraryBuilt x -> SSFLibraryBuilt
-Generic, Int -> SSFLibraryBuilt
+Generic, Int -> SSFLibraryBuilt
 SSFLibraryBuilt -> Int
 SSFLibraryBuilt -> [SSFLibraryBuilt]
 SSFLibraryBuilt -> SSFLibraryBuilt
@@ -369,7 +698,7 @@
 -> SSFLibraryBuilt -> SSFLibraryBuilt -> [SSFLibraryBuilt]
 enumFromThenTo :: SSFLibraryBuilt
 -> SSFLibraryBuilt -> SSFLibraryBuilt -> [SSFLibraryBuilt]
-Enum, SSFLibraryBuilt
+Enum, SSFLibraryBuilt
 SSFLibraryBuilt -> SSFLibraryBuilt -> Bounded SSFLibraryBuilt
 forall a. a -> a -> Bounded a
 $cminBound :: SSFLibraryBuilt
@@ -377,22 +706,22 @@
 $cmaxBound :: SSFLibraryBuilt
 maxBound :: SSFLibraryBuilt
 Bounded)
-
-instance Show SSFLibraryBuilt where
-    show :: SSFLibraryBuilt -> [Char]
+
+instance Show SSFLibraryBuilt where
+    show :: SSFLibraryBuilt -> [Char]
 show SSFLibraryBuilt
 SSFDS = [Char]
 "ds"
-    show SSFLibraryBuilt
+    show SSFLibraryBuilt
 SSFSS = [Char]
 "ss"
-
-makeSSFLibraryBuilt :: MonadFail m => String -> m SSFLibraryBuilt
-makeSSFLibraryBuilt :: forall (m :: * -> *). MonadFail m => [Char] -> m SSFLibraryBuilt
-makeSSFLibraryBuilt [Char]
-x
-    | [Char]
-x [Char] -> [Char] -> Bool
+
+makeSSFLibraryBuilt :: MonadFail m => String -> m SSFLibraryBuilt
+makeSSFLibraryBuilt :: forall (m :: * -> *). MonadFail m => [Char] -> m SSFLibraryBuilt
+makeSSFLibraryBuilt [Char]
+x
+    | [Char]
+x [Char] -> [Char] -> Bool
 forall a. Eq a => a -> a -> Bool
 == [Char]
 "ds"    = SSFLibraryBuilt -> m SSFLibraryBuilt
@@ -400,8 +729,8 @@
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure SSFLibraryBuilt
 SSFDS
-    | [Char]
-x [Char] -> [Char] -> Bool
+    | [Char]
+x [Char] -> [Char] -> Bool
 forall a. Eq a => a -> a -> Bool
 == [Char]
 "ss"    = SSFLibraryBuilt -> m SSFLibraryBuilt
@@ -409,7 +738,7 @@
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure SSFLibraryBuilt
 SSFSS
-    | Bool
+    | Bool
 otherwise    = [Char] -> m SSFLibraryBuilt
 forall a. [Char] -> m a
 forall (m :: * -> *) a. MonadFail m => [Char] -> m a
@@ -421,69 +750,40 @@
 ++ ShowS
 forall a. Show a => a -> [Char]
 show [Char]
-x [Char] -> ShowS
+x [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ [Char]
 " not in [ds, ss]"
-
-instance Csv.ToField SSFLibraryBuilt where
-    toField :: SSFLibraryBuilt -> ByteString
-toField SSFLibraryBuilt
-x = [Char] -> ByteString
+
+instance Csv.ToField SSFLibraryBuilt where
+    toField :: SSFLibraryBuilt -> ByteString
+toField SSFLibraryBuilt
+x = [Char] -> ByteString
 forall a. ToField a => a -> ByteString
 Csv.toField ([Char] -> ByteString) -> [Char] -> ByteString
 forall a b. (a -> b) -> a -> b
 $ SSFLibraryBuilt -> [Char]
 forall a. Show a => a -> [Char]
 show SSFLibraryBuilt
-x
-instance Csv.FromField SSFLibraryBuilt where
-    parseField :: ByteString -> Parser SSFLibraryBuilt
-parseField ByteString
-x = ByteString -> Parser [Char]
+x
+instance Csv.FromField SSFLibraryBuilt where
+    parseField :: ByteString -> Parser SSFLibraryBuilt
+parseField ByteString
+x = ByteString -> Parser [Char]
 forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x Parser [Char]
+x Parser [Char]
 -> ([Char] -> Parser SSFLibraryBuilt) -> Parser SSFLibraryBuilt
 forall a b. Parser a -> (a -> Parser b) -> Parser b
 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= [Char] -> Parser SSFLibraryBuilt
 forall (m :: * -> *). MonadFail m => [Char] -> m SSFLibraryBuilt
 makeSSFLibraryBuilt
-instance ToJSON SSFLibraryBuilt where
-    toEncoding :: SSFLibraryBuilt -> Encoding
-toEncoding SSFLibraryBuilt
-x = Text -> Encoding
-forall a. Text -> Encoding' a
-text (Text -> Encoding) -> Text -> Encoding
-forall a b. (a -> b) -> a -> b
-$ [Char] -> Text
-T.pack ([Char] -> Text) -> [Char] -> Text
-forall a b. (a -> b) -> a -> b
-$ SSFLibraryBuilt -> [Char]
-forall a. Show a => a -> [Char]
-show SSFLibraryBuilt
-x
-instance FromJSON SSFLibraryBuilt where
-    parseJSON :: Value -> Parser SSFLibraryBuilt
-parseJSON = [Char]
--> (Text -> Parser SSFLibraryBuilt)
--> Value
--> Parser SSFLibraryBuilt
-forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a
-withText [Char]
-"SSFLibraryBuilt" ([Char] -> Parser SSFLibraryBuilt
-forall (m :: * -> *). MonadFail m => [Char] -> m SSFLibraryBuilt
-makeSSFLibraryBuilt ([Char] -> Parser SSFLibraryBuilt)
--> (Text -> [Char]) -> Text -> Parser SSFLibraryBuilt
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. Text -> [Char]
-T.unpack)
-
--- | A data type to represent a seqSourceFile
-newtype SeqSourceRows = SeqSourceRows {SeqSourceRows -> [SeqSourceRow]
+
+-- | A data type to represent a seqSourceFile
+newtype SeqSourceRows = SeqSourceRows {SeqSourceRows -> [SeqSourceRow]
 getSeqSourceRowList :: [SeqSourceRow]}
-    deriving (Int -> SeqSourceRows -> ShowS
+    deriving (Int -> SeqSourceRows -> ShowS
 [SeqSourceRows] -> ShowS
 SeqSourceRows -> [Char]
 (Int -> SeqSourceRows -> ShowS)
@@ -498,7 +798,7 @@
 show :: SeqSourceRows -> [Char]
 $cshowList :: [SeqSourceRows] -> ShowS
 showList :: [SeqSourceRows] -> ShowS
-Show, SeqSourceRows -> SeqSourceRows -> Bool
+Show, SeqSourceRows -> SeqSourceRows -> Bool
 (SeqSourceRows -> SeqSourceRows -> Bool)
 -> (SeqSourceRows -> SeqSourceRows -> Bool) -> Eq SeqSourceRows
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -506,7 +806,7 @@
 == :: SeqSourceRows -> SeqSourceRows -> Bool
 $c/= :: SeqSourceRows -> SeqSourceRows -> Bool
 /= :: SeqSourceRows -> SeqSourceRows -> Bool
-Eq, (forall x. SeqSourceRows -> Rep SeqSourceRows x)
+Eq, (forall x. SeqSourceRows -> Rep SeqSourceRows x)
 -> (forall x. Rep SeqSourceRows x -> SeqSourceRows)
 -> Generic SeqSourceRows
 forall x. Rep SeqSourceRows x -> SeqSourceRows
@@ -518,33 +818,33 @@
 $cto :: forall x. Rep SeqSourceRows x -> SeqSourceRows
 to :: forall x. Rep SeqSourceRows x -> SeqSourceRows
 Generic)
-
-instance Semigroup SeqSourceRows where
-    (SeqSourceRows [SeqSourceRow]
-j1) <> :: SeqSourceRows -> SeqSourceRows -> SeqSourceRows
-<> (SeqSourceRows [SeqSourceRow]
-j2) = [SeqSourceRow] -> SeqSourceRows
+
+instance Semigroup SeqSourceRows where
+    (SeqSourceRows [SeqSourceRow]
+j1) <> :: SeqSourceRows -> SeqSourceRows -> SeqSourceRows
+<> (SeqSourceRows [SeqSourceRow]
+j2) = [SeqSourceRow] -> SeqSourceRows
 SeqSourceRows ([SeqSourceRow] -> SeqSourceRows)
 -> [SeqSourceRow] -> SeqSourceRows
 forall a b. (a -> b) -> a -> b
 $ [SeqSourceRow]
-j1 [SeqSourceRow] -> [SeqSourceRow] -> [SeqSourceRow]
-`combineTwoSeqSources` [SeqSourceRow]
-j2
-        where
-        combineTwoSeqSources :: [SeqSourceRow] -> [SeqSourceRow] -> [SeqSourceRow]
-        combineTwoSeqSources :: [SeqSourceRow] -> [SeqSourceRow] -> [SeqSourceRow]
-combineTwoSeqSources [SeqSourceRow]
-seqSource1 [SeqSourceRow]
-seqSource2 =
-            let simpleSeqSourceSum :: [SeqSourceRow]
-simpleSeqSourceSum = [SeqSourceRow]
-seqSource1 [SeqSourceRow] -> [SeqSourceRow] -> [SeqSourceRow]
+j1 [SeqSourceRow] -> [SeqSourceRow] -> [SeqSourceRow]
+`combineTwoSeqSources` [SeqSourceRow]
+j2
+        where
+        combineTwoSeqSources :: [SeqSourceRow] -> [SeqSourceRow] -> [SeqSourceRow]
+        combineTwoSeqSources :: [SeqSourceRow] -> [SeqSourceRow] -> [SeqSourceRow]
+combineTwoSeqSources [SeqSourceRow]
+seqSource1 [SeqSourceRow]
+seqSource2 =
+            let simpleSeqSourceSum :: [SeqSourceRow]
+simpleSeqSourceSum = [SeqSourceRow]
+seqSource1 [SeqSourceRow] -> [SeqSourceRow] -> [SeqSourceRow]
 forall a. [a] -> [a] -> [a]
 ++ [SeqSourceRow]
-seqSource2
-                toAddColNames :: [ByteString]
-toAddColNames = HashMap ByteString ByteString -> [ByteString]
+seqSource2
+                toAddColNames :: [ByteString]
+toAddColNames = HashMap ByteString ByteString -> [ByteString]
 forall k v. HashMap k v -> [k]
 HM.keys ([HashMap ByteString ByteString] -> HashMap ByteString ByteString
 forall k v. (Eq k, Hashable k) => [HashMap k v] -> HashMap k v
@@ -559,70 +859,70 @@
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . SeqSourceRow -> CsvNamedRecord
 sAdditionalColumns) [SeqSourceRow]
-simpleSeqSourceSum))
-                toAddEmptyCols :: HashMap ByteString ByteString
-toAddEmptyCols = [(ByteString, ByteString)] -> HashMap ByteString ByteString
+simpleSeqSourceSum))
+                toAddEmptyCols :: HashMap ByteString ByteString
+toAddEmptyCols = [(ByteString, ByteString)] -> HashMap ByteString ByteString
 forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
 HM.fromList ((ByteString -> (ByteString, ByteString))
 -> [ByteString] -> [(ByteString, ByteString)]
 forall a b. (a -> b) -> [a] -> [b]
-map (\ByteString
-k -> (ByteString
-k, ByteString
+map (\ByteString
+k -> (ByteString
+k, ByteString
 "n/a")) [ByteString]
-toAddColNames)
-            in (SeqSourceRow -> SeqSourceRow) -> [SeqSourceRow] -> [SeqSourceRow]
+toAddColNames)
+            in (SeqSourceRow -> SeqSourceRow) -> [SeqSourceRow] -> [SeqSourceRow]
 forall a b. (a -> b) -> [a] -> [b]
 map (HashMap ByteString ByteString -> SeqSourceRow -> SeqSourceRow
-addEmptyAddColsToSeqSourceRow HashMap ByteString ByteString
-toAddEmptyCols) [SeqSourceRow]
-simpleSeqSourceSum
-        addEmptyAddColsToSeqSourceRow :: Csv.NamedRecord -> SeqSourceRow -> SeqSourceRow
-        addEmptyAddColsToSeqSourceRow :: HashMap ByteString ByteString -> SeqSourceRow -> SeqSourceRow
-addEmptyAddColsToSeqSourceRow HashMap ByteString ByteString
-toAdd SeqSourceRow
-x =
-            SeqSourceRow
-x { sAdditionalColumns :: CsvNamedRecord
+addEmptyAddColsToSeqSourceRow HashMap ByteString ByteString
+toAddEmptyCols) [SeqSourceRow]
+simpleSeqSourceSum
+        addEmptyAddColsToSeqSourceRow :: Csv.NamedRecord -> SeqSourceRow -> SeqSourceRow
+        addEmptyAddColsToSeqSourceRow :: HashMap ByteString ByteString -> SeqSourceRow -> SeqSourceRow
+addEmptyAddColsToSeqSourceRow HashMap ByteString ByteString
+toAdd SeqSourceRow
+x =
+            SeqSourceRow
+x { sAdditionalColumns :: CsvNamedRecord
 sAdditionalColumns = HashMap ByteString ByteString -> CsvNamedRecord
 CsvNamedRecord (HashMap ByteString ByteString -> CsvNamedRecord)
 -> HashMap ByteString ByteString -> CsvNamedRecord
 forall a b. (a -> b) -> a -> b
 $ HashMap ByteString ByteString
 -> HashMap ByteString ByteString -> HashMap ByteString ByteString
-fillAddCols HashMap ByteString ByteString
-toAdd (CsvNamedRecord -> HashMap ByteString ByteString
+fillAddCols HashMap ByteString ByteString
+toAdd (CsvNamedRecord -> HashMap ByteString ByteString
 getCsvNR (CsvNamedRecord -> HashMap ByteString ByteString)
 -> CsvNamedRecord -> HashMap ByteString ByteString
 forall a b. (a -> b) -> a -> b
 $ SeqSourceRow -> CsvNamedRecord
 sAdditionalColumns SeqSourceRow
-x) }
-        fillAddCols :: Csv.NamedRecord -> Csv.NamedRecord -> Csv.NamedRecord
-        fillAddCols :: HashMap ByteString ByteString
+x) }
+        fillAddCols :: Csv.NamedRecord -> Csv.NamedRecord -> Csv.NamedRecord
+        fillAddCols :: HashMap ByteString ByteString
 -> HashMap ByteString ByteString -> HashMap ByteString ByteString
-fillAddCols HashMap ByteString ByteString
-toAdd HashMap ByteString ByteString
-cur = HashMap ByteString ByteString
+fillAddCols HashMap ByteString ByteString
+toAdd HashMap ByteString ByteString
+cur = HashMap ByteString ByteString
 -> HashMap ByteString ByteString -> HashMap ByteString ByteString
 forall k v.
 (Eq k, Hashable k) =>
 HashMap k v -> HashMap k v -> HashMap k v
 HM.union HashMap ByteString ByteString
-cur (HashMap ByteString ByteString
-toAdd HashMap ByteString ByteString
+cur (HashMap ByteString ByteString
+toAdd HashMap ByteString ByteString
 -> HashMap ByteString ByteString -> HashMap ByteString ByteString
 forall k v w.
 (Eq k, Hashable k) =>
 HashMap k v -> HashMap k w -> HashMap k v
 `HM.difference` HashMap ByteString ByteString
-cur)
-
-instance Monoid SeqSourceRows where
-    mempty :: SeqSourceRows
+cur)
+
+instance Monoid SeqSourceRows where
+    mempty :: SeqSourceRows
 mempty = [SeqSourceRow] -> SeqSourceRows
 SeqSourceRows []
-    mconcat :: [SeqSourceRows] -> SeqSourceRows
+    mconcat :: [SeqSourceRows] -> SeqSourceRows
 mconcat = (SeqSourceRows -> SeqSourceRows -> SeqSourceRows)
 -> SeqSourceRows -> [SeqSourceRows] -> SeqSourceRows
 forall b a. (b -> a -> b) -> b -> [a] -> b
@@ -634,21 +934,11 @@
 mappend SeqSourceRows
 forall a. Monoid a => a
 mempty
-
-instance ToJSON SeqSourceRows where
-    toEncoding :: SeqSourceRows -> Encoding
-toEncoding = Options -> SeqSourceRows -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding Options
-defaultOptions
-instance FromJSON SeqSourceRows
-
--- A data type to represent a run accession ID
-newtype AccessionIDRun = AccessionIDRun {AccessionIDRun -> AccessionID
-getRunAccession :: AccessionID}
-    deriving (AccessionIDRun -> AccessionIDRun -> Bool
+
+-- A data type to represent a run accession ID
+newtype AccessionIDRun = AccessionIDRun {AccessionIDRun -> AccessionID
+getRunAccession :: AccessionID}
+    deriving (AccessionIDRun -> AccessionIDRun -> Bool
 (AccessionIDRun -> AccessionIDRun -> Bool)
 -> (AccessionIDRun -> AccessionIDRun -> Bool) -> Eq AccessionIDRun
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -656,7 +946,7 @@
 == :: AccessionIDRun -> AccessionIDRun -> Bool
 $c/= :: AccessionIDRun -> AccessionIDRun -> Bool
 /= :: AccessionIDRun -> AccessionIDRun -> Bool
-Eq, (forall x. AccessionIDRun -> Rep AccessionIDRun x)
+Eq, (forall x. AccessionIDRun -> Rep AccessionIDRun x)
 -> (forall x. Rep AccessionIDRun x -> AccessionIDRun)
 -> Generic AccessionIDRun
 forall x. Rep AccessionIDRun x -> AccessionIDRun
@@ -668,20 +958,20 @@
 $cto :: forall x. Rep AccessionIDRun x -> AccessionIDRun
 to :: forall x. Rep AccessionIDRun x -> AccessionIDRun
 Generic)
-
-makeAccessionIDRun :: MonadFail m => String -> m AccessionIDRun
-makeAccessionIDRun :: forall (m :: * -> *). MonadFail m => [Char] -> m AccessionIDRun
-makeAccessionIDRun [Char]
-x = do
-    AccessionID
-accsID <- [Char] -> m AccessionID
+
+makeAccessionIDRun :: MonadFail m => String -> m AccessionIDRun
+makeAccessionIDRun :: forall (m :: * -> *). MonadFail m => [Char] -> m AccessionIDRun
+makeAccessionIDRun [Char]
+x = do
+    AccessionID
+accsID <- [Char] -> m AccessionID
 forall (m :: * -> *). MonadFail m => [Char] -> m AccessionID
-makeAccessionID [Char]
-x
-    case AccessionID
-accsID of
-        (INSDCRun [Char]
-y) -> AccessionIDRun -> m AccessionIDRun
+makeAccessionID [Char]
+x
+    case AccessionID
+accsID of
+        (INSDCRun [Char]
+y) -> AccessionIDRun -> m AccessionIDRun
 forall a. a -> m a
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure (AccessionIDRun -> m AccessionIDRun)
@@ -689,9 +979,9 @@
 forall a b. (a -> b) -> a -> b
 $ AccessionID -> AccessionIDRun
 AccessionIDRun ([Char] -> AccessionID
-INSDCRun [Char]
-y)
-        AccessionID
+INSDCRun [Char]
+y)
+        AccessionID
 _            -> [Char] -> m AccessionIDRun
 forall a. [Char] -> m a
 forall (m :: * -> *) a. MonadFail m => [Char] -> m a
@@ -703,77 +993,48 @@
 ++ ShowS
 forall a. Show a => a -> [Char]
 show [Char]
-x [Char] -> ShowS
+x [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ [Char]
 " not a correct run accession"
-
-instance Show AccessionIDRun where
-    show :: AccessionIDRun -> [Char]
-show (AccessionIDRun AccessionID
-x) = AccessionID -> [Char]
+
+instance Show AccessionIDRun where
+    show :: AccessionIDRun -> [Char]
+show (AccessionIDRun AccessionID
+x) = AccessionID -> [Char]
 forall a. Show a => a -> [Char]
 show AccessionID
-x
-
-instance Csv.ToField AccessionIDRun where
-    toField :: AccessionIDRun -> ByteString
-toField AccessionIDRun
-x = [Char] -> ByteString
+x
+
+instance Csv.ToField AccessionIDRun where
+    toField :: AccessionIDRun -> ByteString
+toField AccessionIDRun
+x = [Char] -> ByteString
 forall a. ToField a => a -> ByteString
 Csv.toField ([Char] -> ByteString) -> [Char] -> ByteString
 forall a b. (a -> b) -> a -> b
 $ AccessionIDRun -> [Char]
 forall a. Show a => a -> [Char]
 show AccessionIDRun
-x
-instance Csv.FromField AccessionIDRun where
-    parseField :: ByteString -> Parser AccessionIDRun
-parseField ByteString
-x = ByteString -> Parser [Char]
+x
+instance Csv.FromField AccessionIDRun where
+    parseField :: ByteString -> Parser AccessionIDRun
+parseField ByteString
+x = ByteString -> Parser [Char]
 forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x Parser [Char]
+x Parser [Char]
 -> ([Char] -> Parser AccessionIDRun) -> Parser AccessionIDRun
 forall a b. Parser a -> (a -> Parser b) -> Parser b
 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= [Char] -> Parser AccessionIDRun
 forall (m :: * -> *). MonadFail m => [Char] -> m AccessionIDRun
 makeAccessionIDRun
-instance ToJSON AccessionIDRun where
-    toEncoding :: AccessionIDRun -> Encoding
-toEncoding AccessionIDRun
-x = Text -> Encoding
-forall a. Text -> Encoding' a
-text (Text -> Encoding) -> Text -> Encoding
-forall a b. (a -> b) -> a -> b
-$ [Char] -> Text
-T.pack ([Char] -> Text) -> [Char] -> Text
-forall a b. (a -> b) -> a -> b
-$ AccessionIDRun -> [Char]
-forall a. Show a => a -> [Char]
-show AccessionIDRun
-x
-instance FromJSON AccessionIDRun where
-    parseJSON :: Value -> Parser AccessionIDRun
-parseJSON = [Char]
--> (Text -> Parser AccessionIDRun)
--> Value
--> Parser AccessionIDRun
-forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a
-withText [Char]
-"AccessionIDRun" ([Char] -> Parser AccessionIDRun
-forall (m :: * -> *). MonadFail m => [Char] -> m AccessionIDRun
-makeAccessionIDRun ([Char] -> Parser AccessionIDRun)
--> (Text -> [Char]) -> Text -> Parser AccessionIDRun
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. Text -> [Char]
-T.unpack)
-
--- A data type to represent a sample accession ID
-newtype AccessionIDSample = AccessionIDSample {AccessionIDSample -> AccessionID
-getSampleAccession :: AccessionID}
-    deriving (AccessionIDSample -> AccessionIDSample -> Bool
+
+-- A data type to represent a sample accession ID
+newtype AccessionIDSample = AccessionIDSample {AccessionIDSample -> AccessionID
+getSampleAccession :: AccessionID}
+    deriving (AccessionIDSample -> AccessionIDSample -> Bool
 (AccessionIDSample -> AccessionIDSample -> Bool)
 -> (AccessionIDSample -> AccessionIDSample -> Bool)
 -> Eq AccessionIDSample
@@ -782,7 +1043,7 @@
 == :: AccessionIDSample -> AccessionIDSample -> Bool
 $c/= :: AccessionIDSample -> AccessionIDSample -> Bool
 /= :: AccessionIDSample -> AccessionIDSample -> Bool
-Eq, (forall x. AccessionIDSample -> Rep AccessionIDSample x)
+Eq, (forall x. AccessionIDSample -> Rep AccessionIDSample x)
 -> (forall x. Rep AccessionIDSample x -> AccessionIDSample)
 -> Generic AccessionIDSample
 forall x. Rep AccessionIDSample x -> AccessionIDSample
@@ -794,20 +1055,20 @@
 $cto :: forall x. Rep AccessionIDSample x -> AccessionIDSample
 to :: forall x. Rep AccessionIDSample x -> AccessionIDSample
 Generic)
-
-makeAccessionIDSample :: MonadFail m => String -> m AccessionIDSample
-makeAccessionIDSample :: forall (m :: * -> *). MonadFail m => [Char] -> m AccessionIDSample
-makeAccessionIDSample [Char]
-x = do
-    AccessionID
-accsID <- [Char] -> m AccessionID
+
+makeAccessionIDSample :: MonadFail m => String -> m AccessionIDSample
+makeAccessionIDSample :: forall (m :: * -> *). MonadFail m => [Char] -> m AccessionIDSample
+makeAccessionIDSample [Char]
+x = do
+    AccessionID
+accsID <- [Char] -> m AccessionID
 forall (m :: * -> *). MonadFail m => [Char] -> m AccessionID
-makeAccessionID [Char]
-x
-    case AccessionID
-accsID of
-        (INSDCBioSample [Char]
-y) -> AccessionIDSample -> m AccessionIDSample
+makeAccessionID [Char]
+x
+    case AccessionID
+accsID of
+        (INSDCBioSample [Char]
+y) -> AccessionIDSample -> m AccessionIDSample
 forall a. a -> m a
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure (AccessionIDSample -> m AccessionIDSample)
@@ -815,10 +1076,10 @@
 forall a b. (a -> b) -> a -> b
 $ AccessionID -> AccessionIDSample
 AccessionIDSample ([Char] -> AccessionID
-INSDCBioSample [Char]
-y)
-        (INSDCSample [Char]
-y)    -> AccessionIDSample -> m AccessionIDSample
+INSDCBioSample [Char]
+y)
+        (INSDCSample [Char]
+y)    -> AccessionIDSample -> m AccessionIDSample
 forall a. a -> m a
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure (AccessionIDSample -> m AccessionIDSample)
@@ -826,9 +1087,9 @@
 forall a b. (a -> b) -> a -> b
 $ AccessionID -> AccessionIDSample
 AccessionIDSample ([Char] -> AccessionID
-INSDCSample [Char]
-y)
-        AccessionID
+INSDCSample [Char]
+y)
+        AccessionID
 _                  -> [Char] -> m AccessionIDSample
 forall a. [Char] -> m a
 forall (m :: * -> *) a. MonadFail m => [Char] -> m a
@@ -840,77 +1101,48 @@
 ++ ShowS
 forall a. Show a => a -> [Char]
 show [Char]
-x [Char] -> ShowS
+x [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ [Char]
 " not a correct biosample/sample accession"
-
-instance Show AccessionIDSample where
-    show :: AccessionIDSample -> [Char]
-show (AccessionIDSample AccessionID
-x) = AccessionID -> [Char]
+
+instance Show AccessionIDSample where
+    show :: AccessionIDSample -> [Char]
+show (AccessionIDSample AccessionID
+x) = AccessionID -> [Char]
 forall a. Show a => a -> [Char]
 show AccessionID
-x
-
-instance Csv.ToField AccessionIDSample where
-    toField :: AccessionIDSample -> ByteString
-toField AccessionIDSample
-x = [Char] -> ByteString
+x
+
+instance Csv.ToField AccessionIDSample where
+    toField :: AccessionIDSample -> ByteString
+toField AccessionIDSample
+x = [Char] -> ByteString
 forall a. ToField a => a -> ByteString
 Csv.toField ([Char] -> ByteString) -> [Char] -> ByteString
 forall a b. (a -> b) -> a -> b
 $ AccessionIDSample -> [Char]
 forall a. Show a => a -> [Char]
 show AccessionIDSample
-x
-instance Csv.FromField AccessionIDSample where
-    parseField :: ByteString -> Parser AccessionIDSample
-parseField ByteString
-x = ByteString -> Parser [Char]
+x
+instance Csv.FromField AccessionIDSample where
+    parseField :: ByteString -> Parser AccessionIDSample
+parseField ByteString
+x = ByteString -> Parser [Char]
 forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x Parser [Char]
+x Parser [Char]
 -> ([Char] -> Parser AccessionIDSample) -> Parser AccessionIDSample
 forall a b. Parser a -> (a -> Parser b) -> Parser b
 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= [Char] -> Parser AccessionIDSample
 forall (m :: * -> *). MonadFail m => [Char] -> m AccessionIDSample
 makeAccessionIDSample
-instance ToJSON AccessionIDSample where
-    toEncoding :: AccessionIDSample -> Encoding
-toEncoding AccessionIDSample
-x = Text -> Encoding
-forall a. Text -> Encoding' a
-text (Text -> Encoding) -> Text -> Encoding
-forall a b. (a -> b) -> a -> b
-$ [Char] -> Text
-T.pack ([Char] -> Text) -> [Char] -> Text
-forall a b. (a -> b) -> a -> b
-$ AccessionIDSample -> [Char]
-forall a. Show a => a -> [Char]
-show AccessionIDSample
-x
-instance FromJSON AccessionIDSample where
-    parseJSON :: Value -> Parser AccessionIDSample
-parseJSON = [Char]
--> (Text -> Parser AccessionIDSample)
--> Value
--> Parser AccessionIDSample
-forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a
-withText [Char]
-"AccessionIDSample" ([Char] -> Parser AccessionIDSample
-forall (m :: * -> *). MonadFail m => [Char] -> m AccessionIDSample
-makeAccessionIDSample ([Char] -> Parser AccessionIDSample)
--> (Text -> [Char]) -> Text -> Parser AccessionIDSample
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. Text -> [Char]
-T.unpack)
-
--- A data type to represent a study accession ID
-newtype AccessionIDStudy = AccessionIDStudy {AccessionIDStudy -> AccessionID
-getStudyAccession :: AccessionID}
-    deriving (AccessionIDStudy -> AccessionIDStudy -> Bool
+
+-- A data type to represent a study accession ID
+newtype AccessionIDStudy = AccessionIDStudy {AccessionIDStudy -> AccessionID
+getStudyAccession :: AccessionID}
+    deriving (AccessionIDStudy -> AccessionIDStudy -> Bool
 (AccessionIDStudy -> AccessionIDStudy -> Bool)
 -> (AccessionIDStudy -> AccessionIDStudy -> Bool)
 -> Eq AccessionIDStudy
@@ -919,7 +1151,7 @@
 == :: AccessionIDStudy -> AccessionIDStudy -> Bool
 $c/= :: AccessionIDStudy -> AccessionIDStudy -> Bool
 /= :: AccessionIDStudy -> AccessionIDStudy -> Bool
-Eq, (forall x. AccessionIDStudy -> Rep AccessionIDStudy x)
+Eq, (forall x. AccessionIDStudy -> Rep AccessionIDStudy x)
 -> (forall x. Rep AccessionIDStudy x -> AccessionIDStudy)
 -> Generic AccessionIDStudy
 forall x. Rep AccessionIDStudy x -> AccessionIDStudy
@@ -931,28 +1163,28 @@
 $cto :: forall x. Rep AccessionIDStudy x -> AccessionIDStudy
 to :: forall x. Rep AccessionIDStudy x -> AccessionIDStudy
 Generic)
-
-instance Show AccessionIDStudy where
-    show :: AccessionIDStudy -> [Char]
-show (AccessionIDStudy AccessionID
-x) = AccessionID -> [Char]
+
+instance Show AccessionIDStudy where
+    show :: AccessionIDStudy -> [Char]
+show (AccessionIDStudy AccessionID
+x) = AccessionID -> [Char]
 forall a. Show a => a -> [Char]
 show AccessionID
-x
-
-makeAccessionIDStudy :: MonadFail m => String -> m AccessionIDStudy
-makeAccessionIDStudy :: forall (m :: * -> *). MonadFail m => [Char] -> m AccessionIDStudy
-makeAccessionIDStudy [Char]
-x = do
-    AccessionID
-accsID <- [Char] -> m AccessionID
+x
+
+makeAccessionIDStudy :: MonadFail m => String -> m AccessionIDStudy
+makeAccessionIDStudy :: forall (m :: * -> *). MonadFail m => [Char] -> m AccessionIDStudy
+makeAccessionIDStudy [Char]
+x = do
+    AccessionID
+accsID <- [Char] -> m AccessionID
 forall (m :: * -> *). MonadFail m => [Char] -> m AccessionID
-makeAccessionID [Char]
-x
-    case AccessionID
-accsID of
-        (INSDCProject [Char]
-y) -> AccessionIDStudy -> m AccessionIDStudy
+makeAccessionID [Char]
+x
+    case AccessionID
+accsID of
+        (INSDCProject [Char]
+y) -> AccessionIDStudy -> m AccessionIDStudy
 forall a. a -> m a
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure (AccessionIDStudy -> m AccessionIDStudy)
@@ -960,10 +1192,10 @@
 forall a b. (a -> b) -> a -> b
 $ AccessionID -> AccessionIDStudy
 AccessionIDStudy ([Char] -> AccessionID
-INSDCProject [Char]
-y)
-        (INSDCStudy [Char]
-y)   -> AccessionIDStudy -> m AccessionIDStudy
+INSDCProject [Char]
+y)
+        (INSDCStudy [Char]
+y)   -> AccessionIDStudy -> m AccessionIDStudy
 forall a. a -> m a
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure (AccessionIDStudy -> m AccessionIDStudy)
@@ -971,9 +1203,9 @@
 forall a b. (a -> b) -> a -> b
 $ AccessionID -> AccessionIDStudy
 AccessionIDStudy ([Char] -> AccessionID
-INSDCStudy [Char]
-y)
-        AccessionID
+INSDCStudy [Char]
+y)
+        AccessionID
 _                -> [Char] -> m AccessionIDStudy
 forall a. [Char] -> m a
 forall (m :: * -> *) a. MonadFail m => [Char] -> m a
@@ -985,68 +1217,39 @@
 ++ ShowS
 forall a. Show a => a -> [Char]
 show [Char]
-x [Char] -> ShowS
+x [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ [Char]
 " not a correct project/study accession"
-
-instance Csv.ToField AccessionIDStudy where
-    toField :: AccessionIDStudy -> ByteString
-toField AccessionIDStudy
-x = [Char] -> ByteString
+
+instance Csv.ToField AccessionIDStudy where
+    toField :: AccessionIDStudy -> ByteString
+toField AccessionIDStudy
+x = [Char] -> ByteString
 forall a. ToField a => a -> ByteString
 Csv.toField ([Char] -> ByteString) -> [Char] -> ByteString
 forall a b. (a -> b) -> a -> b
 $ AccessionIDStudy -> [Char]
 forall a. Show a => a -> [Char]
 show AccessionIDStudy
-x
-instance Csv.FromField AccessionIDStudy where
-    parseField :: ByteString -> Parser AccessionIDStudy
-parseField ByteString
-x = ByteString -> Parser [Char]
+x
+instance Csv.FromField AccessionIDStudy where
+    parseField :: ByteString -> Parser AccessionIDStudy
+parseField ByteString
+x = ByteString -> Parser [Char]
 forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x Parser [Char]
+x Parser [Char]
 -> ([Char] -> Parser AccessionIDStudy) -> Parser AccessionIDStudy
 forall a b. Parser a -> (a -> Parser b) -> Parser b
 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= [Char] -> Parser AccessionIDStudy
 forall (m :: * -> *). MonadFail m => [Char] -> m AccessionIDStudy
 makeAccessionIDStudy
-instance ToJSON AccessionIDStudy where
-    toEncoding :: AccessionIDStudy -> Encoding
-toEncoding AccessionIDStudy
-x = Text -> Encoding
-forall a. Text -> Encoding' a
-text (Text -> Encoding) -> Text -> Encoding
-forall a b. (a -> b) -> a -> b
-$ [Char] -> Text
-T.pack ([Char] -> Text) -> [Char] -> Text
-forall a b. (a -> b) -> a -> b
-$ AccessionIDStudy -> [Char]
-forall a. Show a => a -> [Char]
-show AccessionIDStudy
-x
-instance FromJSON AccessionIDStudy where
-    parseJSON :: Value -> Parser AccessionIDStudy
-parseJSON = [Char]
--> (Text -> Parser AccessionIDStudy)
--> Value
--> Parser AccessionIDStudy
-forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a
-withText [Char]
-"AccessionIDStudy" ([Char] -> Parser AccessionIDStudy
-forall (m :: * -> *). MonadFail m => [Char] -> m AccessionIDStudy
-makeAccessionIDStudy ([Char] -> Parser AccessionIDStudy)
--> (Text -> [Char]) -> Text -> Parser AccessionIDStudy
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. Text -> [Char]
-T.unpack)
-
--- | A datatype for calendar dates
-newtype SimpleDate = SimpleDate Day
-    deriving (SimpleDate -> SimpleDate -> Bool
+
+-- | A datatype for calendar dates
+newtype SimpleDate = SimpleDate Day
+    deriving (SimpleDate -> SimpleDate -> Bool
 (SimpleDate -> SimpleDate -> Bool)
 -> (SimpleDate -> SimpleDate -> Bool) -> Eq SimpleDate
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -1054,7 +1257,7 @@
 == :: SimpleDate -> SimpleDate -> Bool
 $c/= :: SimpleDate -> SimpleDate -> Bool
 /= :: SimpleDate -> SimpleDate -> Bool
-Eq, Eq SimpleDate
+Eq, Eq SimpleDate
 Eq SimpleDate
 -> (SimpleDate -> SimpleDate -> Ordering)
 -> (SimpleDate -> SimpleDate -> Bool)
@@ -1091,7 +1294,7 @@
 max :: SimpleDate -> SimpleDate -> SimpleDate
 $cmin :: SimpleDate -> SimpleDate -> SimpleDate
 min :: SimpleDate -> SimpleDate -> SimpleDate
-Ord, (forall x. SimpleDate -> Rep SimpleDate x)
+Ord, (forall x. SimpleDate -> Rep SimpleDate x)
 -> (forall x. Rep SimpleDate x -> SimpleDate) -> Generic SimpleDate
 forall x. Rep SimpleDate x -> SimpleDate
 forall x. SimpleDate -> Rep SimpleDate x
@@ -1102,23 +1305,23 @@
 $cto :: forall x. Rep SimpleDate x -> SimpleDate
 to :: forall x. Rep SimpleDate x -> SimpleDate
 Generic)
-
-instance Show SimpleDate where
-    show :: SimpleDate -> [Char]
-show (SimpleDate Day
-x) = TimeLocale -> [Char] -> Day -> [Char]
+
+instance Show SimpleDate where
+    show :: SimpleDate -> [Char]
+show (SimpleDate Day
+x) = TimeLocale -> [Char] -> Day -> [Char]
 forall t. FormatTime t => TimeLocale -> [Char] -> t -> [Char]
 formatTime TimeLocale
 defaultTimeLocale [Char]
 "%Y-%-m-%-d" Day
-x
-
-makeSimpleDate :: MonadFail m => String -> m SimpleDate
-makeSimpleDate :: forall (m :: * -> *). MonadFail m => [Char] -> m SimpleDate
-makeSimpleDate [Char]
-x = do
-    Day
-mday <- Bool -> TimeLocale -> [Char] -> [Char] -> m Day
+x
+
+makeSimpleDate :: MonadFail m => String -> m SimpleDate
+makeSimpleDate :: forall (m :: * -> *). MonadFail m => [Char] -> m SimpleDate
+makeSimpleDate [Char]
+x = do
+    Day
+mday <- Bool -> TimeLocale -> [Char] -> [Char] -> m Day
 forall (m :: * -> *) t.
 (MonadFail m, ParseTime t) =>
 Bool -> TimeLocale -> [Char] -> [Char] -> m t
@@ -1126,74 +1329,48 @@
 False TimeLocale
 defaultTimeLocale [Char]
 "%Y-%-m-%-d" [Char]
-x
-    SimpleDate -> m SimpleDate
+x
+    SimpleDate -> m SimpleDate
 forall a. a -> m a
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure (Day -> SimpleDate
 SimpleDate Day
-mday)
-
-instance Csv.ToField SimpleDate where
-    toField :: SimpleDate -> ByteString
-toField (SimpleDate Day
-x) = [Char] -> ByteString
+mday)
+
+instance Csv.ToField SimpleDate where
+    toField :: SimpleDate -> ByteString
+toField (SimpleDate Day
+x) = [Char] -> ByteString
 forall a. ToField a => a -> ByteString
 Csv.toField ([Char] -> ByteString) -> [Char] -> ByteString
 forall a b. (a -> b) -> a -> b
 $ Day -> [Char]
 forall a. Show a => a -> [Char]
 show Day
-x
-instance Csv.FromField SimpleDate where
-    parseField :: ByteString -> Parser SimpleDate
-parseField ByteString
-x = ByteString -> Parser [Char]
+x
+instance Csv.FromField SimpleDate where
+    parseField :: ByteString -> Parser SimpleDate
+parseField ByteString
+x = ByteString -> Parser [Char]
 forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x Parser [Char] -> ([Char] -> Parser SimpleDate) -> Parser SimpleDate
+x Parser [Char] -> ([Char] -> Parser SimpleDate) -> Parser SimpleDate
 forall a b. Parser a -> (a -> Parser b) -> Parser b
 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= [Char] -> Parser SimpleDate
 forall (m :: * -> *). MonadFail m => [Char] -> m SimpleDate
 makeSimpleDate
-instance ToJSON SimpleDate where
-    toEncoding :: SimpleDate -> Encoding
-toEncoding SimpleDate
-x = Text -> Encoding
-forall a. Text -> Encoding' a
-text (Text -> Encoding) -> Text -> Encoding
-forall a b. (a -> b) -> a -> b
-$ [Char] -> Text
-T.pack ([Char] -> Text) -> [Char] -> Text
-forall a b. (a -> b) -> a -> b
-$ SimpleDate -> [Char]
-forall a. Show a => a -> [Char]
-show SimpleDate
-x
-instance FromJSON SimpleDate where
-    parseJSON :: Value -> Parser SimpleDate
-parseJSON = [Char] -> (Text -> Parser SimpleDate) -> Value -> Parser SimpleDate
-forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a
-withText [Char]
-"SimpleDate" ([Char] -> Parser SimpleDate
-forall (m :: * -> *). MonadFail m => [Char] -> m SimpleDate
-makeSimpleDate ([Char] -> Parser SimpleDate)
--> (Text -> [Char]) -> Text -> Parser SimpleDate
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. Text -> [Char]
-T.unpack)
-
--- | A datatype to represent MD5 hashes
-newtype MD5 = MD5 String
-    deriving (MD5 -> MD5 -> Bool
+
+-- | A datatype to represent MD5 hashes
+newtype MD5 = MD5 String
+    deriving (MD5 -> MD5 -> Bool
 (MD5 -> MD5 -> Bool) -> (MD5 -> MD5 -> Bool) -> Eq MD5
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 $c== :: MD5 -> MD5 -> Bool
 == :: MD5 -> MD5 -> Bool
 $c/= :: MD5 -> MD5 -> Bool
 /= :: MD5 -> MD5 -> Bool
-Eq, Eq MD5
+Eq, Eq MD5
 Eq MD5
 -> (MD5 -> MD5 -> Ordering)
 -> (MD5 -> MD5 -> Bool)
@@ -1230,7 +1407,7 @@
 max :: MD5 -> MD5 -> MD5
 $cmin :: MD5 -> MD5 -> MD5
 min :: MD5 -> MD5 -> MD5
-Ord, (forall x. MD5 -> Rep MD5 x)
+Ord, (forall x. MD5 -> Rep MD5 x)
 -> (forall x. Rep MD5 x -> MD5) -> Generic MD5
 forall x. Rep MD5 x -> MD5
 forall x. MD5 -> Rep MD5 x
@@ -1241,28 +1418,28 @@
 $cto :: forall x. Rep MD5 x -> MD5
 to :: forall x. Rep MD5 x -> MD5
 Generic)
-
-instance Show MD5 where
-    show :: MD5 -> [Char]
-show (MD5 [Char]
-x) = [Char]
-x
-
-makeMD5 :: MonadFail m => String -> m MD5
-makeMD5 :: forall (m :: * -> *). MonadFail m => [Char] -> m MD5
-makeMD5 [Char]
-x
-    | [Char] -> Bool
+
+instance Show MD5 where
+    show :: MD5 -> [Char]
+show (MD5 [Char]
+x) = [Char]
+x
+
+makeMD5 :: MonadFail m => String -> m MD5
+makeMD5 :: forall (m :: * -> *). MonadFail m => [Char] -> m MD5
+makeMD5 [Char]
+x
+    | [Char] -> Bool
 isMD5Hash [Char]
-x = MD5 -> m MD5
+x = MD5 -> m MD5
 forall a. a -> m a
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure (MD5 -> m MD5) -> MD5 -> m MD5
 forall a b. (a -> b) -> a -> b
 $ [Char] -> MD5
 MD5 [Char]
-x
-    | Bool
+x
+    | Bool
 otherwise   = [Char] -> m MD5
 forall a. [Char] -> m a
 forall (m :: * -> *) a. MonadFail m => [Char] -> m a
@@ -1274,19 +1451,19 @@
 ++ ShowS
 forall a. Show a => a -> [Char]
 show [Char]
-x [Char] -> ShowS
+x [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ [Char]
 " not well structured"
-
-isMD5Hash :: String -> Bool
-isMD5Hash :: [Char] -> Bool
-isMD5Hash [Char]
-x = [Char] -> Int
+
+isMD5Hash :: String -> Bool
+isMD5Hash :: [Char] -> Bool
+isMD5Hash [Char]
+x = [Char] -> Int
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
 length [Char]
-x Int -> Int -> Bool
+x Int -> Int -> Bool
 forall a. Eq a => a -> a -> Bool
 == Int
 32 Bool -> Bool -> Bool
@@ -1294,109 +1471,84 @@
 forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
 all Char -> Bool
 isHexDigit [Char]
-x
-
-instance Csv.ToField MD5 where
-    toField :: MD5 -> ByteString
-toField MD5
-x = [Char] -> ByteString
+x
+
+instance Csv.ToField MD5 where
+    toField :: MD5 -> ByteString
+toField MD5
+x = [Char] -> ByteString
 forall a. ToField a => a -> ByteString
 Csv.toField ([Char] -> ByteString) -> [Char] -> ByteString
 forall a b. (a -> b) -> a -> b
 $ MD5 -> [Char]
 forall a. Show a => a -> [Char]
 show MD5
-x
-instance Csv.FromField MD5 where
-    parseField :: ByteString -> Parser MD5
-parseField ByteString
-x = ByteString -> Parser [Char]
+x
+instance Csv.FromField MD5 where
+    parseField :: ByteString -> Parser MD5
+parseField ByteString
+x = ByteString -> Parser [Char]
 forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x Parser [Char] -> ([Char] -> Parser MD5) -> Parser MD5
+x Parser [Char] -> ([Char] -> Parser MD5) -> Parser MD5
 forall a b. Parser a -> (a -> Parser b) -> Parser b
 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= [Char] -> Parser MD5
 forall (m :: * -> *). MonadFail m => [Char] -> m MD5
 makeMD5
-instance ToJSON MD5 where
-    toEncoding :: MD5 -> Encoding
-toEncoding MD5
-x = Text -> Encoding
-forall a. Text -> Encoding' a
-text (Text -> Encoding) -> Text -> Encoding
-forall a b. (a -> b) -> a -> b
-$ [Char] -> Text
-T.pack ([Char] -> Text) -> [Char] -> Text
-forall a b. (a -> b) -> a -> b
-$ MD5 -> [Char]
-forall a. Show a => a -> [Char]
-show MD5
-x
-instance FromJSON MD5 where
-    parseJSON :: Value -> Parser MD5
-parseJSON = [Char] -> (Text -> Parser MD5) -> Value -> Parser MD5
-forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a
-withText [Char]
-"MD5" ([Char] -> Parser MD5
-forall (m :: * -> *). MonadFail m => [Char] -> m MD5
-makeMD5 ([Char] -> Parser MD5) -> (Text -> [Char]) -> Text -> Parser MD5
-forall b c a. (b -> c) -> (a -> b) -> a -> c
-. Text -> [Char]
-T.unpack)
-
--- | A data type to represent a row in the seqSourceFile
--- See https://github.com/poseidon-framework/poseidon2-schema/blob/master/seqSourceFile_columns.tsv
--- for more details
-data SeqSourceRow = SeqSourceRow
-    { SeqSourceRow -> Maybe JannoStringList
+
+-- | A data type to represent a row in the seqSourceFile
+-- See https://github.com/poseidon-framework/poseidon2-schema/blob/master/seqSourceFile_columns.tsv
+-- for more details
+data SeqSourceRow = SeqSourceRow
+    { SeqSourceRow -> Maybe JannoStringList
 sPoseidonID               :: Maybe JannoStringList
-    , SeqSourceRow -> Maybe SSFUDG
+    , SeqSourceRow -> Maybe SSFUDG
 sUDG                      :: Maybe SSFUDG
-    , SeqSourceRow -> Maybe SSFLibraryBuilt
+    , SeqSourceRow -> Maybe SSFLibraryBuilt
 sLibraryBuilt             :: Maybe SSFLibraryBuilt
-    , SeqSourceRow -> Maybe AccessionIDSample
+    , SeqSourceRow -> Maybe AccessionIDSample
 sSampleAccession          :: Maybe AccessionIDSample
-    , SeqSourceRow -> Maybe AccessionIDStudy
+    , SeqSourceRow -> Maybe AccessionIDStudy
 sStudyAccession           :: Maybe AccessionIDStudy
-    , SeqSourceRow -> Maybe AccessionIDRun
+    , SeqSourceRow -> Maybe AccessionIDRun
 sRunAccession             :: Maybe AccessionIDRun
-    , SeqSourceRow -> Maybe [Char]
+    , SeqSourceRow -> Maybe [Char]
 sSampleAlias              :: Maybe String
-    , SeqSourceRow -> Maybe [Char]
+    , SeqSourceRow -> Maybe [Char]
 sSecondarySampleAccession :: Maybe String
-    , SeqSourceRow -> Maybe SimpleDate
+    , SeqSourceRow -> Maybe SimpleDate
 sFirstPublic              :: Maybe SimpleDate
-    , SeqSourceRow -> Maybe SimpleDate
+    , SeqSourceRow -> Maybe SimpleDate
 sLastUpdated              :: Maybe SimpleDate
-    , SeqSourceRow -> Maybe [Char]
+    , SeqSourceRow -> Maybe [Char]
 sInstrumentModel          :: Maybe String
-    , SeqSourceRow -> Maybe [Char]
+    , SeqSourceRow -> Maybe [Char]
 sLibraryLayout            :: Maybe String
-    , SeqSourceRow -> Maybe [Char]
+    , SeqSourceRow -> Maybe [Char]
 sLibrarySource            :: Maybe String
-    , SeqSourceRow -> Maybe [Char]
+    , SeqSourceRow -> Maybe [Char]
 sInstrumentPlatform       :: Maybe String
-    , SeqSourceRow -> Maybe [Char]
+    , SeqSourceRow -> Maybe [Char]
 sLibraryName              :: Maybe String
-    , SeqSourceRow -> Maybe [Char]
+    , SeqSourceRow -> Maybe [Char]
 sLibraryStrategy          :: Maybe String
-    , SeqSourceRow -> Maybe (JannoList JURI)
-sFastqFTP                 :: Maybe (JannoList JURI)
-    , SeqSourceRow -> Maybe (JannoList JURI)
-sFastqASPERA              :: Maybe (JannoList JURI)
-    , SeqSourceRow -> Maybe (JannoList Integer)
-sFastqBytes               :: Maybe (JannoList Integer) -- integer, not int, because it can be a very large number
-    , SeqSourceRow -> Maybe (JannoList MD5)
-sFastqMD5                 :: Maybe (JannoList MD5)
-    , SeqSourceRow -> Maybe Integer
+    , SeqSourceRow -> Maybe (ListColumn JURI)
+sFastqFTP                 :: Maybe (ListColumn JURI)
+    , SeqSourceRow -> Maybe (ListColumn JURI)
+sFastqASPERA              :: Maybe (ListColumn JURI)
+    , SeqSourceRow -> Maybe (ListColumn Integer)
+sFastqBytes               :: Maybe (ListColumn Integer) -- integer, not int, because it can be a very large number
+    , SeqSourceRow -> Maybe (ListColumn MD5)
+sFastqMD5                 :: Maybe (ListColumn MD5)
+    , SeqSourceRow -> Maybe Integer
 sReadCount                :: Maybe Integer             -- integer, not int, because it can be a very large number
-    , SeqSourceRow -> Maybe (JannoList JURI)
-sSubmittedFTP             :: Maybe (JannoList JURI)
-    , SeqSourceRow -> CsvNamedRecord
+    , SeqSourceRow -> Maybe (ListColumn JURI)
+sSubmittedFTP             :: Maybe (ListColumn JURI)
+    , SeqSourceRow -> CsvNamedRecord
 sAdditionalColumns        :: CsvNamedRecord
-    }
-    deriving (Int -> SeqSourceRow -> ShowS
+    }
+    deriving (Int -> SeqSourceRow -> ShowS
 [SeqSourceRow] -> ShowS
 SeqSourceRow -> [Char]
 (Int -> SeqSourceRow -> ShowS)
@@ -1411,7 +1563,7 @@
 show :: SeqSourceRow -> [Char]
 $cshowList :: [SeqSourceRow] -> ShowS
 showList :: [SeqSourceRow] -> ShowS
-Show, SeqSourceRow -> SeqSourceRow -> Bool
+Show, SeqSourceRow -> SeqSourceRow -> Bool
 (SeqSourceRow -> SeqSourceRow -> Bool)
 -> (SeqSourceRow -> SeqSourceRow -> Bool) -> Eq SeqSourceRow
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -1419,7 +1571,7 @@
 == :: SeqSourceRow -> SeqSourceRow -> Bool
 $c/= :: SeqSourceRow -> SeqSourceRow -> Bool
 /= :: SeqSourceRow -> SeqSourceRow -> Bool
-Eq, (forall x. SeqSourceRow -> Rep SeqSourceRow x)
+Eq, (forall x. SeqSourceRow -> Rep SeqSourceRow x)
 -> (forall x. Rep SeqSourceRow x -> SeqSourceRow)
 -> Generic SeqSourceRow
 forall x. Rep SeqSourceRow x -> SeqSourceRow
@@ -1431,75 +1583,75 @@
 $cto :: forall x. Rep SeqSourceRow x -> SeqSourceRow
 to :: forall x. Rep SeqSourceRow x -> SeqSourceRow
 Generic)
-
--- This header also defines the output column order when writing to csv!
-seqSourceHeader :: [Bchs.ByteString]
-seqSourceHeader :: [ByteString]
+
+-- This header also defines the output column order when writing to csv!
+seqSourceHeader :: [Bchs.ByteString]
+seqSourceHeader :: [ByteString]
 seqSourceHeader = [
-      ByteString
+      ByteString
 "poseidon_IDs"
-    , ByteString
+    , ByteString
 "udg"
-    , ByteString
+    , ByteString
 "library_built"
-    , ByteString
+    , ByteString
 "sample_accession"
-    , ByteString
+    , ByteString
 "study_accession"
-    , ByteString
+    , ByteString
 "run_accession"
-    , ByteString
+    , ByteString
 "sample_alias"
-    , ByteString
+    , ByteString
 "secondary_sample_accession"
-    , ByteString
+    , ByteString
 "first_public"
-    , ByteString
+    , ByteString
 "last_updated"
-    , ByteString
+    , ByteString
 "instrument_model"
-    , ByteString
+    , ByteString
 "library_layout"
-    , ByteString
+    , ByteString
 "library_source"
-    , ByteString
+    , ByteString
 "instrument_platform"
-    , ByteString
+    , ByteString
 "library_name"
-    , ByteString
+    , ByteString
 "library_strategy"
-    , ByteString
+    , ByteString
 "fastq_ftp"
-    , ByteString
+    , ByteString
 "fastq_aspera"
-    , ByteString
+    , ByteString
 "fastq_bytes"
-    , ByteString
+    , ByteString
 "fastq_md5"
-    , ByteString
+    , ByteString
 "read_count"
-    , ByteString
+    , ByteString
 "submitted_ftp"
-    ]
-
-instance Csv.DefaultOrdered SeqSourceRow where
-    headerOrder :: SeqSourceRow -> Header
-headerOrder SeqSourceRow
+    ]
+
+instance Csv.DefaultOrdered SeqSourceRow where
+    headerOrder :: SeqSourceRow -> Header
+headerOrder SeqSourceRow
 _ = [ByteString] -> Header
 Csv.header [ByteString]
 seqSourceHeader
-
-seqSourceHeaderString :: [String]
-seqSourceHeaderString :: [[Char]]
+
+seqSourceHeaderString :: [String]
+seqSourceHeaderString :: [[Char]]
 seqSourceHeaderString = (ByteString -> [Char]) -> [ByteString] -> [[Char]]
 forall a b. (a -> b) -> [a] -> [b]
 map ByteString -> [Char]
 Bchs.unpack [ByteString]
 seqSourceHeader
-
--- This hashmap represents an empty seqSourceFile with all normal, specified columns
-seqSourceRefHashMap :: HM.HashMap Bchs.ByteString ()
-seqSourceRefHashMap :: HashMap ByteString ()
+
+-- This hashmap represents an empty seqSourceFile with all normal, specified columns
+seqSourceRefHashMap :: HM.HashMap Bchs.ByteString ()
+seqSourceRefHashMap :: HashMap ByteString ()
 seqSourceRefHashMap = [(ByteString, ())] -> HashMap ByteString ()
 forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
 HM.fromList ([(ByteString, ())] -> HashMap ByteString ())
@@ -1508,28 +1660,15 @@
 $ (ByteString -> (ByteString, ()))
 -> [ByteString] -> [(ByteString, ())]
 forall a b. (a -> b) -> [a] -> [b]
-map (\ByteString
-x -> (ByteString
-x, ())) [ByteString]
+map (\ByteString
+x -> (ByteString
+x, ())) [ByteString]
 seqSourceHeader
-
-instance ToJSON SeqSourceRow where
-    toEncoding :: SeqSourceRow -> Encoding
-toEncoding = Options -> SeqSourceRow -> Encoding
-forall a.
-(Generic a, GToJSON' Encoding Zero (Rep a)) =>
-Options -> a -> Encoding
-genericToEncoding (Options
-defaultOptions {omitNothingFields :: Bool
-omitNothingFields = Bool
-True})
-
-instance FromJSON SeqSourceRow
-
-instance Csv.FromNamedRecord SeqSourceRow where
-    parseNamedRecord :: HashMap ByteString ByteString -> Parser SeqSourceRow
-parseNamedRecord HashMap ByteString ByteString
-m = Maybe JannoStringList
+
+instance Csv.FromNamedRecord SeqSourceRow where
+    parseNamedRecord :: HashMap ByteString ByteString -> Parser SeqSourceRow
+parseNamedRecord HashMap ByteString ByteString
+m = Maybe JannoStringList
 -> Maybe SSFUDG
 -> Maybe SSFLibraryBuilt
 -> Maybe AccessionIDSample
@@ -1545,16 +1684,16 @@
 -> Maybe [Char]
 -> Maybe [Char]
 -> Maybe [Char]
--> Maybe (JannoList JURI)
--> Maybe (JannoList JURI)
--> Maybe (JannoList Integer)
--> Maybe (JannoList MD5)
+-> Maybe (ListColumn JURI)
+-> Maybe (ListColumn JURI)
+-> Maybe (ListColumn Integer)
+-> Maybe (ListColumn MD5)
 -> Maybe Integer
--> Maybe (JannoList JURI)
+-> Maybe (ListColumn JURI)
 -> CsvNamedRecord
 -> SeqSourceRow
 SeqSourceRow
-        (Maybe JannoStringList
+        (Maybe JannoStringList
  -> Maybe SSFUDG
  -> Maybe SSFLibraryBuilt
  -> Maybe AccessionIDSample
@@ -1570,12 +1709,12 @@
  -> Maybe [Char]
  -> Maybe [Char]
  -> Maybe [Char]
- -> Maybe (JannoList JURI)
- -> Maybe (JannoList JURI)
- -> Maybe (JannoList Integer)
- -> Maybe (JannoList MD5)
+ -> Maybe (ListColumn JURI)
+ -> Maybe (ListColumn JURI)
+ -> Maybe (ListColumn Integer)
+ -> Maybe (ListColumn MD5)
  -> Maybe Integer
- -> Maybe (JannoList JURI)
+ -> Maybe (ListColumn JURI)
  -> CsvNamedRecord
  -> SeqSourceRow)
 -> Parser (Maybe JannoStringList)
@@ -1595,12 +1734,12 @@
       -> Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
@@ -1610,9 +1749,9 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "poseidon_IDs"
-        Parser
+        Parser
   (Maybe SSFUDG
    -> Maybe SSFLibraryBuilt
    -> Maybe AccessionIDSample
@@ -1628,12 +1767,12 @@
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe SSFUDG)
@@ -1652,12 +1791,12 @@
       -> Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -1668,9 +1807,9 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "udg"
-        Parser
+        Parser
   (Maybe SSFLibraryBuilt
    -> Maybe AccessionIDSample
    -> Maybe AccessionIDStudy
@@ -1685,12 +1824,12 @@
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe SSFLibraryBuilt)
@@ -1708,12 +1847,12 @@
       -> Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -1724,9 +1863,9 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "library_built"
-        Parser
+        Parser
   (Maybe AccessionIDSample
    -> Maybe AccessionIDStudy
    -> Maybe AccessionIDRun
@@ -1740,12 +1879,12 @@
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe AccessionIDSample)
@@ -1762,12 +1901,12 @@
       -> Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -1778,9 +1917,9 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "sample_accession"
-        Parser
+        Parser
   (Maybe AccessionIDStudy
    -> Maybe AccessionIDRun
    -> Maybe [Char]
@@ -1793,12 +1932,12 @@
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe AccessionIDStudy)
@@ -1814,12 +1953,12 @@
       -> Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -1830,9 +1969,9 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "study_accession"
-        Parser
+        Parser
   (Maybe AccessionIDRun
    -> Maybe [Char]
    -> Maybe [Char]
@@ -1844,12 +1983,12 @@
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe AccessionIDRun)
@@ -1864,12 +2003,12 @@
       -> Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -1880,9 +2019,9 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser a
 filterLookup         HashMap ByteString ByteString
-m ByteString
+m ByteString
 "run_accession"
-        Parser
+        Parser
   (Maybe [Char]
    -> Maybe [Char]
    -> Maybe SimpleDate
@@ -1893,12 +2032,12 @@
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe [Char])
@@ -1912,12 +2051,12 @@
       -> Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -1928,9 +2067,9 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "sample_alias"
-        Parser
+        Parser
   (Maybe [Char]
    -> Maybe SimpleDate
    -> Maybe SimpleDate
@@ -1940,12 +2079,12 @@
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe [Char])
@@ -1958,12 +2097,12 @@
       -> Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -1974,9 +2113,9 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "secondary_sample_accession"
-        Parser
+        Parser
   (Maybe SimpleDate
    -> Maybe SimpleDate
    -> Maybe [Char]
@@ -1985,12 +2124,12 @@
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe SimpleDate)
@@ -2002,12 +2141,12 @@
       -> Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -2018,9 +2157,9 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "first_public"
-        Parser
+        Parser
   (Maybe SimpleDate
    -> Maybe [Char]
    -> Maybe [Char]
@@ -2028,12 +2167,12 @@
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe SimpleDate)
@@ -2044,12 +2183,12 @@
       -> Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -2060,21 +2199,21 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "last_updated"
-        Parser
+        Parser
   (Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe [Char])
@@ -2084,12 +2223,12 @@
       -> Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -2100,20 +2239,20 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "instrument_model"
-        Parser
+        Parser
   (Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe [Char])
@@ -2122,12 +2261,12 @@
       -> Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -2138,19 +2277,19 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "library_layout"
-        Parser
+        Parser
   (Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe [Char])
@@ -2158,12 +2297,12 @@
      (Maybe [Char]
       -> Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -2174,30 +2313,30 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "library_source"
-        Parser
+        Parser
   (Maybe [Char]
    -> Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe [Char])
 -> Parser
      (Maybe [Char]
       -> Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -2208,28 +2347,28 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "instrument_platform"
-        Parser
+        Parser
   (Maybe [Char]
    -> Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe [Char])
 -> Parser
      (Maybe [Char]
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -2240,26 +2379,26 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "library_name"
-        Parser
+        Parser
   (Maybe [Char]
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
 -> Parser (Maybe [Char])
 -> Parser
-     (Maybe (JannoList JURI)
-      -> Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+     (Maybe (ListColumn JURI)
+      -> Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
@@ -2270,112 +2409,112 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "library_strategy"
-        Parser
-  (Maybe (JannoList JURI)
-   -> Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+        Parser
+  (Maybe (ListColumn JURI)
+   -> Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
--> Parser (Maybe (JannoList JURI))
+-> Parser (Maybe (ListColumn JURI))
 -> Parser
-     (Maybe (JannoList JURI)
-      -> Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+     (Maybe (ListColumn JURI)
+      -> Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> HashMap ByteString ByteString
--> ByteString -> Parser (Maybe (JannoList JURI))
+-> ByteString -> Parser (Maybe (ListColumn JURI))
 forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "fastq_ftp"
-        Parser
-  (Maybe (JannoList JURI)
-   -> Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+        Parser
+  (Maybe (ListColumn JURI)
+   -> Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
--> Parser (Maybe (JannoList JURI))
+-> Parser (Maybe (ListColumn JURI))
 -> Parser
-     (Maybe (JannoList Integer)
-      -> Maybe (JannoList MD5)
+     (Maybe (ListColumn Integer)
+      -> Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> HashMap ByteString ByteString
--> ByteString -> Parser (Maybe (JannoList JURI))
+-> ByteString -> Parser (Maybe (ListColumn JURI))
 forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "fastq_aspera"
-        Parser
-  (Maybe (JannoList Integer)
-   -> Maybe (JannoList MD5)
+        Parser
+  (Maybe (ListColumn Integer)
+   -> Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
--> Parser (Maybe (JannoList Integer))
+-> Parser (Maybe (ListColumn Integer))
 -> Parser
-     (Maybe (JannoList MD5)
+     (Maybe (ListColumn MD5)
       -> Maybe Integer
-      -> Maybe (JannoList JURI)
+      -> Maybe (ListColumn JURI)
       -> CsvNamedRecord
       -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> HashMap ByteString ByteString
--> ByteString -> Parser (Maybe (JannoList Integer))
+-> ByteString -> Parser (Maybe (ListColumn Integer))
 forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "fastq_bytes"
-        Parser
-  (Maybe (JannoList MD5)
+        Parser
+  (Maybe (ListColumn MD5)
    -> Maybe Integer
-   -> Maybe (JannoList JURI)
+   -> Maybe (ListColumn JURI)
    -> CsvNamedRecord
    -> SeqSourceRow)
--> Parser (Maybe (JannoList MD5))
+-> Parser (Maybe (ListColumn MD5))
 -> Parser
      (Maybe Integer
-      -> Maybe (JannoList JURI) -> CsvNamedRecord -> SeqSourceRow)
+      -> Maybe (ListColumn JURI) -> CsvNamedRecord -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> HashMap ByteString ByteString
--> ByteString -> Parser (Maybe (JannoList MD5))
+-> ByteString -> Parser (Maybe (ListColumn MD5))
 forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "fastq_md5"
-        Parser
+        Parser
   (Maybe Integer
-   -> Maybe (JannoList JURI) -> CsvNamedRecord -> SeqSourceRow)
+   -> Maybe (ListColumn JURI) -> CsvNamedRecord -> SeqSourceRow)
 -> Parser (Maybe Integer)
 -> Parser
-     (Maybe (JannoList JURI) -> CsvNamedRecord -> SeqSourceRow)
+     (Maybe (ListColumn JURI) -> CsvNamedRecord -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> HashMap ByteString ByteString
@@ -2384,24 +2523,24 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "read_count"
-        Parser (Maybe (JannoList JURI) -> CsvNamedRecord -> SeqSourceRow)
--> Parser (Maybe (JannoList JURI))
+        Parser (Maybe (ListColumn JURI) -> CsvNamedRecord -> SeqSourceRow)
+-> Parser (Maybe (ListColumn JURI))
 -> Parser (CsvNamedRecord -> SeqSourceRow)
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> HashMap ByteString ByteString
--> ByteString -> Parser (Maybe (JannoList JURI))
+-> ByteString -> Parser (Maybe (ListColumn JURI))
 forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "submitted_ftp"
-        -- beyond that read everything that is not in the set of defined variables
-        -- as a separate hashmap
-        Parser (CsvNamedRecord -> SeqSourceRow)
+        -- beyond that read everything that is not in the set of defined variables
+        -- as a separate hashmap
+        Parser (CsvNamedRecord -> SeqSourceRow)
 -> Parser CsvNamedRecord -> Parser SeqSourceRow
 forall a b. Parser (a -> b) -> Parser a -> Parser b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
@@ -2410,153 +2549,154 @@
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure (HashMap ByteString ByteString -> CsvNamedRecord
 CsvNamedRecord (HashMap ByteString ByteString
-m HashMap ByteString ByteString
+m HashMap ByteString ByteString
 -> HashMap ByteString () -> HashMap ByteString ByteString
 forall k v w.
 (Eq k, Hashable k) =>
 HashMap k v -> HashMap k w -> HashMap k v
 `HM.difference` HashMap ByteString ()
 seqSourceRefHashMap))
-
-instance Csv.ToNamedRecord SeqSourceRow where
-    toNamedRecord :: SeqSourceRow -> HashMap ByteString ByteString
-toNamedRecord SeqSourceRow
-s = [(ByteString, ByteString)] -> HashMap ByteString ByteString
+
+instance Csv.ToNamedRecord SeqSourceRow where
+    toNamedRecord :: SeqSourceRow -> HashMap ByteString ByteString
+toNamedRecord SeqSourceRow
+s = [(ByteString, ByteString)] -> HashMap ByteString ByteString
 Csv.namedRecord [
-          ByteString
+          ByteString
 "poseidon_IDs"               ByteString -> Maybe JannoStringList -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe JannoStringList
 sPoseidonID SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "udg"                        ByteString -> Maybe SSFUDG -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe SSFUDG
 sUDG SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "library_built"              ByteString -> Maybe SSFLibraryBuilt -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe SSFLibraryBuilt
 sLibraryBuilt SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "sample_accession"           ByteString -> Maybe AccessionIDSample -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe AccessionIDSample
 sSampleAccession SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "study_accession"            ByteString -> Maybe AccessionIDStudy -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe AccessionIDStudy
 sStudyAccession SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "run_accession"              ByteString -> Maybe AccessionIDRun -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe AccessionIDRun
 sRunAccession SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "sample_alias"               ByteString -> Maybe [Char] -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe [Char]
 sSampleAlias SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "secondary_sample_accession" ByteString -> Maybe [Char] -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe [Char]
 sSecondarySampleAccession SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "first_public"               ByteString -> Maybe SimpleDate -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe SimpleDate
 sFirstPublic SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "last_updated"               ByteString -> Maybe SimpleDate -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe SimpleDate
 sLastUpdated SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "instrument_model"           ByteString -> Maybe [Char] -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe [Char]
 sInstrumentModel SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "library_layout"             ByteString -> Maybe [Char] -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe [Char]
 sLibraryLayout SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "library_source"             ByteString -> Maybe [Char] -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe [Char]
 sLibrarySource SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "instrument_platform"        ByteString -> Maybe [Char] -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe [Char]
 sInstrumentPlatform SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "library_name"               ByteString -> Maybe [Char] -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe [Char]
 sLibraryName SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "library_strategy"           ByteString -> Maybe [Char] -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe [Char]
 sLibraryStrategy SeqSourceRow
-s
-        , ByteString
-"fastq_ftp"                  ByteString -> Maybe (JannoList JURI) -> (ByteString, ByteString)
+s
+        , ByteString
+"fastq_ftp"                  ByteString -> Maybe (ListColumn JURI) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= SeqSourceRow -> Maybe (JannoList JURI)
+Csv..= SeqSourceRow -> Maybe (ListColumn JURI)
 sFastqFTP SeqSourceRow
-s
-        , ByteString
-"fastq_aspera"               ByteString -> Maybe (JannoList JURI) -> (ByteString, ByteString)
+s
+        , ByteString
+"fastq_aspera"               ByteString -> Maybe (ListColumn JURI) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= SeqSourceRow -> Maybe (JannoList JURI)
+Csv..= SeqSourceRow -> Maybe (ListColumn JURI)
 sFastqASPERA SeqSourceRow
-s
-        , ByteString
-"fastq_bytes"                ByteString -> Maybe (JannoList Integer) -> (ByteString, ByteString)
+s
+        , ByteString
+"fastq_bytes"                ByteString
+-> Maybe (ListColumn Integer) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= SeqSourceRow -> Maybe (JannoList Integer)
+Csv..= SeqSourceRow -> Maybe (ListColumn Integer)
 sFastqBytes SeqSourceRow
-s
-        , ByteString
-"fastq_md5"                  ByteString -> Maybe (JannoList MD5) -> (ByteString, ByteString)
+s
+        , ByteString
+"fastq_md5"                  ByteString -> Maybe (ListColumn MD5) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= SeqSourceRow -> Maybe (JannoList MD5)
+Csv..= SeqSourceRow -> Maybe (ListColumn MD5)
 sFastqMD5 SeqSourceRow
-s
-        , ByteString
+s
+        , ByteString
 "read_count"                 ByteString -> Maybe Integer -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe Integer
 sReadCount SeqSourceRow
-s
-        , ByteString
-"submitted_ftp"              ByteString -> Maybe (JannoList JURI) -> (ByteString, ByteString)
+s
+        , ByteString
+"submitted_ftp"              ByteString -> Maybe (ListColumn JURI) -> (ByteString, ByteString)
 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
-Csv..= SeqSourceRow -> Maybe (JannoList JURI)
+Csv..= SeqSourceRow -> Maybe (ListColumn JURI)
 sSubmittedFTP SeqSourceRow
-s
-        -- beyond that add what is in the hashmap of additional columns
-        ] HashMap ByteString ByteString
+s
+        -- beyond that add what is in the hashmap of additional columns
+        ] HashMap ByteString ByteString
 -> HashMap ByteString ByteString -> HashMap ByteString ByteString
 forall k v.
 (Eq k, Hashable k) =>
@@ -2567,36 +2707,36 @@
 forall a b. (a -> b) -> a -> b
 $ SeqSourceRow -> CsvNamedRecord
 sAdditionalColumns SeqSourceRow
-s)
-
--- | A function to write one seqSourceFile
-writeSeqSourceFile :: FilePath -> SeqSourceRows -> IO ()
-writeSeqSourceFile :: [Char] -> SeqSourceRows -> IO ()
-writeSeqSourceFile [Char]
-path (SeqSourceRows [SeqSourceRow]
-rows) = do
-    let seqSourceAsBytestring :: ByteString
-seqSourceAsBytestring = EncodeOptions -> Header -> [SeqSourceRow] -> ByteString
+s)
+
+-- | A function to write one seqSourceFile
+writeSeqSourceFile :: FilePath -> SeqSourceRows -> IO ()
+writeSeqSourceFile :: [Char] -> SeqSourceRows -> IO ()
+writeSeqSourceFile [Char]
+path (SeqSourceRows [SeqSourceRow]
+rows) = do
+    let seqSourceAsBytestring :: ByteString
+seqSourceAsBytestring = EncodeOptions -> Header -> [SeqSourceRow] -> ByteString
 forall a.
 ToNamedRecord a =>
 EncodeOptions -> Header -> [a] -> ByteString
 Csv.encodeByNameWith EncodeOptions
 encodingOptions Header
-makeHeaderWithAdditionalColumns [SeqSourceRow]
-rows
-    let seqSourceAsBytestringwithNA :: ByteString
-seqSourceAsBytestringwithNA = ByteString -> ByteString
+makeHeaderWithAdditionalColumns [SeqSourceRow]
+rows
+    let seqSourceAsBytestringwithNA :: ByteString
+seqSourceAsBytestringwithNA = ByteString -> ByteString
 explicitNA ByteString
-seqSourceAsBytestring
-    [Char] -> ByteString -> IO ()
+seqSourceAsBytestring
+    [Char] -> ByteString -> IO ()
 Bch.writeFile [Char]
-path ByteString
-seqSourceAsBytestringwithNA
-    where
-        makeHeaderWithAdditionalColumns :: Csv.Header
-        makeHeaderWithAdditionalColumns :: Header
-makeHeaderWithAdditionalColumns =
-            [ByteString] -> Header
+path ByteString
+seqSourceAsBytestringwithNA
+    where
+        makeHeaderWithAdditionalColumns :: Csv.Header
+        makeHeaderWithAdditionalColumns :: Header
+makeHeaderWithAdditionalColumns =
+            [ByteString] -> Header
 forall a. [a] -> Vector a
 V.fromList ([ByteString] -> Header) -> [ByteString] -> Header
 forall a b. (a -> b) -> a -> b
@@ -2620,23 +2760,23 @@
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . SeqSourceRow -> CsvNamedRecord
 sAdditionalColumns) [SeqSourceRow]
-rows)))
-
--- | A function to read one seqSourceFile
-readSeqSourceFile :: FilePath -> PoseidonIO SeqSourceRows
-readSeqSourceFile :: [Char] -> PoseidonIO SeqSourceRows
-readSeqSourceFile [Char]
-seqSourcePath = do
-    [Char] -> PoseidonIO ()
+rows)))
+
+-- | A function to read one seqSourceFile
+readSeqSourceFile :: FilePath -> PoseidonIO SeqSourceRows
+readSeqSourceFile :: [Char] -> PoseidonIO SeqSourceRows
+readSeqSourceFile [Char]
+seqSourcePath = do
+    [Char] -> PoseidonIO ()
 logDebug ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO ()
 forall a b. (a -> b) -> a -> b
 $ [Char]
 "Reading: " [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ [Char]
-seqSourcePath
-    ByteString
-seqSourceFile <- IO ByteString -> ReaderT Env IO ByteString
+seqSourcePath
+    ByteString
+seqSourceFile <- IO ByteString -> ReaderT Env IO ByteString
 forall a. IO a -> ReaderT Env IO a
 forall (m :: * -> *) a. MonadIO m => IO a -> m a
 liftIO (IO ByteString -> ReaderT Env IO ByteString)
@@ -2644,18 +2784,18 @@
 forall a b. (a -> b) -> a -> b
 $ [Char] -> IO ByteString
 Bch.readFile [Char]
-seqSourcePath
-    let seqSourceFileRows :: [ByteString]
-seqSourceFileRows = ByteString -> [ByteString]
+seqSourcePath
+    let seqSourceFileRows :: [ByteString]
+seqSourceFileRows = ByteString -> [ByteString]
 Bch.lines ByteString
-seqSourceFile
-    Bool -> PoseidonIO () -> PoseidonIO ()
+seqSourceFile
+    Bool -> PoseidonIO () -> PoseidonIO ()
 forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
 when ([ByteString] -> Int
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
 length [ByteString]
-seqSourceFileRows Int -> Int -> Bool
+seqSourceFileRows Int -> Int -> Bool
 forall a. Ord a => a -> a -> Bool
 < Int
 2) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO ()
@@ -2671,9 +2811,9 @@
 forall a b. (a -> b) -> a -> b
 $ [Char] -> [Char] -> PoseidonException
 PoseidonFileConsistencyException [Char]
-seqSourcePath [Char]
+seqSourcePath [Char]
 "File has less than two lines"
-    [Char] -> PoseidonIO ()
+    [Char] -> PoseidonIO ()
 logDebug ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO ()
 forall a b. (a -> b) -> a -> b
 $ Int -> [Char]
@@ -2682,40 +2822,40 @@
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
 length [ByteString]
-seqSourceFileRows Int -> Int -> Int
+seqSourceFileRows Int -> Int -> Int
 forall a. Num a => a -> a -> a
 - Int
 1) [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ [Char]
 " sequencing entities in this file"
-    -- tupel with row number and row bytestring
-    let seqSourceFileRowsWithNumber :: [(Int, ByteString)]
-seqSourceFileRowsWithNumber = [Int] -> [ByteString] -> [(Int, ByteString)]
+    -- tupel with row number and row bytestring
+    let seqSourceFileRowsWithNumber :: [(Int, ByteString)]
+seqSourceFileRowsWithNumber = [Int] -> [ByteString] -> [(Int, ByteString)]
 forall a b. [a] -> [b] -> [(a, b)]
 zip [Int
 1..([ByteString] -> Int
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
 length [ByteString]
-seqSourceFileRows)] [ByteString]
-seqSourceFileRows
-    -- filter out empty lines
-        seqSourceFileRowsWithNumberFiltered :: [(Int, ByteString)]
-seqSourceFileRowsWithNumberFiltered = ((Int, ByteString) -> Bool)
+seqSourceFileRows)] [ByteString]
+seqSourceFileRows
+    -- filter out empty lines
+        seqSourceFileRowsWithNumberFiltered :: [(Int, ByteString)]
+seqSourceFileRowsWithNumberFiltered = ((Int, ByteString) -> Bool)
 -> [(Int, ByteString)] -> [(Int, ByteString)]
 forall a. (a -> Bool) -> [a] -> [a]
 filter (\(Int
-_, ByteString
-y) -> ByteString
-y ByteString -> ByteString -> Bool
+_, ByteString
+y) -> ByteString
+y ByteString -> ByteString -> Bool
 forall a. Eq a => a -> a -> Bool
 /= ByteString
 Bch.empty) [(Int, ByteString)]
-seqSourceFileRowsWithNumber
-    -- create header + individual line combination
-        headerOnlyPotentiallyWithQuotes :: ByteString
-headerOnlyPotentiallyWithQuotes = (Int, ByteString) -> ByteString
+seqSourceFileRowsWithNumber
+    -- create header + individual line combination
+        headerOnlyPotentiallyWithQuotes :: ByteString
+headerOnlyPotentiallyWithQuotes = (Int, ByteString) -> ByteString
 forall a b. (a, b) -> b
 snd ((Int, ByteString) -> ByteString)
 -> (Int, ByteString) -> ByteString
@@ -2723,22 +2863,22 @@
 $ [(Int, ByteString)] -> (Int, ByteString)
 forall a. HasCallStack => [a] -> a
 head [(Int, ByteString)]
-seqSourceFileRowsWithNumberFiltered
-        -- removing the quotes like this might cause issues in edge cases
-        headerOnly :: ByteString
-headerOnly = (Char -> Bool) -> ByteString -> ByteString
+seqSourceFileRowsWithNumberFiltered
+        -- removing the quotes like this might cause issues in edge cases
+        headerOnly :: ByteString
+headerOnly = (Char -> Bool) -> ByteString -> ByteString
 Bch.filter (Char -> Char -> Bool
 forall a. Eq a => a -> a -> Bool
 /= Char
 '"') ByteString
-headerOnlyPotentiallyWithQuotes
-        rowsOnly :: [(Int, ByteString)]
-rowsOnly = [(Int, ByteString)] -> [(Int, ByteString)]
+headerOnlyPotentiallyWithQuotes
+        rowsOnly :: [(Int, ByteString)]
+rowsOnly = [(Int, ByteString)] -> [(Int, ByteString)]
 forall a. HasCallStack => [a] -> [a]
 tail [(Int, ByteString)]
-seqSourceFileRowsWithNumberFiltered
-        seqSourceFileRowsWithHeader :: [(Int, ByteString)]
-seqSourceFileRowsWithHeader = ((Int, ByteString) -> (Int, ByteString))
+seqSourceFileRowsWithNumberFiltered
+        seqSourceFileRowsWithHeader :: [(Int, ByteString)]
+seqSourceFileRowsWithHeader = ((Int, ByteString) -> (Int, ByteString))
 -> [(Int, ByteString)] -> [(Int, ByteString)]
 forall a b. (a -> b) -> [a] -> [b]
 map ((ByteString -> ByteString)
@@ -2747,19 +2887,19 @@
 forall (p :: * -> * -> *) b c a.
 Bifunctor p =>
 (b -> c) -> p a b -> p a c
-second (\ByteString
-x -> ByteString
-headerOnly ByteString -> ByteString -> ByteString
+second (\ByteString
+x -> ByteString
+headerOnly ByteString -> ByteString -> ByteString
 forall a. Semigroup a => a -> a -> a
 <> ByteString
 "\n" ByteString -> ByteString -> ByteString
 forall a. Semigroup a => a -> a -> a
 <> ByteString
-x)) [(Int, ByteString)]
-rowsOnly
-    -- read seqSourceFile by rows
-    [Either PoseidonException SeqSourceRow]
-seqSourceRepresentation <- ((Int, ByteString)
+x)) [(Int, ByteString)]
+rowsOnly
+    -- read seqSourceFile by rows
+    [Either PoseidonException SeqSourceRow]
+seqSourceRepresentation <- ((Int, ByteString)
  -> ReaderT Env IO (Either PoseidonException SeqSourceRow))
 -> [(Int, ByteString)]
 -> ReaderT Env IO [Either PoseidonException SeqSourceRow]
@@ -2771,19 +2911,19 @@
 -> (Int, ByteString)
 -> ReaderT Env IO (Either PoseidonException SeqSourceRow)
 readSeqSourceFileRow [Char]
-seqSourcePath) [(Int, ByteString)]
-seqSourceFileRowsWithHeader
-    -- error case management
-    if Bool -> Bool
+seqSourcePath) [(Int, ByteString)]
+seqSourceFileRowsWithHeader
+    -- error case management
+    if Bool -> Bool
 not ([PoseidonException] -> Bool
 forall a. [a] -> Bool
 forall (t :: * -> *) a. Foldable t => t a -> Bool
 null ([Either PoseidonException SeqSourceRow] -> [PoseidonException]
 forall a b. [Either a b] -> [a]
 lefts [Either PoseidonException SeqSourceRow]
-seqSourceRepresentation))
-    then do
-        (PoseidonException -> PoseidonIO ())
+seqSourceRepresentation))
+    then do
+        (PoseidonException -> PoseidonIO ())
 -> [PoseidonException] -> PoseidonIO ()
 forall (t :: * -> *) (m :: * -> *) a b.
 (Foldable t, Monad m) =>
@@ -2807,8 +2947,8 @@
 $ [Either PoseidonException SeqSourceRow] -> [PoseidonException]
 forall a b. [Either a b] -> [a]
 lefts [Either PoseidonException SeqSourceRow]
-seqSourceRepresentation
-        IO SeqSourceRows -> PoseidonIO SeqSourceRows
+seqSourceRepresentation
+        IO SeqSourceRows -> PoseidonIO SeqSourceRows
 forall a. IO a -> ReaderT Env IO a
 forall (m :: * -> *) a. MonadIO m => IO a -> m a
 liftIO (IO SeqSourceRows -> PoseidonIO SeqSourceRows)
@@ -2821,64 +2961,64 @@
 forall a b. (a -> b) -> a -> b
 $ [Char] -> [Char] -> PoseidonException
 PoseidonFileConsistencyException [Char]
-seqSourcePath [Char]
+seqSourcePath [Char]
 "Broken lines."
-    else do
-        let seqSource :: SeqSourceRows
-seqSource = [SeqSourceRow] -> SeqSourceRows
+    else do
+        let seqSource :: SeqSourceRows
+seqSource = [SeqSourceRow] -> SeqSourceRows
 SeqSourceRows ([SeqSourceRow] -> SeqSourceRows)
 -> [SeqSourceRow] -> SeqSourceRows
 forall a b. (a -> b) -> a -> b
 $ [Either PoseidonException SeqSourceRow] -> [SeqSourceRow]
 forall a b. [Either a b] -> [b]
 rights [Either PoseidonException SeqSourceRow]
-seqSourceRepresentation
-        [Char] -> SeqSourceRows -> PoseidonIO ()
+seqSourceRepresentation
+        [Char] -> SeqSourceRows -> PoseidonIO ()
 warnSeqSourceConsistency [Char]
-seqSourcePath SeqSourceRows
-seqSource
-        SeqSourceRows -> PoseidonIO SeqSourceRows
+seqSourcePath SeqSourceRows
+seqSource
+        SeqSourceRows -> PoseidonIO SeqSourceRows
 forall a. a -> ReaderT Env IO a
 forall (m :: * -> *) a. Monad m => a -> m a
 return SeqSourceRows
-seqSource
-
--- | A function to read one row of a seqSourceFile
-readSeqSourceFileRow :: FilePath -> (Int, Bch.ByteString) -> PoseidonIO (Either PoseidonException SeqSourceRow)
-readSeqSourceFileRow :: [Char]
+seqSource
+
+-- | A function to read one row of a seqSourceFile
+readSeqSourceFileRow :: FilePath -> (Int, Bch.ByteString) -> PoseidonIO (Either PoseidonException SeqSourceRow)
+readSeqSourceFileRow :: [Char]
 -> (Int, ByteString)
 -> ReaderT Env IO (Either PoseidonException SeqSourceRow)
-readSeqSourceFileRow [Char]
-seqSourcePath (Int
-lineNumber, ByteString
-row) = do
-    let decoded :: Either [Char] (Header, Vector SeqSourceRow)
-decoded = DecodeOptions
+readSeqSourceFileRow [Char]
+seqSourcePath (Int
+lineNumber, ByteString
+row) = do
+    let decoded :: Either [Char] (Header, Vector SeqSourceRow)
+decoded = DecodeOptions
 -> ByteString -> Either [Char] (Header, Vector SeqSourceRow)
 forall a.
 FromNamedRecord a =>
 DecodeOptions -> ByteString -> Either [Char] (Header, Vector a)
 Csv.decodeByNameWith DecodeOptions
 decodingOptions ByteString
-row
-        simplifiedDecoded :: Either [Char] SeqSourceRow
-simplifiedDecoded = (\(Header
-_,Vector SeqSourceRow
-rs) -> Vector SeqSourceRow -> SeqSourceRow
+row
+        simplifiedDecoded :: Either [Char] SeqSourceRow
+simplifiedDecoded = (\(Header
+_,Vector SeqSourceRow
+rs) -> Vector SeqSourceRow -> SeqSourceRow
 forall a. Vector a -> a
 V.head Vector SeqSourceRow
-rs) ((Header, Vector SeqSourceRow) -> SeqSourceRow)
+rs) ((Header, Vector SeqSourceRow) -> SeqSourceRow)
 -> Either [Char] (Header, Vector SeqSourceRow)
 -> Either [Char] SeqSourceRow
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> Either [Char] (Header, Vector SeqSourceRow)
-decoded
-    case Either [Char] SeqSourceRow
-simplifiedDecoded of
-        Left [Char]
-e -> do
-            let betterError :: [Char]
-betterError = case Parsec [Char] () CsvParseError
+decoded
+    case Either [Char] SeqSourceRow
+simplifiedDecoded of
+        Left [Char]
+e -> do
+            let betterError :: [Char]
+betterError = case Parsec [Char] () CsvParseError
 -> [Char] -> [Char] -> Either ParseError CsvParseError
 forall s t a.
 Stream s Identity t =>
@@ -2886,16 +3026,16 @@
 P.parse Parsec [Char] () CsvParseError
 parseCsvParseError [Char]
 "" [Char]
-e of
-                    Left ParseError
+e of
+                    Left ParseError
 _       -> ShowS
 removeUselessSuffix [Char]
-e
-                    Right CsvParseError
-result -> CsvParseError -> [Char]
+e
+                    Right CsvParseError
+result -> CsvParseError -> [Char]
 renderCsvParseError CsvParseError
-result
-            Either PoseidonException SeqSourceRow
+result
+            Either PoseidonException SeqSourceRow
 -> ReaderT Env IO (Either PoseidonException SeqSourceRow)
 forall a. a -> ReaderT Env IO a
 forall (m :: * -> *) a. Monad m => a -> m a
@@ -2911,14 +3051,14 @@
 forall a b. (a -> b) -> a -> b
 $ [Char] -> [Char] -> [Char] -> PoseidonException
 PoseidonFileRowException [Char]
-seqSourcePath (Int -> [Char]
+seqSourcePath (Int -> [Char]
 forall a. Show a => a -> [Char]
 show Int
-lineNumber) [Char]
-betterError
-        Right SeqSourceRow
-seqSourceRow -> do
-            Either PoseidonException SeqSourceRow
+lineNumber) [Char]
+betterError
+        Right SeqSourceRow
+seqSourceRow -> do
+            Either PoseidonException SeqSourceRow
 -> ReaderT Env IO (Either PoseidonException SeqSourceRow)
 forall a. a -> ReaderT Env IO a
 forall (m :: * -> *) a. Monad m => a -> m a
@@ -2930,84 +3070,84 @@
 $ SeqSourceRow -> Either PoseidonException SeqSourceRow
 forall a b. b -> Either a b
 Right SeqSourceRow
-seqSourceRow
-
--- Global SSF consistency checks
-
-warnSeqSourceConsistency :: FilePath -> SeqSourceRows -> PoseidonIO ()
-warnSeqSourceConsistency :: [Char] -> SeqSourceRows -> PoseidonIO ()
-warnSeqSourceConsistency [Char]
-seqSourcePath SeqSourceRows
-xs = do
-    Bool -> PoseidonIO () -> PoseidonIO ()
+seqSourceRow
+
+-- Global SSF consistency checks
+
+warnSeqSourceConsistency :: FilePath -> SeqSourceRows -> PoseidonIO ()
+warnSeqSourceConsistency :: [Char] -> SeqSourceRows -> PoseidonIO ()
+warnSeqSourceConsistency [Char]
+seqSourcePath SeqSourceRows
+xs = do
+    Bool -> PoseidonIO () -> PoseidonIO ()
 forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
 unless (SeqSourceRows -> Bool
 checkRunsUnique SeqSourceRows
-xs) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO ()
+xs) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO ()
 forall a b. (a -> b) -> a -> b
 $
-        [Char] -> PoseidonIO ()
+        [Char] -> PoseidonIO ()
 logWarning ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO ()
 forall a b. (a -> b) -> a -> b
 $ [Char]
 "Potential consistency issues in file " [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ [Char]
-seqSourcePath [Char] -> ShowS
+seqSourcePath [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ [Char]
 ": " [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++
-                     [Char]
+                     [Char]
 "The values in the run_accession column are not unique"
-    Bool -> PoseidonIO () -> PoseidonIO ()
+    Bool -> PoseidonIO () -> PoseidonIO ()
 forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
 unless (SeqSourceRows -> Bool
 checkAtLeastOnePoseidonID SeqSourceRows
-xs) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO ()
+xs) (PoseidonIO () -> PoseidonIO ()) -> PoseidonIO () -> PoseidonIO ()
 forall a b. (a -> b) -> a -> b
 $
-        [Char] -> PoseidonIO ()
+        [Char] -> PoseidonIO ()
 logWarning ([Char] -> PoseidonIO ()) -> [Char] -> PoseidonIO ()
 forall a b. (a -> b) -> a -> b
 $ [Char]
 "Potential consistency issues in file " [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ [Char]
-seqSourcePath [Char] -> ShowS
+seqSourcePath [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++ [Char]
 ": " [Char] -> ShowS
 forall a. [a] -> [a] -> [a]
 ++
-                     [Char]
+                     [Char]
 "The poseidon_IDs column is completely empty. Package and .ssf file are not linked"
-
-checkRunsUnique :: SeqSourceRows -> Bool
-checkRunsUnique :: SeqSourceRows -> Bool
-checkRunsUnique (SeqSourceRows [SeqSourceRow]
-rows) =
-    let justRunAccessions :: [AccessionIDRun]
-justRunAccessions = (SeqSourceRow -> Maybe AccessionIDRun)
+
+checkRunsUnique :: SeqSourceRows -> Bool
+checkRunsUnique :: SeqSourceRows -> Bool
+checkRunsUnique (SeqSourceRows [SeqSourceRow]
+rows) =
+    let justRunAccessions :: [AccessionIDRun]
+justRunAccessions = (SeqSourceRow -> Maybe AccessionIDRun)
 -> [SeqSourceRow] -> [AccessionIDRun]
 forall a b. (a -> Maybe b) -> [a] -> [b]
 mapMaybe SeqSourceRow -> Maybe AccessionIDRun
 sRunAccession [SeqSourceRow]
-rows
-    in [AccessionIDRun]
-justRunAccessions [AccessionIDRun] -> [AccessionIDRun] -> Bool
+rows
+    in [AccessionIDRun]
+justRunAccessions [AccessionIDRun] -> [AccessionIDRun] -> Bool
 forall a. Eq a => a -> a -> Bool
 == [AccessionIDRun] -> [AccessionIDRun]
 forall a. Eq a => [a] -> [a]
 nub [AccessionIDRun]
-justRunAccessions
-
-checkAtLeastOnePoseidonID :: SeqSourceRows -> Bool
-checkAtLeastOnePoseidonID :: SeqSourceRows -> Bool
-checkAtLeastOnePoseidonID (SeqSourceRows [SeqSourceRow]
-rows) =
-    (SeqSourceRow -> Bool) -> [SeqSourceRow] -> Bool
+justRunAccessions
+
+checkAtLeastOnePoseidonID :: SeqSourceRows -> Bool
+checkAtLeastOnePoseidonID :: SeqSourceRows -> Bool
+checkAtLeastOnePoseidonID (SeqSourceRows [SeqSourceRow]
+rows) =
+    (SeqSourceRow -> Bool) -> [SeqSourceRow] -> Bool
 forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
 any (Maybe JannoStringList -> Bool
 forall a. Maybe a -> Bool
@@ -3016,5 +3156,5 @@
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . SeqSourceRow -> Maybe JannoStringList
 sPoseidonID) [SeqSourceRow]
-rows
-
\ No newline at end of file +
rows +
\ No newline at end of file diff --git a/src/Poseidon.ServerClient.html b/src/Poseidon.ServerClient.html index cd02fd80..d22aaae0 100644 --- a/src/Poseidon.ServerClient.html +++ b/src/Poseidon.ServerClient.html @@ -17,127 +17,125 @@
IndividualInfo (..), IndividualInfoCollection, PacNameAndVersion (..)) -import Poseidon.Janno (JannoRows) -import Poseidon.Utils (PoseidonException (..), PoseidonIO, - logError, logInfo) - -import Control.Exception (catch, throwIO) -import Control.Monad (forM_, unless) -import Control.Monad.IO.Class (liftIO) -import Data.Aeson (FromJSON, ToJSON (..), Value (String), - eitherDecode', object, parseJSON, - toJSON, withObject, (.:), (.=)) -import Data.Time (Day) -import Data.Version (Version, showVersion) -import GHC.Generics (Generic) -import Network.HTTP.Conduit (simpleHttp) +import Poseidon.Utils (PoseidonException (..), PoseidonIO, + logError, logInfo) + +import Control.Exception (catch, throwIO) +import Control.Monad (forM_, unless) +import Control.Monad.IO.Class (liftIO) +import Data.Aeson (FromJSON, ToJSON (..), Value (String), + eitherDecode', object, parseJSON, + toJSON, withObject, (.:), (.=)) +import Data.Time (Day) +import Data.Version (Version, showVersion) +import Network.HTTP.Conduit (simpleHttp) + +-- Client Server Communication types and functions --- Client Server Communication types and functions - -qDefault :: Maybe String -> String -qDefault :: Maybe [Char] -> [Char] -qDefault Maybe [Char] -archive = [Char] +qDefault :: Maybe String -> String +qDefault :: Maybe [Char] -> [Char] +qDefault Maybe [Char] +archive = [Char] qVersion [Char] -> [Char] -> [Char] +&+ Maybe [Char] -> [Char] qArchive Maybe [Char] -archive - -(+&+) :: String -> String -> String -+&+ :: [Char] -> [Char] -> [Char] -(+&+) [Char] -a (Char -'?':[Char] -b) = [Char] -a [Char] -> [Char] -> [Char] +archive + +(+&+) :: String -> String -> String ++&+ :: [Char] -> [Char] -> [Char] +(+&+) [Char] +a (Char +'?':[Char] +b) = [Char] +a [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "&" [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -b -(+&+) [Char] -a [Char] -b = [Char] -a [Char] -> [Char] -> [Char] +b +(+&+) [Char] +a [Char] +b = [Char] +a [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] "&" [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -b - -qPacVersion :: Maybe Version -> String -qPacVersion :: Maybe Version -> [Char] +b + +qPacVersion :: Maybe Version -> String +qPacVersion :: Maybe Version -> [Char] qPacVersion Maybe Version Nothing = [Char] "" -qPacVersion (Just Version -v) = [Char] +qPacVersion (Just Version +v) = [Char] "?package_version=" [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ Version -> [Char] showVersion Version -v - -qVersion :: String -qVersion :: [Char] +v + +qVersion :: String +qVersion :: [Char] qVersion = [Char] "?client_version=" [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ Version -> [Char] showVersion Version version - -qArchive :: Maybe String -> String -qArchive :: Maybe [Char] -> [Char] + +qArchive :: Maybe String -> String +qArchive :: Maybe [Char] -> [Char] qArchive Maybe [Char] Nothing = [Char] "" -qArchive (Just [Char] -name) = [Char] +qArchive (Just [Char] +name) = [Char] "?archive=" [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -name - -data ArchiveEndpoint = ArchiveEndpoint { - ArchiveEndpoint -> [Char] +name + +data ArchiveEndpoint = ArchiveEndpoint { + ArchiveEndpoint -> [Char] _aeServerURL :: String - , ArchiveEndpoint -> Maybe [Char] + , ArchiveEndpoint -> Maybe [Char] _aeArchiveName :: Maybe String -} - -data ServerApiReturnType = ServerApiReturnType { - ServerApiReturnType -> [[Char]] +} + +data ServerApiReturnType = ServerApiReturnType { + ServerApiReturnType -> [[Char]] _apiMessages :: [String], - ServerApiReturnType -> Maybe ApiReturnData + ServerApiReturnType -> Maybe ApiReturnData _apiResponse :: Maybe ApiReturnData -} - -instance ToJSON ServerApiReturnType where - toJSON :: ServerApiReturnType -> Value -toJSON (ServerApiReturnType [[Char]] -messages Maybe ApiReturnData -response) = - [Pair] -> Value +} + +instance ToJSON ServerApiReturnType where + toJSON :: ServerApiReturnType -> Value +toJSON (ServerApiReturnType [[Char]] +messages Maybe ApiReturnData +response) = + [Pair] -> Value object [ - Key + Key "serverMessages" Key -> [[Char]] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [[Char]] -messages, - Key +messages, + Key "serverResponse" Key -> Maybe ApiReturnData -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Maybe ApiReturnData -response - ] - -instance FromJSON ServerApiReturnType where - parseJSON :: Value -> Parser ServerApiReturnType +response + ] + +instance FromJSON ServerApiReturnType where + parseJSON :: Value -> Parser ServerApiReturnType parseJSON = [Char] -> (Object -> Parser ServerApiReturnType) -> Value @@ -150,121 +148,91 @@ -> Value -> Parser ServerApiReturnType forall a b. (a -> b) -> a -> b -$ \Object -v -> [[Char]] -> Maybe ApiReturnData -> ServerApiReturnType +$ \Object +v -> [[Char]] -> Maybe ApiReturnData -> ServerApiReturnType ServerApiReturnType - ([[Char]] -> Maybe ApiReturnData -> ServerApiReturnType) + ([[Char]] -> Maybe ApiReturnData -> ServerApiReturnType) -> Parser [[Char]] -> Parser (Maybe ApiReturnData -> ServerApiReturnType) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v Object -> Key -> Parser [[Char]] +v Object -> Key -> Parser [[Char]] forall a. FromJSON a => Object -> Key -> Parser a .: Key "serverMessages" - Parser (Maybe ApiReturnData -> ServerApiReturnType) + Parser (Maybe ApiReturnData -> ServerApiReturnType) -> Parser (Maybe ApiReturnData) -> Parser ServerApiReturnType forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe ApiReturnData) +v Object -> Key -> Parser (Maybe ApiReturnData) forall a. FromJSON a => Object -> Key -> Parser a .: Key "serverResponse" - -data ApiReturnData = ApiReturnPackageInfo [PackageInfo] - | ApiReturnGroupInfo [GroupInfo] - | ApiReturnExtIndividualInfo [ExtendedIndividualInfo] - | ApiReturnJanno [(String, JannoRows)] deriving ((forall x. ApiReturnData -> Rep ApiReturnData x) --> (forall x. Rep ApiReturnData x -> ApiReturnData) --> Generic ApiReturnData -forall x. Rep ApiReturnData x -> ApiReturnData -forall x. ApiReturnData -> Rep ApiReturnData x -forall a. -(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a -$cfrom :: forall x. ApiReturnData -> Rep ApiReturnData x -from :: forall x. ApiReturnData -> Rep ApiReturnData x -$cto :: forall x. Rep ApiReturnData x -> ApiReturnData -to :: forall x. Rep ApiReturnData x -> ApiReturnData -Generic) - -instance ToJSON ApiReturnData where - toJSON :: ApiReturnData -> Value -toJSON (ApiReturnPackageInfo [PackageInfo] -pacInfo) = - [Pair] -> Value + +data ApiReturnData = ApiReturnPackageInfo [PackageInfo] + | ApiReturnGroupInfo [GroupInfo] + | ApiReturnExtIndividualInfo [ExtendedIndividualInfo] + +instance ToJSON ApiReturnData where + toJSON :: ApiReturnData -> Value +toJSON (ApiReturnPackageInfo [PackageInfo] +pacInfo) = + [Pair] -> Value object [ - Key + Key "constructor" Key -> Value -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Text -> Value String Text "ApiReturnPackageInfo", - Key + Key "packageInfo" Key -> [PackageInfo] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [PackageInfo] -pacInfo - ] - toJSON (ApiReturnGroupInfo [GroupInfo] -groupInfo) = - [Pair] -> Value +pacInfo + ] + toJSON (ApiReturnGroupInfo [GroupInfo] +groupInfo) = + [Pair] -> Value object [ - Key + Key "constructor" Key -> Value -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Text -> Value String Text "ApiReturnGroupInfo", - Key + Key "groupInfo" Key -> [GroupInfo] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [GroupInfo] -groupInfo - ] - toJSON (ApiReturnExtIndividualInfo [ExtendedIndividualInfo] -indInfo) = - [Pair] -> Value +groupInfo + ] + toJSON (ApiReturnExtIndividualInfo [ExtendedIndividualInfo] +indInfo) = + [Pair] -> Value object [ - Key + Key "constructor" Key -> Value -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Text -> Value String Text "ApiReturnExtIndividualInfo", - Key + Key "extIndInfo" Key -> [ExtendedIndividualInfo] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv -forall v. ToJSON v => Key -> v -> Pair -.= [ExtendedIndividualInfo] -indInfo - ] - toJSON (ApiReturnJanno [([Char], JannoRows)] -janno) = - [Pair] -> Value -object [ - Key -"constructor" Key -> Value -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair -.= Text -> Value -String Text -"ApiReturnJanno", - Key -"janno" Key -> [([Char], JannoRows)] -> Pair forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv -forall v. ToJSON v => Key -> v -> Pair -.= [([Char], JannoRows)] -janno - ] - -instance FromJSON ApiReturnData where - parseJSON :: Value -> Parser ApiReturnData +.= [ExtendedIndividualInfo] +indInfo + ] + +instance FromJSON ApiReturnData where + parseJSON :: Value -> Parser ApiReturnData parseJSON = [Char] -> (Object -> Parser ApiReturnData) -> Value @@ -276,57 +244,47 @@ -> Value -> Parser ApiReturnData forall a b. (a -> b) -> a -> b -$ \Object -v -> do - [Char] -constr <- Object -v Object -> Key -> Parser [Char] +$ \Object +v -> do + [Char] +constr <- Object +v Object -> Key -> Parser [Char] forall a. FromJSON a => Object -> Key -> Parser a .: Key "constructor" - case [Char] -constr of - [Char] + case [Char] +constr of + [Char] "ApiReturnPackageInfo" -> [PackageInfo] -> ApiReturnData ApiReturnPackageInfo ([PackageInfo] -> ApiReturnData) -> Parser [PackageInfo] -> Parser ApiReturnData forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v Object -> Key -> Parser [PackageInfo] +v Object -> Key -> Parser [PackageInfo] forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageInfo" - [Char] + [Char] "ApiReturnGroupInfo" -> [GroupInfo] -> ApiReturnData ApiReturnGroupInfo ([GroupInfo] -> ApiReturnData) -> Parser [GroupInfo] -> Parser ApiReturnData forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v Object -> Key -> Parser [GroupInfo] +v Object -> Key -> Parser [GroupInfo] forall a. FromJSON a => Object -> Key -> Parser a .: Key "groupInfo" - [Char] + [Char] "ApiReturnExtIndividualInfo" -> [ExtendedIndividualInfo] -> ApiReturnData ApiReturnExtIndividualInfo ([ExtendedIndividualInfo] -> ApiReturnData) -> Parser [ExtendedIndividualInfo] -> Parser ApiReturnData forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v Object -> Key -> Parser [ExtendedIndividualInfo] +v Object -> Key -> Parser [ExtendedIndividualInfo] forall a. FromJSON a => Object -> Key -> Parser a .: Key "extIndInfo" - [Char] -"ApiReturnJanno" -> [([Char], JannoRows)] -> ApiReturnData -ApiReturnJanno ([([Char], JannoRows)] -> ApiReturnData) --> Parser [([Char], JannoRows)] -> Parser ApiReturnData -forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -<$> Object -v Object -> Key -> Parser [([Char], JannoRows)] -forall a. FromJSON a => Object -> Key -> Parser a -.: Key -"janno" - [Char] + [Char] _ -> [Char] -> Parser ApiReturnData forall a. HasCallStack => [Char] -> a error ([Char] -> Parser ApiReturnData) -> [Char] -> Parser ApiReturnData @@ -335,23 +293,23 @@ "cannot parse ApiReturnType with constructor " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -constr - - -data PackageInfo = PackageInfo - { PackageInfo -> PacNameAndVersion +constr + + +data PackageInfo = PackageInfo + { PackageInfo -> PacNameAndVersion pPac :: PacNameAndVersion - , PackageInfo -> Bool + , PackageInfo -> Bool pIsLatest :: Bool - , PackageInfo -> Version + , PackageInfo -> Version pPosVersion :: Version - , PackageInfo -> Maybe [Char] + , PackageInfo -> Maybe [Char] pDescription :: Maybe String - , PackageInfo -> Maybe Day + , PackageInfo -> Maybe Day pLastModified :: Maybe Day - , PackageInfo -> Int + , PackageInfo -> Int pNrIndividuals :: Int - } deriving (PackageInfo -> PackageInfo -> Bool + } deriving (PackageInfo -> PackageInfo -> Bool (PackageInfo -> PackageInfo -> Bool) -> (PackageInfo -> PackageInfo -> Bool) -> Eq PackageInfo forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -359,7 +317,7 @@ == :: PackageInfo -> PackageInfo -> Bool $c/= :: PackageInfo -> PackageInfo -> Bool /= :: PackageInfo -> PackageInfo -> Bool -Eq, Eq PackageInfo +Eq, Eq PackageInfo Eq PackageInfo -> (PackageInfo -> PackageInfo -> Ordering) -> (PackageInfo -> PackageInfo -> Bool) @@ -397,18 +355,18 @@ $cmin :: PackageInfo -> PackageInfo -> PackageInfo min :: PackageInfo -> PackageInfo -> PackageInfo Ord) - -instance HasNameAndVersion PackageInfo where - getPacName :: PackageInfo -> [Char] -getPacName = PacNameAndVersion -> [Char] + +instance HasNameAndVersion PackageInfo where + getPacName :: PackageInfo -> [Char] +getPacName = PacNameAndVersion -> [Char] forall a. HasNameAndVersion a => a -> [Char] getPacName (PacNameAndVersion -> [Char]) -> (PackageInfo -> PacNameAndVersion) -> PackageInfo -> [Char] forall b c a. (b -> c) -> (a -> b) -> a -> c . PackageInfo -> PacNameAndVersion pPac - getPacVersion :: PackageInfo -> Maybe Version -getPacVersion = PacNameAndVersion -> Maybe Version + getPacVersion :: PackageInfo -> Maybe Version +getPacVersion = PacNameAndVersion -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion (PacNameAndVersion -> Maybe Version) -> (PackageInfo -> PacNameAndVersion) @@ -417,65 +375,65 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . PackageInfo -> PacNameAndVersion pPac - -instance ToJSON PackageInfo where - toJSON :: PackageInfo -> Value -toJSON (PackageInfo (PacNameAndVersion [Char] -n Maybe Version -v) Bool -isLatest Version -posVersion Maybe [Char] -description Maybe Day -lastModified Int -nrIndividuals) = - [Pair] -> Value + +instance ToJSON PackageInfo where + toJSON :: PackageInfo -> Value +toJSON (PackageInfo (PacNameAndVersion [Char] +n Maybe Version +v) Bool +isLatest Version +posVersion Maybe [Char] +description Maybe Day +lastModified Int +nrIndividuals) = + [Pair] -> Value object [ - Key + Key "packageTitle" Key -> [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [Char] -n, - Key +n, + Key "packageVersion" Key -> Maybe Version -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Maybe Version -v, - Key +v, + Key "isLatest" Key -> Bool -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Bool -isLatest, - Key +isLatest, + Key "poseidonVersion" Key -> Version -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Version -posVersion, - Key +posVersion, + Key "description" Key -> Maybe [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Maybe [Char] -description, - Key +description, + Key "lastModified" Key -> Maybe Day -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Maybe Day -lastModified, - Key +lastModified, + Key "nrIndividuals" Key -> Int -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Int -nrIndividuals - ] - -instance FromJSON PackageInfo where - parseJSON :: Value -> Parser PackageInfo +nrIndividuals + ] + +instance FromJSON PackageInfo where + parseJSON :: Value -> Parser PackageInfo parseJSON = [Char] -> (Object -> Parser PackageInfo) -> Value -> Parser PackageInfo forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a @@ -483,8 +441,8 @@ "PackageInfo" ((Object -> Parser PackageInfo) -> Value -> Parser PackageInfo) -> (Object -> Parser PackageInfo) -> Value -> Parser PackageInfo forall a b. (a -> b) -> a -> b -$ \Object -v -> PacNameAndVersion +$ \Object +v -> PacNameAndVersion -> Bool -> Version -> Maybe [Char] @@ -492,7 +450,7 @@ -> Int -> PackageInfo PackageInfo - (PacNameAndVersion + (PacNameAndVersion -> Bool -> Version -> Maybe [Char] @@ -509,7 +467,7 @@ -> Parser [Char] -> Parser (Maybe Version -> PacNameAndVersion) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Object -v Object -> Key -> Parser [Char] +v Object -> Key -> Parser [Char] forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageTitle") Parser (Maybe Version -> PacNameAndVersion) @@ -517,11 +475,11 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (Object -v Object -> Key -> Parser (Maybe Version) +v Object -> Key -> Parser (Maybe Version) forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageVersion")) - Parser + Parser (Bool -> Version -> Maybe [Char] -> Maybe Day -> Int -> PackageInfo) -> Parser Bool @@ -530,58 +488,58 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser Bool +v Object -> Key -> Parser Bool forall a. FromJSON a => Object -> Key -> Parser a .: Key "isLatest" - Parser (Version -> Maybe [Char] -> Maybe Day -> Int -> PackageInfo) + Parser (Version -> Maybe [Char] -> Maybe Day -> Int -> PackageInfo) -> Parser Version -> Parser (Maybe [Char] -> Maybe Day -> Int -> PackageInfo) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser Version +v Object -> Key -> Parser Version forall a. FromJSON a => Object -> Key -> Parser a .: Key "poseidonVersion" - Parser (Maybe [Char] -> Maybe Day -> Int -> PackageInfo) + Parser (Maybe [Char] -> Maybe Day -> Int -> PackageInfo) -> Parser (Maybe [Char]) -> Parser (Maybe Day -> Int -> PackageInfo) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe [Char]) +v Object -> Key -> Parser (Maybe [Char]) forall a. FromJSON a => Object -> Key -> Parser a .: Key "description" - Parser (Maybe Day -> Int -> PackageInfo) + Parser (Maybe Day -> Int -> PackageInfo) -> Parser (Maybe Day) -> Parser (Int -> PackageInfo) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser (Maybe Day) +v Object -> Key -> Parser (Maybe Day) forall a. FromJSON a => Object -> Key -> Parser a .: Key "lastModified" - Parser (Int -> PackageInfo) -> Parser Int -> Parser PackageInfo + Parser (Int -> PackageInfo) -> Parser Int -> Parser PackageInfo forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser Int +v Object -> Key -> Parser Int forall a. FromJSON a => Object -> Key -> Parser a .: Key "nrIndividuals" - -data GroupInfo = GroupInfo - { GroupInfo -> [Char] + +data GroupInfo = GroupInfo + { GroupInfo -> [Char] gName :: String - , GroupInfo -> PacNameAndVersion + , GroupInfo -> PacNameAndVersion gPackage :: PacNameAndVersion - , GroupInfo -> Bool + , GroupInfo -> Bool gIsLatest :: Bool - , GroupInfo -> Int + , GroupInfo -> Int gNrIndividuals :: Int - } deriving (GroupInfo -> GroupInfo -> Bool + } deriving (GroupInfo -> GroupInfo -> Bool (GroupInfo -> GroupInfo -> Bool) -> (GroupInfo -> GroupInfo -> Bool) -> Eq GroupInfo forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -590,105 +548,105 @@ $c/= :: GroupInfo -> GroupInfo -> Bool /= :: GroupInfo -> GroupInfo -> Bool Eq) - -instance ToJSON GroupInfo where - toJSON :: GroupInfo -> Value -toJSON (GroupInfo [Char] -name (PacNameAndVersion [Char] -pacTitle Maybe Version -pacVersion) Bool -isLatest Int -nrIndividuals) = - [Pair] -> Value + +instance ToJSON GroupInfo where + toJSON :: GroupInfo -> Value +toJSON (GroupInfo [Char] +name (PacNameAndVersion [Char] +pacTitle Maybe Version +pacVersion) Bool +isLatest Int +nrIndividuals) = + [Pair] -> Value object [ - Key + Key "groupName" Key -> [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [Char] -name, - Key +name, + Key "packageTitle" Key -> [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [Char] -pacTitle, - Key +pacTitle, + Key "packageVersion" Key -> Maybe Version -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Maybe Version -pacVersion, - Key +pacVersion, + Key "isLatest" Key -> Bool -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Bool -isLatest, - Key +isLatest, + Key "nrIndividuals" Key -> Int -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Int -nrIndividuals - ] - -instance FromJSON GroupInfo where - parseJSON :: Value -> Parser GroupInfo +nrIndividuals + ] + +instance FromJSON GroupInfo where + parseJSON :: Value -> Parser GroupInfo parseJSON = [Char] -> (Object -> Parser GroupInfo) -> Value -> Parser GroupInfo forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a withObject [Char] "GroupInfo" ((Object -> Parser GroupInfo) -> Value -> Parser GroupInfo) -> (Object -> Parser GroupInfo) -> Value -> Parser GroupInfo forall a b. (a -> b) -> a -> b -$ \Object -v -> do - [Char] -groupName <- Object -v Object -> Key -> Parser [Char] +$ \Object +v -> do + [Char] +groupName <- Object +v Object -> Key -> Parser [Char] forall a. FromJSON a => Object -> Key -> Parser a .: Key "groupName" - [Char] -packageTitle <- Object -v Object -> Key -> Parser [Char] + [Char] +packageTitle <- Object +v Object -> Key -> Parser [Char] forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageTitle" - Maybe Version -packageVersion <- Object -v Object -> Key -> Parser (Maybe Version) + Maybe Version +packageVersion <- Object +v Object -> Key -> Parser (Maybe Version) forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageVersion" - Bool -isLatest <- Object -v Object -> Key -> Parser Bool + Bool +isLatest <- Object +v Object -> Key -> Parser Bool forall a. FromJSON a => Object -> Key -> Parser a .: Key "isLatest" - Int -nrIndividuals <- Object -v Object -> Key -> Parser Int + Int +nrIndividuals <- Object +v Object -> Key -> Parser Int forall a. FromJSON a => Object -> Key -> Parser a .: Key "nrIndividuals" - GroupInfo -> Parser GroupInfo + GroupInfo -> Parser GroupInfo forall a. a -> Parser a forall (m :: * -> *) a. Monad m => a -> m a return (GroupInfo -> Parser GroupInfo) -> GroupInfo -> Parser GroupInfo forall a b. (a -> b) -> a -> b $ [Char] -> PacNameAndVersion -> Bool -> Int -> GroupInfo GroupInfo [Char] -groupName ([Char] -> Maybe Version -> PacNameAndVersion +groupName ([Char] -> Maybe Version -> PacNameAndVersion PacNameAndVersion [Char] -packageTitle Maybe Version -packageVersion) Bool -isLatest Int -nrIndividuals - -instance HasNameAndVersion GroupInfo where - getPacName :: GroupInfo -> [Char] +packageTitle Maybe Version +packageVersion) Bool +isLatest Int +nrIndividuals + +instance HasNameAndVersion GroupInfo where + getPacName :: GroupInfo -> [Char] getPacName = PacNameAndVersion -> [Char] forall a. HasNameAndVersion a => a -> [Char] getPacName (PacNameAndVersion -> [Char]) @@ -696,7 +654,7 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . GroupInfo -> PacNameAndVersion gPackage - getPacVersion :: GroupInfo -> Maybe Version + getPacVersion :: GroupInfo -> Maybe Version getPacVersion = PacNameAndVersion -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion (PacNameAndVersion -> Maybe Version) @@ -704,20 +662,20 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . GroupInfo -> PacNameAndVersion gPackage - -data ExtendedIndividualInfo = ExtendedIndividualInfo - { - ExtendedIndividualInfo -> [Char] + +data ExtendedIndividualInfo = ExtendedIndividualInfo + { + ExtendedIndividualInfo -> [Char] extIndInfoName :: String - , ExtendedIndividualInfo -> [[Char]] + , ExtendedIndividualInfo -> [[Char]] extIndInfoGroups :: [String] - , ExtendedIndividualInfo -> PacNameAndVersion + , ExtendedIndividualInfo -> PacNameAndVersion extIndInfoPac :: PacNameAndVersion - , ExtendedIndividualInfo -> Bool + , ExtendedIndividualInfo -> Bool extIndInfoIsLatest :: Bool - , ExtendedIndividualInfo -> [([Char], Maybe [Char])] + , ExtendedIndividualInfo -> [([Char], Maybe [Char])] extIndInfoAddCols :: [(String, Maybe String)] - } deriving (ExtendedIndividualInfo -> ExtendedIndividualInfo -> Bool + } deriving (ExtendedIndividualInfo -> ExtendedIndividualInfo -> Bool (ExtendedIndividualInfo -> ExtendedIndividualInfo -> Bool) -> (ExtendedIndividualInfo -> ExtendedIndividualInfo -> Bool) -> Eq ExtendedIndividualInfo @@ -727,9 +685,9 @@ $c/= :: ExtendedIndividualInfo -> ExtendedIndividualInfo -> Bool /= :: ExtendedIndividualInfo -> ExtendedIndividualInfo -> Bool Eq) - -instance HasNameAndVersion ExtendedIndividualInfo where - getPacName :: ExtendedIndividualInfo -> [Char] + +instance HasNameAndVersion ExtendedIndividualInfo where + getPacName :: ExtendedIndividualInfo -> [Char] getPacName = PacNameAndVersion -> [Char] forall a. HasNameAndVersion a => a -> [Char] getPacName (PacNameAndVersion -> [Char]) @@ -739,7 +697,7 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . ExtendedIndividualInfo -> PacNameAndVersion extIndInfoPac - getPacVersion :: ExtendedIndividualInfo -> Maybe Version + getPacVersion :: ExtendedIndividualInfo -> Maybe Version getPacVersion = PacNameAndVersion -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion (PacNameAndVersion -> Maybe Version) @@ -749,31 +707,31 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . ExtendedIndividualInfo -> PacNameAndVersion extIndInfoPac - -instance ToJSON ExtendedIndividualInfo where - toJSON :: ExtendedIndividualInfo -> Value -toJSON ExtendedIndividualInfo -e = - [Pair] -> Value + +instance ToJSON ExtendedIndividualInfo where + toJSON :: ExtendedIndividualInfo -> Value +toJSON ExtendedIndividualInfo +e = + [Pair] -> Value object [ - Key + Key "poseidonID" Key -> [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ExtendedIndividualInfo -> [Char] extIndInfoName ExtendedIndividualInfo -e, - Key +e, + Key "groupNames" Key -> [[Char]] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ExtendedIndividualInfo -> [[Char]] extIndInfoGroups ExtendedIndividualInfo -e, - Key +e, + Key "packageTitle" Key -> [Char] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= (PacNameAndVersion -> [Char] forall a. HasNameAndVersion a => a -> [Char] getPacName (PacNameAndVersion -> [Char]) @@ -786,11 +744,11 @@ -> ExtendedIndividualInfo -> [Char] forall a b. (a -> b) -> a -> b $ ExtendedIndividualInfo -e), - Key +e), + Key "packageVersion" Key -> Maybe Version -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= (PacNameAndVersion -> Maybe Version forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion (PacNameAndVersion -> Maybe Version) @@ -803,24 +761,24 @@ -> ExtendedIndividualInfo -> Maybe Version forall a b. (a -> b) -> a -> b $ ExtendedIndividualInfo -e), - Key +e), + Key "isLatest" Key -> Bool -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ExtendedIndividualInfo -> Bool extIndInfoIsLatest ExtendedIndividualInfo -e, - Key +e, + Key "additionalJannoColumns" Key -> [([Char], Maybe [Char])] -> Pair -forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv forall v. ToJSON v => Key -> v -> Pair +forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ExtendedIndividualInfo -> [([Char], Maybe [Char])] extIndInfoAddCols ExtendedIndividualInfo -e] - -instance FromJSON ExtendedIndividualInfo where - parseJSON :: Value -> Parser ExtendedIndividualInfo +e] + +instance FromJSON ExtendedIndividualInfo where + parseJSON :: Value -> Parser ExtendedIndividualInfo parseJSON = [Char] -> (Object -> Parser ExtendedIndividualInfo) -> Value @@ -833,15 +791,15 @@ -> Value -> Parser ExtendedIndividualInfo forall a b. (a -> b) -> a -> b -$ \Object -v -> [Char] +$ \Object +v -> [Char] -> [[Char]] -> PacNameAndVersion -> Bool -> [([Char], Maybe [Char])] -> ExtendedIndividualInfo ExtendedIndividualInfo - ([Char] + ([Char] -> [[Char]] -> PacNameAndVersion -> Bool @@ -856,11 +814,11 @@ -> ExtendedIndividualInfo) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v Object -> Key -> Parser [Char] +v Object -> Key -> Parser [Char] forall a. FromJSON a => Object -> Key -> Parser a .: Key "poseidonID" - Parser + Parser ([[Char]] -> PacNameAndVersion -> Bool @@ -873,11 +831,11 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser [[Char]] +v Object -> Key -> Parser [[Char]] forall a. FromJSON a => Object -> Key -> Parser a .: Key "groupNames" - Parser + Parser (PacNameAndVersion -> Bool -> [([Char], Maybe [Char])] -> ExtendedIndividualInfo) -> Parser PacNameAndVersion @@ -890,7 +848,7 @@ -> Parser [Char] -> Parser (Maybe Version -> PacNameAndVersion) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Object -v Object -> Key -> Parser [Char] +v Object -> Key -> Parser [Char] forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageTitle") Parser (Maybe Version -> PacNameAndVersion) @@ -898,37 +856,37 @@ forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (Object -v Object -> Key -> Parser (Maybe Version) +v Object -> Key -> Parser (Maybe Version) forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageVersion")) - Parser (Bool -> [([Char], Maybe [Char])] -> ExtendedIndividualInfo) + Parser (Bool -> [([Char], Maybe [Char])] -> ExtendedIndividualInfo) -> Parser Bool -> Parser ([([Char], Maybe [Char])] -> ExtendedIndividualInfo) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser Bool +v Object -> Key -> Parser Bool forall a. FromJSON a => Object -> Key -> Parser a .: Key "isLatest" - Parser ([([Char], Maybe [Char])] -> ExtendedIndividualInfo) + Parser ([([Char], Maybe [Char])] -> ExtendedIndividualInfo) -> Parser [([Char], Maybe [Char])] -> Parser ExtendedIndividualInfo forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v Object -> Key -> Parser [([Char], Maybe [Char])] +v Object -> Key -> Parser [([Char], Maybe [Char])] forall a. FromJSON a => Object -> Key -> Parser a .: Key "additionalJannoColumns" - -processApiResponse :: String -> Bool -> PoseidonIO ApiReturnData -processApiResponse :: [Char] -> Bool -> PoseidonIO ApiReturnData -processApiResponse [Char] -url Bool -quiet = do - ByteString -remoteData <- IO ByteString -> ReaderT Env IO ByteString + +processApiResponse :: String -> Bool -> PoseidonIO ApiReturnData +processApiResponse :: [Char] -> Bool -> PoseidonIO ApiReturnData +processApiResponse [Char] +url Bool +quiet = do + ByteString +remoteData <- IO ByteString -> ReaderT Env IO ByteString forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO ByteString -> ReaderT Env IO ByteString) @@ -939,7 +897,7 @@ catch ([Char] -> IO ByteString forall (m :: * -> *). MonadIO m => [Char] -> m ByteString simpleHttp [Char] -url) (PoseidonException -> IO ByteString +url) (PoseidonException -> IO ByteString forall e a. Exception e => e -> IO a throwIO (PoseidonException -> IO ByteString) -> (HttpException -> PoseidonException) @@ -948,14 +906,14 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . HttpException -> PoseidonException PoseidonHttpExceptionForward) - ServerApiReturnType [[Char]] -messages Maybe ApiReturnData -maybeReturn <- case ByteString -> Either [Char] ServerApiReturnType + ServerApiReturnType [[Char]] +messages Maybe ApiReturnData +maybeReturn <- case ByteString -> Either [Char] ServerApiReturnType forall a. FromJSON a => ByteString -> Either [Char] a eitherDecode' ByteString -remoteData of - Left [Char] -err -> IO ServerApiReturnType -> ReaderT Env IO ServerApiReturnType +remoteData of + Left [Char] +err -> IO ServerApiReturnType -> ReaderT Env IO ServerApiReturnType forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO ServerApiReturnType -> ReaderT Env IO ServerApiReturnType) @@ -970,53 +928,53 @@ forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonException PoseidonRemoteJSONParsingException [Char] -err - Right ServerApiReturnType -sam -> ServerApiReturnType -> ReaderT Env IO ServerApiReturnType +err + Right ServerApiReturnType +sam -> ServerApiReturnType -> ReaderT Env IO ServerApiReturnType forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return ServerApiReturnType -sam - Bool -> ReaderT Env IO () -> ReaderT Env IO () +sam + Bool -> ReaderT Env IO () -> ReaderT Env IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless ([[Char]] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [[Char]] -messages Bool -> Bool -> Bool +messages Bool -> Bool -> Bool || Bool -quiet) (ReaderT Env IO () -> ReaderT Env IO ()) +quiet) (ReaderT Env IO () -> ReaderT Env IO ()) -> ReaderT Env IO () -> ReaderT Env IO () forall a b. (a -> b) -> a -> b $ - [[Char]] -> ([Char] -> ReaderT Env IO ()) -> ReaderT Env IO () + [[Char]] -> ([Char] -> ReaderT Env IO ()) -> ReaderT Env IO () forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [[Char]] -messages (\[Char] -msg -> [Char] -> ReaderT Env IO () +messages (\[Char] +msg -> [Char] -> ReaderT Env IO () logInfo ([Char] -> ReaderT Env IO ()) -> [Char] -> ReaderT Env IO () forall a b. (a -> b) -> a -> b $ [Char] "Message from the Server: " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -msg) - case Maybe ApiReturnData -maybeReturn of - Just ApiReturnData -apiReturn -> ApiReturnData -> PoseidonIO ApiReturnData +msg) + case Maybe ApiReturnData +maybeReturn of + Just ApiReturnData +apiReturn -> ApiReturnData -> PoseidonIO ApiReturnData forall a. a -> ReaderT Env IO a forall (m :: * -> *) a. Monad m => a -> m a return ApiReturnData -apiReturn - Maybe ApiReturnData +apiReturn + Maybe ApiReturnData Nothing -> do - [Char] -> ReaderT Env IO () + [Char] -> ReaderT Env IO () logError [Char] "The server request was unsuccessful" - IO ApiReturnData -> PoseidonIO ApiReturnData + IO ApiReturnData -> PoseidonIO ApiReturnData forall a. IO a -> ReaderT Env IO a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO ApiReturnData -> PoseidonIO ApiReturnData) @@ -1037,36 +995,36 @@ "Server error upon URL " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] -url - -extIndInfo2IndInfoCollection :: [ExtendedIndividualInfo] -> IndividualInfoCollection -extIndInfo2IndInfoCollection :: [ExtendedIndividualInfo] -> IndividualInfoCollection -extIndInfo2IndInfoCollection [ExtendedIndividualInfo] -extIndInfos = - let indInfos :: [IndividualInfo] -indInfos = [[Char] -> [[Char]] -> PacNameAndVersion -> IndividualInfo +url + +extIndInfo2IndInfoCollection :: [ExtendedIndividualInfo] -> IndividualInfoCollection +extIndInfo2IndInfoCollection :: [ExtendedIndividualInfo] -> IndividualInfoCollection +extIndInfo2IndInfoCollection [ExtendedIndividualInfo] +extIndInfos = + let indInfos :: [IndividualInfo] +indInfos = [[Char] -> [[Char]] -> PacNameAndVersion -> IndividualInfo IndividualInfo [Char] -n [[Char]] -g PacNameAndVersion -p | ExtendedIndividualInfo [Char] -n [[Char]] -g PacNameAndVersion -p Bool +n [[Char]] +g PacNameAndVersion +p | ExtendedIndividualInfo [Char] +n [[Char]] +g PacNameAndVersion +p Bool _ [([Char], Maybe [Char])] _ <- [ExtendedIndividualInfo] -extIndInfos] - areLatest :: [Bool] -areLatest = (ExtendedIndividualInfo -> Bool) +extIndInfos] + areLatest :: [Bool] +areLatest = (ExtendedIndividualInfo -> Bool) -> [ExtendedIndividualInfo] -> [Bool] forall a b. (a -> b) -> [a] -> [b] map ExtendedIndividualInfo -> Bool extIndInfoIsLatest [ExtendedIndividualInfo] -extIndInfos - in ([IndividualInfo] -indInfos, [Bool] -areLatest) - --- type needed to specify additional Janno Columns to be queried from packages -data AddJannoColSpec = AddJannoColList [String] | AddJannoColAll - - \ No newline at end of file +extIndInfos + in ([IndividualInfo] +indInfos, [Bool] +areLatest) + +-- type needed to specify additional Janno Columns to be queried from packages +data AddJannoColSpec = AddJannoColList [String] | AddJannoColAll + + \ No newline at end of file diff --git a/src/Poseidon.Utils.html b/src/Poseidon.Utils.html index 61681667..dda9980c 100644 --- a/src/Poseidon.Utils.html +++ b/src/Poseidon.Utils.html @@ -59,7 +59,7 @@ type LogA = LogAction IO Message -data TestMode = Testing | Production deriving Int -> TestMode -> ShowS +data TestMode = Testing | Production deriving Int -> TestMode -> ShowS [TestMode] -> ShowS TestMode -> String (Int -> TestMode -> ShowS) @@ -87,10 +87,10 @@ defaultEnv :: LogA -> Env defaultEnv :: LogA -> Env -defaultEnv LogA -logA = LogA -> TestMode -> PlinkPopNameMode -> ErrorLength -> Env +defaultEnv LogA +logA = LogA -> TestMode -> PlinkPopNameMode -> ErrorLength -> Env Env LogA -logA TestMode +logA TestMode Production PlinkPopNameMode PlinkPopNameAsFamily ErrorLength CharInf @@ -122,7 +122,7 @@ | DefaultLog | ServerLog | VerboseLog - deriving Int -> LogMode -> ShowS + deriving Int -> LogMode -> ShowS [LogMode] -> ShowS LogMode -> String (Int -> LogMode -> ShowS) @@ -137,7 +137,7 @@ showList :: [LogMode] -> ShowS Show -usePoseidonLogger :: LogMode -> TestMode -> PlinkPopNameMode -> ErrorLength -> PoseidonIO a -> IO a +usePoseidonLogger :: LogMode -> TestMode -> PlinkPopNameMode -> ErrorLength -> PoseidonIO a -> IO a usePoseidonLogger :: forall a. LogMode -> TestMode @@ -146,77 +146,77 @@ -> PoseidonIO a -> IO a usePoseidonLogger LogMode -NoLog TestMode -testMode PlinkPopNameMode -plinkMode ErrorLength -errLength = (PoseidonIO a -> Env -> IO a) -> Env -> PoseidonIO a -> IO a +NoLog TestMode +testMode PlinkPopNameMode +plinkMode ErrorLength +errLength = (PoseidonIO a -> Env -> IO a) -> Env -> PoseidonIO a -> IO a forall a b c. (a -> b -> c) -> b -> a -> c flip PoseidonIO a -> Env -> IO a forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (LogA -> TestMode -> PlinkPopNameMode -> ErrorLength -> Env Env LogA noLog TestMode -testMode PlinkPopNameMode -plinkMode ErrorLength -errLength) +testMode PlinkPopNameMode +plinkMode ErrorLength +errLength) usePoseidonLogger LogMode -SimpleLog TestMode -testMode PlinkPopNameMode -plinkMode ErrorLength -errLength = (PoseidonIO a -> Env -> IO a) -> Env -> PoseidonIO a -> IO a +SimpleLog TestMode +testMode PlinkPopNameMode +plinkMode ErrorLength +errLength = (PoseidonIO a -> Env -> IO a) -> Env -> PoseidonIO a -> IO a forall a b c. (a -> b -> c) -> b -> a -> c flip PoseidonIO a -> Env -> IO a forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (LogA -> TestMode -> PlinkPopNameMode -> ErrorLength -> Env Env LogA simpleLog TestMode -testMode PlinkPopNameMode -plinkMode ErrorLength -errLength) +testMode PlinkPopNameMode +plinkMode ErrorLength +errLength) usePoseidonLogger LogMode -DefaultLog TestMode -testMode PlinkPopNameMode -plinkMode ErrorLength -errLength = (PoseidonIO a -> Env -> IO a) -> Env -> PoseidonIO a -> IO a +DefaultLog TestMode +testMode PlinkPopNameMode +plinkMode ErrorLength +errLength = (PoseidonIO a -> Env -> IO a) -> Env -> PoseidonIO a -> IO a forall a b c. (a -> b -> c) -> b -> a -> c flip PoseidonIO a -> Env -> IO a forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (LogA -> TestMode -> PlinkPopNameMode -> ErrorLength -> Env Env LogA defaultLog TestMode -testMode PlinkPopNameMode -plinkMode ErrorLength -errLength) +testMode PlinkPopNameMode +plinkMode ErrorLength +errLength) usePoseidonLogger LogMode -ServerLog TestMode -testMode PlinkPopNameMode -plinkMode ErrorLength -errLength = (PoseidonIO a -> Env -> IO a) -> Env -> PoseidonIO a -> IO a +ServerLog TestMode +testMode PlinkPopNameMode +plinkMode ErrorLength +errLength = (PoseidonIO a -> Env -> IO a) -> Env -> PoseidonIO a -> IO a forall a b c. (a -> b -> c) -> b -> a -> c flip PoseidonIO a -> Env -> IO a forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (LogA -> TestMode -> PlinkPopNameMode -> ErrorLength -> Env Env LogA serverLog TestMode -testMode PlinkPopNameMode -plinkMode ErrorLength -errLength) +testMode PlinkPopNameMode +plinkMode ErrorLength +errLength) usePoseidonLogger LogMode -VerboseLog TestMode -testMode PlinkPopNameMode -plinkMode ErrorLength -errLength = (PoseidonIO a -> Env -> IO a) -> Env -> PoseidonIO a -> IO a +VerboseLog TestMode +testMode PlinkPopNameMode +plinkMode ErrorLength +errLength = (PoseidonIO a -> Env -> IO a) -> Env -> PoseidonIO a -> IO a forall a b c. (a -> b -> c) -> b -> a -> c flip PoseidonIO a -> Env -> IO a forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (LogA -> TestMode -> PlinkPopNameMode -> ErrorLength -> Env Env LogA verboseLog TestMode -testMode PlinkPopNameMode -plinkMode ErrorLength -errLength) +testMode PlinkPopNameMode +plinkMode ErrorLength +errLength) -testLog :: PoseidonIO a -> IO a +testLog :: PoseidonIO a -> IO a testLog :: forall a. PoseidonIO a -> IO a testLog = LogMode -> TestMode @@ -255,11 +255,11 @@ forall (m :: * -> *) msg. Applicative m => (msg -> Bool) -> LogAction m msg -> LogAction m msg -cfilter (\Msg Severity -msg -> Msg Severity -> Severity +cfilter (\Msg Severity +msg -> Msg Severity -> Severity forall sev. Msg sev -> sev msgSeverity Msg Severity -msg Severity -> Severity -> Bool +msg Severity -> Severity -> Bool forall a. Eq a => a -> a -> Bool /= Severity Debug) (LogA -> LogA) -> LogA -> LogA @@ -274,11 +274,11 @@ forall (m :: * -> *) msg. Applicative m => (msg -> Bool) -> LogAction m msg -> LogAction m msg -cfilter (\Msg Severity -msg -> Msg Severity -> Severity +cfilter (\Msg Severity +msg -> Msg Severity -> Severity forall sev. Msg sev -> sev msgSeverity Msg Severity -msg Severity -> Severity -> Bool +msg Severity -> Severity -> Bool forall a. Eq a => a -> a -> Bool /= Severity Debug) (LogA -> LogA) -> LogA -> LogA @@ -293,11 +293,11 @@ forall (m :: * -> *) msg. Applicative m => (msg -> Bool) -> LogAction m msg -> LogAction m msg -cfilter (\Msg Severity -msg -> Msg Severity -> Severity +cfilter (\Msg Severity +msg -> Msg Severity -> Severity forall sev. Msg sev -> sev msgSeverity Msg Severity -msg Severity -> Severity -> Bool +msg Severity -> Severity -> Bool forall a. Eq a => a -> a -> Bool /= Severity Debug) (LogA -> LogA) -> LogA -> LogA @@ -315,43 +315,43 @@ compileLogMsg :: Bool -> Bool -> LogA compileLogMsg :: Bool -> Bool -> LogA -compileLogMsg Bool -severity Bool -time = (Msg Severity -> IO Text) -> LogAction IO Text -> LogA +compileLogMsg Bool +severity Bool +time = (Msg Severity -> IO Text) -> LogAction IO Text -> LogA forall (m :: * -> *) a b. Monad m => (a -> m b) -> LogAction m b -> LogAction m a cmapM Msg Severity -> IO Text -prepareMessage LogAction IO Text +prepareMessage LogAction IO Text forall (m :: * -> *). MonadIO m => LogAction m Text logTextStderr where - prepareMessage :: Message -> IO Text - prepareMessage :: Msg Severity -> IO Text -prepareMessage Msg Severity -msg = do - let textMessage :: Text -textMessage = Msg Severity -> Text + prepareMessage :: Message -> IO Text + prepareMessage :: Msg Severity -> IO Text +prepareMessage Msg Severity +msg = do + let textMessage :: Text +textMessage = Msg Severity -> Text forall sev. Msg sev -> Text msgText Msg Severity -msg - textSeverity :: Text -textSeverity = if Bool -severity +msg + textSeverity :: Text +textSeverity = if Bool +severity then Severity -> Text showSeverity (Msg Severity -> Severity forall sev. Msg sev -> sev msgSeverity Msg Severity -msg) +msg) else Text forall a. Monoid a => a mempty - Text -textTime <- if Bool -time + Text +textTime <- if Bool +time then do - ZonedTime -zonedTime <- IO UTCTime + ZonedTime +zonedTime <- IO UTCTime getCurrentTime IO UTCTime -> (UTCTime -> IO ZonedTime) -> IO ZonedTime forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b @@ -373,7 +373,7 @@ formatTime TimeLocale defaultTimeLocale String "%F %T" ZonedTime -zonedTime String -> ShowS +zonedTime String -> ShowS forall a. [a] -> [a] -> [a] ++ String "] " @@ -386,27 +386,27 @@ return (Text -> IO Text) -> Text -> IO Text forall a b. (a -> b) -> a -> b $ Text -textSeverity Text -> Text -> Text +textSeverity Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text -textTime Text -> Text -> Text +textTime Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text -textMessage +textMessage logMsg :: Severity -> String -> PoseidonIO () logMsg :: Severity -> String -> PoseidonIO () -logMsg Severity -sev String -msg = do +logMsg Severity +sev String +msg = do {- Using asks getLogAction here gives us a bit of flexibility. If in the future we'd like to expand the ReaderT environment by adding more options or parameters to LogA, perhaps even the command line options, we can do so, we just need to adapt the HasLog instance, which tells us how to get the logAction out of the environment. -} - LogAction Msg Severity -> IO () -logF <- (Env -> LogA) -> PoseidonIO LogA + LogAction Msg Severity -> IO () +logF <- (Env -> LogA) -> PoseidonIO LogA forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a asks (LogA -> LogA forall env msg (m :: * -> *). @@ -429,16 +429,16 @@ -> (Msg Severity -> IO ()) -> Msg Severity -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . Msg Severity -> IO () -logF (Msg Severity -> PoseidonIO ()) -> Msg Severity -> PoseidonIO () +logF (Msg Severity -> PoseidonIO ()) -> Msg Severity -> PoseidonIO () forall a b. (a -> b) -> a -> b $ Severity -> CallStack -> Text -> Msg Severity forall sev. sev -> CallStack -> Text -> Msg sev Msg Severity -sev CallStack +sev CallStack HasCallStack => CallStack callStack (String -> Text pack String -msg) +msg) logWarning :: String -> PoseidonIO () logWarning :: String -> PoseidonIO () @@ -464,10 +464,10 @@ logMsg Severity Error -logWithEnv :: (MonadIO m) => LogA -> PoseidonIO () -> m () +logWithEnv :: (MonadIO m) => LogA -> PoseidonIO () -> m () logWithEnv :: forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () -logWithEnv LogA -logA = IO () -> m () +logWithEnv LogA +logA = IO () -> m () forall a. IO a -> m a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> m ()) @@ -479,10 +479,10 @@ forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (LogA -> Env defaultEnv LogA -logA) +logA) -- | A data type for error length settings -data ErrorLength = CharInf | CharCount Int deriving Int -> ErrorLength -> ShowS +data ErrorLength = CharInf | CharCount Int deriving Int -> ErrorLength -> ShowS [ErrorLength] -> ShowS ErrorLength -> String (Int -> ErrorLength -> ShowS) @@ -502,30 +502,30 @@ truncateErr :: ErrorLength -> String -> String truncateErr :: ErrorLength -> ShowS truncateErr ErrorLength -CharInf String -s = String -s -truncateErr (CharCount Int -len) String -s +CharInf String +s = String +s +truncateErr (CharCount Int +len) String +s | String -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length String -s Int -> Int -> Bool +s Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int -len = Int -> ShowS +len = Int -> ShowS forall a. Int -> [a] -> [a] take Int -len String -s String -> ShowS +len String +s String -> ShowS forall a. [a] -> [a] -> [a] ++ String "... (see more with --errLength)" | Bool otherwise = String -s +s -- | A Poseidon Exception data type with several concrete constructors data PoseidonException = @@ -558,7 +558,7 @@ | PoseidonChronicleException String -- ^ An exception for issues in chronicle | PoseidonGitException FilePath String -- ^ An exception for issues with git | PoseidonCantPreserveException -- ^ An exception for issues with --preservePyml - deriving (Int -> PoseidonException -> ShowS + deriving (Int -> PoseidonException -> ShowS [PoseidonException] -> ShowS PoseidonException -> String (Int -> PoseidonException -> ShowS) @@ -575,49 +575,49 @@ showList :: [PoseidonException] -> ShowS Show) -instance Exception PoseidonException +instance Exception PoseidonException renderPoseidonException :: PoseidonException -> String renderPoseidonException :: PoseidonException -> String -renderPoseidonException (PoseidonYamlParseException String -fn ParseException -e) = +renderPoseidonException (PoseidonYamlParseException String +fn ParseException +e) = String "Could not parse YAML file " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -fn String -> ShowS +fn String -> ShowS forall a. [a] -> [a] -> [a] ++ String ":\n" String -> ShowS forall a. [a] -> [a] -> [a] ++ ParseException -> String prettyPrintParseException ParseException -e -renderPoseidonException (PoseidonPackageException String -s) = +e +renderPoseidonException (PoseidonPackageException String +s) = String "Encountered a logical error with a package: " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s -renderPoseidonException (PoseidonPackageVersionException String -p String -s) = +s +renderPoseidonException (PoseidonPackageVersionException String +p String +s) = String "Poseidon version mismatch in " String -> ShowS forall a. [a] -> [a] -> [a] ++ ShowS forall a. Show a => a -> String show String -p String -> ShowS +p String -> ShowS forall a. [a] -> [a] -> [a] ++ String ". This package is build according to Poseidon schema v" String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s String -> ShowS +s String -> ShowS forall a. [a] -> [a] -> [a] ++ String @@ -630,15 +630,15 @@ ++ String ". Modify the package, or switch to a newer (or older) version of this software." -renderPoseidonException (PoseidonPackageMissingVersionException String -p) = +renderPoseidonException (PoseidonPackageMissingVersionException String +p) = String "The POSEIDON.yml file " String -> ShowS forall a. [a] -> [a] -> [a] ++ ShowS forall a. Show a => a -> String show String -p String -> ShowS +p String -> ShowS forall a. [a] -> [a] -> [a] ++ String " has no poseidonVersion field. " String -> ShowS @@ -646,36 +646,36 @@ ++ String "This is mandatory." -renderPoseidonException (PoseidonIndSearchException String -s) = +renderPoseidonException (PoseidonIndSearchException String +s) = ShowS forall a. Show a => a -> String show String -s -renderPoseidonException (PoseidonGenotypeException String -s) = +s +renderPoseidonException (PoseidonGenotypeException String +s) = String "Genotype data structurally inconsistent: " String -> ShowS forall a. [a] -> [a] -> [a] ++ ShowS forall a. Show a => a -> String show String -s -renderPoseidonException (PoseidonGenotypeExceptionForward ErrorLength -errLength SomeException -e) = +s +renderPoseidonException (PoseidonGenotypeExceptionForward ErrorLength +errLength SomeException +e) = String "Issues in genotype data parsing: " String -> ShowS forall a. [a] -> [a] -> [a] ++ ErrorLength -> ShowS truncateErr ErrorLength -errLength (SomeException -> String +errLength (SomeException -> String forall a. Show a => a -> String show SomeException -e) +e) renderPoseidonException (PoseidonHttpExceptionForward (HttpExceptionRequest Request -_ HttpExceptionContent -content)) = +_ HttpExceptionContent +content)) = String "Issues in HTTP-communication with server:\n" String -> ShowS forall a. [a] -> [a] -> [a] @@ -683,155 +683,155 @@ HttpExceptionContent -> String forall a. Show a => a -> String show HttpExceptionContent -content -renderPoseidonException (PoseidonHttpExceptionForward HttpException -e) = +content +renderPoseidonException (PoseidonHttpExceptionForward HttpException +e) = String "Issues in HTTP-communication with server: " String -> ShowS forall a. [a] -> [a] -> [a] ++ HttpException -> String forall a. Show a => a -> String show HttpException -e -renderPoseidonException (PoseidonFileRowException String -f String -i String -s) = +e +renderPoseidonException (PoseidonFileRowException String +f String +i String +s) = String "Can't read sample in " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -f String -> ShowS +f String -> ShowS forall a. [a] -> [a] -> [a] ++ String " in line " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -i String -> ShowS +i String -> ShowS forall a. [a] -> [a] -> [a] ++ String ": " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s -renderPoseidonException (PoseidonFileConsistencyException String -f String -s) = +s +renderPoseidonException (PoseidonFileConsistencyException String +f String +s) = String "Consistency issues in file " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -f String -> ShowS +f String -> ShowS forall a. [a] -> [a] -> [a] ++ String ": " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s -renderPoseidonException (PoseidonCrossFileConsistencyException String -p String -s) = +s +renderPoseidonException (PoseidonCrossFileConsistencyException String +p String +s) = String "Cross-file consistency issue in package " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -p String -> ShowS +p String -> ShowS forall a. [a] -> [a] -> [a] ++ String ": " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s -renderPoseidonException (PoseidonCollectionException String -s) = +s +renderPoseidonException (PoseidonCollectionException String +s) = String "The package collection is broken: " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s -renderPoseidonException (PoseidonFileExistenceException String -f) = +s +renderPoseidonException (PoseidonFileExistenceException String +f) = String "File " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -f String -> ShowS +f String -> ShowS forall a. [a] -> [a] -> [a] ++ String " does not exist" -renderPoseidonException (PoseidonFileChecksumException String -f) = +renderPoseidonException (PoseidonFileChecksumException String +f) = String "File checksum test failed: " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -f -renderPoseidonException (PoseidonFStatsFormatException String -s) = +f +renderPoseidonException (PoseidonFStatsFormatException String +s) = String "Fstat specification error: " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s -renderPoseidonException (PoseidonBibTeXException String -f String -s) = +s +renderPoseidonException (PoseidonBibTeXException String +f String +s) = String "BibTex problem in file " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -f String -> ShowS +f String -> ShowS forall a. [a] -> [a] -> [a] ++ String ": " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s -renderPoseidonException (PoseidonPoseidonEntityParsingException ParseError -e) = +s +renderPoseidonException (PoseidonPoseidonEntityParsingException ParseError +e) = String "Error when parsing the forge selection (either -f or --forgeFile): " String -> ShowS forall a. [a] -> [a] -> [a] ++ ParseError -> String showParsecErr ParseError -e -renderPoseidonException (PoseidonForgeEntitiesException String -s) = +e +renderPoseidonException (PoseidonForgeEntitiesException String +s) = String "Error in the forge selection: " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s +s renderPoseidonException PoseidonException PoseidonEmptyForgeException = String "Nothing to be forged" -renderPoseidonException (PoseidonNewPackageConstructionException String -s) = +renderPoseidonException (PoseidonNewPackageConstructionException String +s) = ShowS forall a. Show a => a -> String show String -s -renderPoseidonException (PoseidonRemoteJSONParsingException String -s) = +s +renderPoseidonException (PoseidonRemoteJSONParsingException String +s) = String "Error in parsing JSON: " String -> ShowS forall a. [a] -> [a] -> [a] ++ ShowS forall a. Show a => a -> String show String -s -renderPoseidonException (PoseidonGenericException String -s) = String -s +s +renderPoseidonException (PoseidonGenericException String +s) = String +s renderPoseidonException PoseidonException PoseidonEmptyOutPacNameException = String "Error when preparing the new package: The output package does not have a name. Add one with: -n YourPackageName" -renderPoseidonException (PoseidonUnequalBaseDirException String -g String -s String -i) = +renderPoseidonException (PoseidonUnequalBaseDirException String +g String +s String +i) = String "The base directories of these genotype files are not equal." String -> ShowS @@ -840,54 +840,54 @@ " --genoFile: " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -g +g String -> ShowS forall a. [a] -> [a] -> [a] ++ String " --snpFile: " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s +s String -> ShowS forall a. [a] -> [a] -> [a] ++ String " --indFile: " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -i -renderPoseidonException (PoseidonServerCommunicationException String -e) = String -e -renderPoseidonException (PoseidonUnzipException SomeException -e) = +i +renderPoseidonException (PoseidonServerCommunicationException String +e) = String +e +renderPoseidonException (PoseidonUnzipException SomeException +e) = String "Error during unzipping: " String -> ShowS forall a. [a] -> [a] -> [a] ++ SomeException -> String forall a. Show a => a -> String show SomeException -e -renderPoseidonException (PoseidonChronicleException String -s) = +e +renderPoseidonException (PoseidonChronicleException String +s) = String "Error when preparing the chronicle file: " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s -renderPoseidonException (PoseidonGitException String -p String -s) = +s +renderPoseidonException (PoseidonGitException String +p String +s) = String "Failed to load .git directory in " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -p String -> ShowS +p String -> ShowS forall a. [a] -> [a] -> [a] ++ String ": " String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s +s renderPoseidonException PoseidonException PoseidonCantPreserveException = String @@ -896,64 +896,64 @@ -- helper function to check if a file exists checkFile :: FilePath -> Maybe String -> IO () checkFile :: String -> Maybe String -> IO () -checkFile String -fn Maybe String -maybeChkSum = do - Bool -fe <- String -> IO Bool +checkFile String +fn Maybe String +maybeChkSum = do + Bool +fe <- String -> IO Bool doesFileExist String -fn +fn if Bool -> Bool not Bool -fe +fe then PoseidonException -> IO () forall e a. Exception e => e -> IO a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (String -> PoseidonException PoseidonFileExistenceException String -fn) +fn) else case Maybe String -maybeChkSum of +maybeChkSum of Maybe String Nothing -> () -> IO () forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return () - Just String -chkSum -> do - String -fnChkSum <- String -> IO String + Just String +chkSum -> do + String +fnChkSum <- String -> IO String getChecksum String -fn +fn Bool -> IO () -> IO () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (String -fnChkSum String -> String -> Bool +fnChkSum String -> String -> Bool forall a. Eq a => a -> a -> Bool /= String -chkSum) (IO () -> IO ()) -> IO () -> IO () +chkSum) (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ PoseidonException -> IO () forall e a. Exception e => e -> IO a forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (String -> PoseidonException PoseidonFileChecksumException String -fn) +fn) -- helper functions to get the checksum of a file getChecksum :: FilePath -> IO String getChecksum :: String -> IO String -getChecksum String -f = do - ByteString -fileContent <- String -> IO ByteString +getChecksum String +f = do + ByteString +fileContent <- String -> IO ByteString LB.readFile String -f - let md5Digest :: MD5Digest -md5Digest = ByteString -> MD5Digest +f + let md5Digest :: MD5Digest +md5Digest = ByteString -> MD5Digest md5 ByteString -fileContent +fileContent String -> IO String forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a @@ -962,167 +962,167 @@ $ MD5Digest -> String forall a. Show a => a -> String show MD5Digest -md5Digest +md5Digest -- helper functions to pad and cut strings padRight :: Int -> String -> String padRight :: Int -> ShowS -padRight Int -n String -s +padRight Int +n String +s | String -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length String -s Int -> Int -> Bool +s Int -> Int -> Bool forall a. Ord a => a -> a -> Bool >= Int -n = Int -> ShowS +n = Int -> ShowS forall a. Int -> [a] -> [a] take Int -n String -s +n String +s | String -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length String -s Int -> Int -> Bool +s Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int -n = String -s String -> ShowS +n = String +s String -> ShowS forall a. [a] -> [a] -> [a] ++ Int -> Char -> String forall a. Int -> a -> [a] replicate (Int -n Int -> Int -> Int +n Int -> Int -> Int forall a. Num a => a -> a -> a - String -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length String -s) Char +s) Char ' ' | Bool otherwise = String -s +s padLeft :: Int -> String -> String padLeft :: Int -> ShowS -padLeft Int -n String -s +padLeft Int +n String +s | String -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length String -s Int -> Int -> Bool +s Int -> Int -> Bool forall a. Ord a => a -> a -> Bool >= Int -n = ShowS +n = ShowS forall a. [a] -> [a] reverse (Int -> ShowS forall a. Int -> [a] -> [a] take Int -n (ShowS +n (ShowS forall a. [a] -> [a] reverse String -s)) +s)) | String -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length String -s Int -> Int -> Bool +s Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int -n = Int -> Char -> String +n = Int -> Char -> String forall a. Int -> a -> [a] replicate (Int -n Int -> Int -> Int +n Int -> Int -> Int forall a. Num a => a -> a -> a - String -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length String -s) Char +s) Char ' ' String -> ShowS forall a. [a] -> [a] -> [a] ++ String -s +s | Bool otherwise = String -s +s -- helper function to determine the package name depending on -n and -o determinePackageOutName :: Maybe String -> FilePath -> IO String determinePackageOutName :: Maybe String -> String -> IO String -determinePackageOutName Maybe String -maybeOutName String -outPath = do +determinePackageOutName Maybe String +maybeOutName String +outPath = do case Maybe String -maybeOutName of -- take basename of outPath, if name is not provided - Just String -x -> String -> IO String +maybeOutName of -- take basename of outPath, if name is not provided + Just String +x -> String -> IO String forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return String -x +x Maybe String Nothing -> case ShowS takeBaseName String -outPath of -- check if outPath is empty +outPath of -- check if outPath is empty String "" -> PoseidonException -> IO String forall e a. Exception e => e -> IO a throwIO PoseidonException PoseidonEmptyOutPacNameException - String -y -> String -> IO String + String +y -> String -> IO String forall a. a -> IO a forall (m :: * -> *) a. Monad m => a -> m a return String -y +y -- two helper functions to reduce a lists to the unique elements in it -- see https://github.com/nh2/haskell-ordnub#dont-use-nub -- preserves the original order -uniquePO :: (Ord a) => [a] -> [a] +uniquePO :: (Ord a) => [a] -> [a] uniquePO :: forall a. Ord a => [a] -> [a] uniquePO = Set a -> [a] -> [a] forall {a}. Ord a => Set a -> [a] -> [a] -go Set a +go Set a forall a. Set a Set.empty where - go :: Set a -> [a] -> [a] -go Set a + go :: Set a -> [a] -> [a] +go Set a _ [] = [] - go Set a -s (a -x:[a] -xs) = + go Set a +s (a +x:[a] +xs) = if a -x a -> Set a -> Bool +x a -> Set a -> Bool forall a. Ord a => a -> Set a -> Bool `Set.member` Set a -s +s then Set a -> [a] -> [a] -go Set a -s [a] -xs +go Set a +s [a] +xs else a -x a -> [a] -> [a] +x a -> [a] -> [a] forall a. a -> [a] -> [a] : Set a -> [a] -> [a] -go (a -> Set a -> Set a +go (a -> Set a -> Set a forall a. Ord a => a -> Set a -> Set a Set.insert a -x Set a -s) [a] -xs +x Set a +s) [a] +xs -- reorderes the list according to the Ord instance of a -uniqueRO :: (Ord a) => [a] -> [a] +uniqueRO :: (Ord a) => [a] -> [a] uniqueRO :: forall a. Ord a => [a] -> [a] uniqueRO = Set a -> [a] forall a. Set a -> [a] @@ -1135,8 +1135,8 @@ -- helper function to render parsec errors neatly showParsecErr :: P.ParseError -> String showParsecErr :: ParseError -> String -showParsecErr ParseError -err = +showParsecErr ParseError +err = String -> String -> String -> String -> String -> [Message] -> String P.showErrorMessages @@ -1149,5 +1149,5 @@ "end of input" (ParseError -> [Message] P.errorMessages ParseError -err) +err) \ No newline at end of file diff --git a/src/Poseidon.Version.html b/src/Poseidon.Version.html index ca44af34..031e04b3 100644 --- a/src/Poseidon.Version.html +++ b/src/Poseidon.Version.html @@ -12,7 +12,7 @@ data VersionComponent = Major | Minor | Patch - deriving Int -> VersionComponent -> ShowS + deriving Int -> VersionComponent -> ShowS [VersionComponent] -> ShowS VersionComponent -> String (Int -> VersionComponent -> ShowS) @@ -31,27 +31,27 @@ updateThreeComponentVersion :: VersionComponent -> Version -> Version updateThreeComponentVersion :: VersionComponent -> Version -> Version -updateThreeComponentVersion VersionComponent -component Version -v = - let i :: [Int] -i = Version -> [Int] +updateThreeComponentVersion VersionComponent +component Version +v = + let i :: [Int] +i = Version -> [Int] versionBranch Version -v - r :: [Int] -r = case VersionComponent -component of +v + r :: [Int] +r = case VersionComponent +component of VersionComponent Patch -> [ [Int] -i [Int] -> Int -> Int +i [Int] -> Int -> Int forall a. HasCallStack => [a] -> Int -> a !! Int 0, [Int] -i [Int] -> Int -> Int +i [Int] -> Int -> Int forall a. HasCallStack => [a] -> Int -> a !! Int 1, ([Int] -i [Int] -> Int -> Int +i [Int] -> Int -> Int forall a. HasCallStack => [a] -> Int -> a !! Int 2) Int -> Int -> Int @@ -60,11 +60,11 @@ 1] VersionComponent Minor -> [ [Int] -i [Int] -> Int -> Int +i [Int] -> Int -> Int forall a. HasCallStack => [a] -> Int -> a !! Int 0, ([Int] -i [Int] -> Int -> Int +i [Int] -> Int -> Int forall a. HasCallStack => [a] -> Int -> a !! Int 1) Int -> Int -> Int @@ -74,7 +74,7 @@ 0 ] VersionComponent Major -> [([Int] -i [Int] -> Int -> Int +i [Int] -> Int -> Int forall a. HasCallStack => [a] -> Int -> a !! Int 0) Int -> Int -> Int @@ -85,13 +85,13 @@ 0 ] in [Int] -> Version makeVersion [Int] -r +r parseVersion :: P.Parser Version parseVersion :: Parser Version parseVersion = do - Int -major <- String -> Int + Int +major <- String -> Int forall a. Read a => String -> a read (String -> Int) -> ParsecT String () Identity String @@ -112,8 +112,8 @@ String -> ParsecT s u m Char P.oneOf String "." - Int -minor <- String -> Int + Int +minor <- String -> Int forall a. Read a => String -> a read (String -> Int) -> ParsecT String () Identity String @@ -134,8 +134,8 @@ String -> ParsecT s u m Char P.oneOf String "." - Int -patch <- String -> Int + Int +patch <- String -> Int forall a. Read a => String -> a read (String -> Int) -> ParsecT String () Identity String @@ -154,7 +154,7 @@ forall (m :: * -> *) a. Monad m => a -> m a return ([Int] -> Version makeVersion [Int -major, Int -minor, Int -patch]) +major, Int +minor, Int +patch]) \ No newline at end of file