From 9a83c7089b954105d07a064cf5be32ca8bf36df5 Mon Sep 17 00:00:00 2001 From: nevrome Date: Tue, 26 Sep 2023 14:17:17 +0000 Subject: [PATCH] deploy: 215e0106dc21b3cbe84287da13e47f19cb7c0e61 --- 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-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-Contributor.html | 2 +- Poseidon-EntityTypes.html | 2 +- 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 +- index.html | 2 +- poseidon-hs.haddock | Bin 49969 -> 49969 bytes poseidon-hs.txt | 2 +- src/Paths_poseidon_hs.html | 62 +- src/Poseidon.BibFile.html | 180 +- src/Poseidon.CLI.Chronicle.html | 60 +- src/Poseidon.CLI.Fetch.html | 564 ++-- src/Poseidon.CLI.Forge.html | 584 ++-- src/Poseidon.CLI.Genoconvert.html | 296 +- src/Poseidon.CLI.Init.html | 148 +- src/Poseidon.CLI.List.html | 362 +- ...seidon.CLI.OptparseApplicativeParsers.html | 444 +-- src/Poseidon.CLI.Rectify.html | 452 +-- src/Poseidon.CLI.Serve.html | 982 +++--- src/Poseidon.CLI.Summarise.html | 286 +- src/Poseidon.CLI.Survey.html | 344 +- src/Poseidon.CLI.Timetravel.html | 258 +- src/Poseidon.CLI.Validate.html | 214 +- src/Poseidon.Chronicle.html | 384 +-- src/Poseidon.Contributor.html | 254 +- src/Poseidon.EntityTypes.html | 960 +++--- src/Poseidon.GenotypeData.html | 902 ++--- src/Poseidon.Janno.html | 1994 +++++------ src/Poseidon.MathHelpers.html | 92 +- src/Poseidon.Package.html | 3008 ++++++++--------- src/Poseidon.PoseidonVersion.html | 18 +- src/Poseidon.SequencingSource.html | 942 +++--- src/Poseidon.ServerClient.html | 382 +-- src/Poseidon.Utils.html | 524 +-- src/Poseidon.Version.html | 52 +- 83 files changed, 7378 insertions(+), 7484 deletions(-) diff --git a/Poseidon-BibFile.html b/Poseidon-BibFile.html index 063f3349..a2db2e13 100644 --- a/Poseidon-BibFile.html +++ b/Poseidon-BibFile.html @@ -1 +1 @@ -Poseidon.BibFile
poseidon-hs-1.4.0.1: 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.4.0.2: 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 93672e0b..e08a1997 100644 --- a/Poseidon-CLI-Chronicle.html +++ b/Poseidon-CLI-Chronicle.html @@ -1 +1 @@ -Poseidon.CLI.Chronicle
poseidon-hs-1.4.0.1: 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.4.0.2: 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 c970f83b..8cf27e1a 100644 --- a/Poseidon-CLI-Fetch.html +++ b/Poseidon-CLI-Fetch.html @@ -1 +1 @@ -Poseidon.CLI.Fetch
poseidon-hs-1.4.0.1: 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.4.0.2: 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 ae2b3e5d..e23b656b 100644 --- a/Poseidon-CLI-Forge.html +++ b/Poseidon-CLI-Forge.html @@ -1 +1 @@ -Poseidon.CLI.Forge
poseidon-hs-1.4.0.1: 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.4.0.2: 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 41a9d701..5854e6fb 100644 --- a/Poseidon-CLI-Genoconvert.html +++ b/Poseidon-CLI-Genoconvert.html @@ -1 +1 @@ -Poseidon.CLI.Genoconvert
poseidon-hs-1.4.0.1: 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.4.0.2: 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 24ec6fc0..323e9f55 100644 --- a/Poseidon-CLI-Init.html +++ b/Poseidon-CLI-Init.html @@ -1 +1 @@ -Poseidon.CLI.Init
poseidon-hs-1.4.0.1: 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.4.0.2: 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-List.html b/Poseidon-CLI-List.html index 99293f45..1d5bc9bb 100644 --- a/Poseidon-CLI-List.html +++ b/Poseidon-CLI-List.html @@ -1 +1 @@ -Poseidon.CLI.List
poseidon-hs-1.4.0.1: 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.4.0.2: 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 ccf4d921..f47d6ab2 100644 --- a/Poseidon-CLI-OptparseApplicativeParsers.html +++ b/Poseidon-CLI-OptparseApplicativeParsers.html @@ -1 +1 @@ -Poseidon.CLI.OptparseApplicativeParsers
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data
Safe HaskellSafe-Inferred
LanguageHaskell2010

Poseidon.CLI.OptparseApplicativeParsers

Documentation

data ErrorLength Source #

Constructors

CharInf 
CharCount Int 

Instances

Instances details
Show ErrorLength Source # 
Instance details

Defined in Poseidon.CLI.OptparseApplicativeParsers

parsePort :: Parser Int Source #

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

Poseidon.CLI.OptparseApplicativeParsers

Documentation

data ErrorLength Source #

Constructors

CharInf 
CharCount Int 

Instances

Instances details
Show ErrorLength Source # 
Instance details

Defined in Poseidon.CLI.OptparseApplicativeParsers

parsePort :: Parser Int Source #

\ No newline at end of file diff --git a/Poseidon-CLI-Rectify.html b/Poseidon-CLI-Rectify.html index 978fa75e..a422a45b 100644 --- a/Poseidon-CLI-Rectify.html +++ b/Poseidon-CLI-Rectify.html @@ -1 +1 @@ -Poseidon.CLI.Rectify
poseidon-hs-1.4.0.1: 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.4.0.2: 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 95b99644..db50ef06 100644 --- a/Poseidon-CLI-Serve.html +++ b/Poseidon-CLI-Serve.html @@ -1 +1 @@ -Poseidon.CLI.Serve
poseidon-hs-1.4.0.1: 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.4.0.2: 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 058931d0..b1878075 100644 --- a/Poseidon-CLI-Summarise.html +++ b/Poseidon-CLI-Summarise.html @@ -1,2 +1,2 @@ -Poseidon.CLI.Summarise
poseidon-hs-1.4.0.1: 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.4.0.2: 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 1c5e8c1f..68c13659 100644 --- a/Poseidon-CLI-Survey.html +++ b/Poseidon-CLI-Survey.html @@ -1 +1 @@ -Poseidon.CLI.Survey
poseidon-hs-1.4.0.1: 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.4.0.2: 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 diff --git a/Poseidon-CLI-Timetravel.html b/Poseidon-CLI-Timetravel.html index 3bf5bd4c..02ee7181 100644 --- a/Poseidon-CLI-Timetravel.html +++ b/Poseidon-CLI-Timetravel.html @@ -1 +1 @@ -Poseidon.CLI.Timetravel
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data
\ No newline at end of file +Poseidon.CLI.Timetravel
poseidon-hs-1.4.0.2: 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 5a701557..851e989c 100644 --- a/Poseidon-CLI-Validate.html +++ b/Poseidon-CLI-Validate.html @@ -1 +1 @@ -Poseidon.CLI.Validate
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data
\ No newline at end of file +Poseidon.CLI.Validate
poseidon-hs-1.4.0.2: 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 ac0390f7..1a3a7a8d 100644 --- a/Poseidon-Chronicle.html +++ b/Poseidon-Chronicle.html @@ -1 +1 @@ -Poseidon.Chronicle
poseidon-hs-1.4.0.1: 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.4.0.2: 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-Contributor.html b/Poseidon-Contributor.html index 005daaa9..1fe09bba 100644 --- a/Poseidon-Contributor.html +++ b/Poseidon-Contributor.html @@ -1,2 +1,2 @@ -Poseidon.Contributor
poseidon-hs-1.4.0.1: 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.4.0.2: 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 a45a2ae8..7f789271 100644 --- a/Poseidon-EntityTypes.html +++ b/Poseidon-EntityTypes.html @@ -1,2 +1,2 @@ -Poseidon.EntityTypes
poseidon-hs-1.4.0.1: 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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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))))

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

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.4.0.2: 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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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))))

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

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 :: (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m EntitiesList Source #

this returns a list of entities which could not be found

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

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

resolveEntityIndices :: (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m [Int] Source #

this finds the indices of all individuals from an individual-list which are specified in the Entity list

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 a1dbb2f2..44f7ce49 100644 --- a/Poseidon-GenotypeData.html +++ b/Poseidon-GenotypeData.html @@ -1 +1 @@ -Poseidon.GenotypeData
poseidon-hs-1.4.0.1: 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.4.0.2: 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 1fd301f6..ef1ecc1f 100644 --- a/Poseidon-Janno.html +++ b/Poseidon-Janno.html @@ -1,3 +1,3 @@ -Poseidon.Janno
poseidon-hs-1.4.0.1: 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.4.0.2: 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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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

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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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"

\ No newline at end of file + 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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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

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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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"

\ No newline at end of file diff --git a/Poseidon-MathHelpers.html b/Poseidon-MathHelpers.html index 07e3ef13..0d746f5b 100644 --- a/Poseidon-MathHelpers.html +++ b/Poseidon-MathHelpers.html @@ -1,2 +1,2 @@ -Poseidon.MathHelpers
poseidon-hs-1.4.0.1: 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.4.0.2: 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 0537ffbd..78ca20f4 100644 --- a/Poseidon-Package.html +++ b/Poseidon-Package.html @@ -1,4 +1,4 @@ -Poseidon.Package
poseidon-hs-1.4.0.1: 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

type Rep PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

type Rep PoseidonYamlStruct = D1 ('MetaData "PoseidonYamlStruct" "Poseidon.Package" "poseidon-hs-1.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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 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 Int 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 String

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

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.4.0.2: 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

type Rep PoseidonYamlStruct Source # 
Instance details

Defined in Poseidon.Package

type Rep PoseidonYamlStruct = D1 ('MetaData "PoseidonYamlStruct" "Poseidon.Package" "poseidon-hs-1.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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 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 Int 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 String

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

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 b800ae93..4d0a1dd0 100644 --- a/Poseidon-PoseidonVersion.html +++ b/Poseidon-PoseidonVersion.html @@ -1 +1 @@ -Poseidon.PoseidonVersion

poseidon-hs-1.4.0.1: 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.4.0.2: 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 c90104b2..b82d1146 100644 --- a/Poseidon-SequencingSource.html +++ b/Poseidon-SequencingSource.html @@ -1,3 +1,3 @@ -Poseidon.SequencingSource
poseidon-hs-1.4.0.1: 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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.2: 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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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
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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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 diff --git a/Poseidon-ServerClient.html b/Poseidon-ServerClient.html index c7cfe3d1..f138fb92 100644 --- a/Poseidon-ServerClient.html +++ b/Poseidon-ServerClient.html @@ -1 +1 @@ -Poseidon.ServerClient
poseidon-hs-1.4.0.1: 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.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" '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.4.0.2: 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.4.0.2-EXsjEmgWnDzKk833OgETgL" '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 diff --git a/Poseidon-Utils.html b/Poseidon-Utils.html index 9943d3e9..e2b2d7fa 100644 --- a/Poseidon-Utils.html +++ b/Poseidon-Utils.html @@ -1 +1 @@ -Poseidon.Utils
poseidon-hs-1.4.0.1: 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 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 Int 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 String

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

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 #

\ No newline at end of file +Poseidon.Utils
poseidon-hs-1.4.0.2: 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 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 Int 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 String

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

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 #

\ No newline at end of file diff --git a/Poseidon-Version.html b/Poseidon-Version.html index 808a6f34..19f1b278 100644 --- a/Poseidon-Version.html +++ b/Poseidon-Version.html @@ -1 +1 @@ -Poseidon.Version
poseidon-hs-1.4.0.1: 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.4.0.2: 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 e75cf270..2d992e0c 100644 --- a/doc-index-43.html +++ b/doc-index-43.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - +)
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - +)
poseidon-hs-1.4.0.2: 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 d61c6448..1e1a3f9e 100644 --- a/doc-index-95.html +++ b/doc-index-95.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - _)
poseidon-hs-1.4.0.1: 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
_envInputPlinkModePoseidon.Utils
_envLogActionPoseidon.Utils
_envTestModePoseidon.Utils
_forgeEntityInputPoseidon.CLI.Forge
_forgeGenoSourcesPoseidon.CLI.Forge
_forgeIntersectPoseidon.CLI.Forge
_forgeOutFormatPoseidon.CLI.Forge
_forgeOutMinimalPoseidon.CLI.Forge
_forgeOutOnlyGenoPoseidon.CLI.Forge
_forgeOutPacNamePoseidon.CLI.Forge
_forgeOutPacPathPoseidon.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
_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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - _)
poseidon-hs-1.4.0.2: 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
_envInputPlinkModePoseidon.Utils
_envLogActionPoseidon.Utils
_envTestModePoseidon.Utils
_forgeEntityInputPoseidon.CLI.Forge
_forgeGenoSourcesPoseidon.CLI.Forge
_forgeIntersectPoseidon.CLI.Forge
_forgeOutFormatPoseidon.CLI.Forge
_forgeOutMinimalPoseidon.CLI.Forge
_forgeOutOnlyGenoPoseidon.CLI.Forge
_forgeOutPacNamePoseidon.CLI.Forge
_forgeOutPacPathPoseidon.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
_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 2c4bea7b..61dedcc4 100644 --- a/doc-index-A.html +++ b/doc-index-A.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - A)
poseidon-hs-1.4.0.1: 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
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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - A)
poseidon-hs-1.4.0.2: 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
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 diff --git a/doc-index-All.html b/doc-index-All.html index 4d794fe8..94d74945 100644 --- a/doc-index-All.html +++ b/doc-index-All.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index)
poseidon-hs-1.4.0.1: 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
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.CLI.OptparseApplicativeParsers
CharInfPoseidon.CLI.OptparseApplicativeParsers
checkAtLeastOnePoseidonIDPoseidon.SequencingSource
checkFilePoseidon.Utils
checkIfAllEntitiesExistPoseidon.EntityTypes
checkRunsUniquePoseidon.SequencingSource
checkSeqSourceConsistencyPoseidon.SequencingSource
checkSeqSourceRowConsistencyPoseidon.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
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
countPresencePoseidon.CLI.Survey
CreateChronPoseidon.CLI.Chronicle
createMinimalJannoPoseidon.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
dummyContributorPoseidon.Package
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
envInputPlinkModePoseidon.Utils
envLogActionPoseidon.Utils
EqualLocalRemotePoseidon.CLI.Fetch
ErrorLengthPoseidon.CLI.OptparseApplicativeParsers
ExcludePoseidon.EntityTypes
explicitNAPoseidon.Janno
ExtendedIndividualInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.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
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
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
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
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
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
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
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
makeMD5Poseidon.SequencingSource
makePacNameAndVersionPoseidon.EntityTypes
makePseudoPackageFromGenotypeDataPoseidon.Package
makeSimpleDatePoseidon.SequencingSource
makeSSFLibraryBuiltPoseidon.SequencingSource
makeSSFUDGPoseidon.SequencingSource
MalePoseidon.Janno
maybeShowPoseidon.CLI.Summarise
maybeShowStringPoseidon.CLI.Summarise
MD5 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
meanAndSdIntegerPoseidon.MathHelpers
meanAndSdRoundToPoseidon.MathHelpers
minimalRequiredClientVersionPoseidon.PoseidonVersion
MinorPoseidon.Version
MinusPoseidon.Janno
MixedPoseidon.Janno
MixedSSDSPoseidon.Janno
ModernPoseidon.Janno
newMinimalPackageTemplatePoseidon.Package
newPackageTemplatePoseidon.Package
NoLogPoseidon.Utils
noLogPoseidon.Utils
NotLocalPoseidon.CLI.Fetch
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
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
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
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
parseMinimalOutputPoseidon.CLI.OptparseApplicativeParsers
parseNoChecksumUpdatePoseidon.CLI.OptparseApplicativeParsers
parseNoExitCodePoseidon.CLI.OptparseApplicativeParsers
parseOnlyLatestPoseidon.CLI.OptparseApplicativeParsers
parseOutGenotypeFormatPoseidon.CLI.OptparseApplicativeParsers
parseOutOnlyGenoPoseidon.CLI.OptparseApplicativeParsers
parseOutPackagePathPoseidon.CLI.OptparseApplicativeParsers
parseOutputPlinkPopModePoseidon.CLI.OptparseApplicativeParsers
parsePackageWisePoseidon.CLI.OptparseApplicativeParsers
parsePortPoseidon.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
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
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
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
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
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
_envInputPlinkModePoseidon.Utils
_envLogActionPoseidon.Utils
_envTestModePoseidon.Utils
_forgeEntityInputPoseidon.CLI.Forge
_forgeGenoSourcesPoseidon.CLI.Forge
_forgeIntersectPoseidon.CLI.Forge
_forgeOutFormatPoseidon.CLI.Forge
_forgeOutMinimalPoseidon.CLI.Forge
_forgeOutOnlyGenoPoseidon.CLI.Forge
_forgeOutPacNamePoseidon.CLI.Forge
_forgeOutPacPathPoseidon.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
_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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index)
poseidon-hs-1.4.0.2: 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
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.CLI.OptparseApplicativeParsers
CharInfPoseidon.CLI.OptparseApplicativeParsers
checkAtLeastOnePoseidonIDPoseidon.SequencingSource
checkFilePoseidon.Utils
checkIfAllEntitiesExistPoseidon.EntityTypes
checkRunsUniquePoseidon.SequencingSource
checkSeqSourceConsistencyPoseidon.SequencingSource
checkSeqSourceRowConsistencyPoseidon.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
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
countPresencePoseidon.CLI.Survey
CreateChronPoseidon.CLI.Chronicle
createMinimalJannoPoseidon.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
dummyContributorPoseidon.Package
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
envInputPlinkModePoseidon.Utils
envLogActionPoseidon.Utils
EqualLocalRemotePoseidon.CLI.Fetch
ErrorLengthPoseidon.CLI.OptparseApplicativeParsers
ExcludePoseidon.EntityTypes
explicitNAPoseidon.Janno
ExtendedIndividualInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.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
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
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
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
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
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
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
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
makeMD5Poseidon.SequencingSource
makePacNameAndVersionPoseidon.EntityTypes
makePseudoPackageFromGenotypeDataPoseidon.Package
makeSimpleDatePoseidon.SequencingSource
makeSSFLibraryBuiltPoseidon.SequencingSource
makeSSFUDGPoseidon.SequencingSource
MalePoseidon.Janno
maybeShowPoseidon.CLI.Summarise
maybeShowStringPoseidon.CLI.Summarise
MD5 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
meanAndSdIntegerPoseidon.MathHelpers
meanAndSdRoundToPoseidon.MathHelpers
minimalRequiredClientVersionPoseidon.PoseidonVersion
MinorPoseidon.Version
MinusPoseidon.Janno
MixedPoseidon.Janno
MixedSSDSPoseidon.Janno
ModernPoseidon.Janno
newMinimalPackageTemplatePoseidon.Package
newPackageTemplatePoseidon.Package
NoLogPoseidon.Utils
noLogPoseidon.Utils
NotLocalPoseidon.CLI.Fetch
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
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
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
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
parseMinimalOutputPoseidon.CLI.OptparseApplicativeParsers
parseNoChecksumUpdatePoseidon.CLI.OptparseApplicativeParsers
parseNoExitCodePoseidon.CLI.OptparseApplicativeParsers
parseOnlyLatestPoseidon.CLI.OptparseApplicativeParsers
parseOutGenotypeFormatPoseidon.CLI.OptparseApplicativeParsers
parseOutOnlyGenoPoseidon.CLI.OptparseApplicativeParsers
parseOutPackagePathPoseidon.CLI.OptparseApplicativeParsers
parseOutputPlinkPopModePoseidon.CLI.OptparseApplicativeParsers
parsePackageWisePoseidon.CLI.OptparseApplicativeParsers
parsePortPoseidon.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
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
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
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
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
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
_envInputPlinkModePoseidon.Utils
_envLogActionPoseidon.Utils
_envTestModePoseidon.Utils
_forgeEntityInputPoseidon.CLI.Forge
_forgeGenoSourcesPoseidon.CLI.Forge
_forgeIntersectPoseidon.CLI.Forge
_forgeOutFormatPoseidon.CLI.Forge
_forgeOutMinimalPoseidon.CLI.Forge
_forgeOutOnlyGenoPoseidon.CLI.Forge
_forgeOutPacNamePoseidon.CLI.Forge
_forgeOutPacPathPoseidon.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
_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 9487b644..b367c613 100644 --- a/doc-index-B.html +++ b/doc-index-B.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - B)
poseidon-hs-1.4.0.1: 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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - B)
poseidon-hs-1.4.0.2: 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 diff --git a/doc-index-C.html b/doc-index-C.html index a85bac2c..7c57e523 100644 --- a/doc-index-C.html +++ b/doc-index-C.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - C)
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data

Index - C

C14Poseidon.Janno
CharCountPoseidon.CLI.OptparseApplicativeParsers
CharInfPoseidon.CLI.OptparseApplicativeParsers
checkAtLeastOnePoseidonIDPoseidon.SequencingSource
checkFilePoseidon.Utils
checkIfAllEntitiesExistPoseidon.EntityTypes
checkRunsUniquePoseidon.SequencingSource
checkSeqSourceConsistencyPoseidon.SequencingSource
checkSeqSourceRowConsistencyPoseidon.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
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
countPresencePoseidon.CLI.Survey
CreateChronPoseidon.CLI.Chronicle
createMinimalJannoPoseidon.Janno
CsvNamedRecord 
1 (Type/Class)Poseidon.Janno
2 (Data Constructor)Poseidon.Janno
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - C)
poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data

Index - C

C14Poseidon.Janno
CharCountPoseidon.CLI.OptparseApplicativeParsers
CharInfPoseidon.CLI.OptparseApplicativeParsers
checkAtLeastOnePoseidonIDPoseidon.SequencingSource
checkFilePoseidon.Utils
checkIfAllEntitiesExistPoseidon.EntityTypes
checkRunsUniquePoseidon.SequencingSource
checkSeqSourceConsistencyPoseidon.SequencingSource
checkSeqSourceRowConsistencyPoseidon.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
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
countPresencePoseidon.CLI.Survey
CreateChronPoseidon.CLI.Chronicle
createMinimalJannoPoseidon.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 7caafe6d..f2410ec1 100644 --- a/doc-index-D.html +++ b/doc-index-D.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - D)
poseidon-hs-1.4.0.1: 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
dummyContributorPoseidon.Package
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - D)
poseidon-hs-1.4.0.2: 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
dummyContributorPoseidon.Package
\ No newline at end of file diff --git a/doc-index-E.html b/doc-index-E.html index 59689e7f..a0e7194a 100644 --- a/doc-index-E.html +++ b/doc-index-E.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - E)
poseidon-hs-1.4.0.1: 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
envInputPlinkModePoseidon.Utils
envLogActionPoseidon.Utils
EqualLocalRemotePoseidon.CLI.Fetch
ErrorLengthPoseidon.CLI.OptparseApplicativeParsers
ExcludePoseidon.EntityTypes
explicitNAPoseidon.Janno
ExtendedIndividualInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.ServerClient
extIndInfoAddColsPoseidon.ServerClient
extIndInfoGroupsPoseidon.ServerClient
extIndInfoIsLatestPoseidon.ServerClient
extIndInfoNamePoseidon.ServerClient
extIndInfoPacPoseidon.ServerClient
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - E)
poseidon-hs-1.4.0.2: 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
envInputPlinkModePoseidon.Utils
envLogActionPoseidon.Utils
EqualLocalRemotePoseidon.CLI.Fetch
ErrorLengthPoseidon.CLI.OptparseApplicativeParsers
ExcludePoseidon.EntityTypes
explicitNAPoseidon.Janno
ExtendedIndividualInfo 
1 (Type/Class)Poseidon.ServerClient
2 (Data Constructor)Poseidon.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 669b4ab6..7222100e 100644 --- a/doc-index-F.html +++ b/doc-index-F.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - F)
poseidon-hs-1.4.0.1: 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
formatPoseidon.GenotypeData
frequencyPoseidon.CLI.Summarise
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - F)
poseidon-hs-1.4.0.2: 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
formatPoseidon.GenotypeData
frequencyPoseidon.CLI.Summarise
\ No newline at end of file diff --git a/doc-index-G.html b/doc-index-G.html index 141e065e..6b6e1b8c 100644 --- a/doc-index-G.html +++ b/doc-index-G.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - G)
poseidon-hs-1.4.0.1: 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
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
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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - G)
poseidon-hs-1.4.0.2: 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
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
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 diff --git a/doc-index-H.html b/doc-index-H.html index c0596e3c..620dab04 100644 --- a/doc-index-H.html +++ b/doc-index-H.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - H)
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - H)
poseidon-hs-1.4.0.2: 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 d69f9c83..220df818 100644 --- a/doc-index-I.html +++ b/doc-index-I.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - I)
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data

Index - I

IdenticalPoseidon.Janno
IncludePoseidon.EntityTypes
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
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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - I)
poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data

Index - I

IdenticalPoseidon.Janno
IncludePoseidon.EntityTypes
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
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 diff --git a/doc-index-J.html b/doc-index-J.html index 065ef4c2..dff35390 100644 --- a/doc-index-J.html +++ b/doc-index-J.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - J)
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data

Index - J

jAdditionalColumnsPoseidon.Janno
jAlternativeIDsPoseidon.Janno
JannoCaptureTypePoseidon.Janno
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
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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - J)
poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data

Index - J

jAdditionalColumnsPoseidon.Janno
jAlternativeIDsPoseidon.Janno
JannoCaptureTypePoseidon.Janno
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
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 diff --git a/doc-index-L.html b/doc-index-L.html index fe5d0c83..05f45102 100644 --- a/doc-index-L.html +++ b/doc-index-L.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - L)
poseidon-hs-1.4.0.1: 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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - L)
poseidon-hs-1.4.0.2: 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 diff --git a/doc-index-M.html b/doc-index-M.html index 630ff8b1..7675f343 100644 --- a/doc-index-M.html +++ b/doc-index-M.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - M)
poseidon-hs-1.4.0.1: 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
makeMD5Poseidon.SequencingSource
makePacNameAndVersionPoseidon.EntityTypes
makePseudoPackageFromGenotypeDataPoseidon.Package
makeSimpleDatePoseidon.SequencingSource
makeSSFLibraryBuiltPoseidon.SequencingSource
makeSSFUDGPoseidon.SequencingSource
MalePoseidon.Janno
maybeShowPoseidon.CLI.Summarise
maybeShowStringPoseidon.CLI.Summarise
MD5 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
meanAndSdIntegerPoseidon.MathHelpers
meanAndSdRoundToPoseidon.MathHelpers
minimalRequiredClientVersionPoseidon.PoseidonVersion
MinorPoseidon.Version
MinusPoseidon.Janno
MixedPoseidon.Janno
MixedSSDSPoseidon.Janno
ModernPoseidon.Janno
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - M)
poseidon-hs-1.4.0.2: 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
makeMD5Poseidon.SequencingSource
makePacNameAndVersionPoseidon.EntityTypes
makePseudoPackageFromGenotypeDataPoseidon.Package
makeSimpleDatePoseidon.SequencingSource
makeSSFLibraryBuiltPoseidon.SequencingSource
makeSSFUDGPoseidon.SequencingSource
MalePoseidon.Janno
maybeShowPoseidon.CLI.Summarise
maybeShowStringPoseidon.CLI.Summarise
MD5 
1 (Type/Class)Poseidon.SequencingSource
2 (Data Constructor)Poseidon.SequencingSource
meanAndSdIntegerPoseidon.MathHelpers
meanAndSdRoundToPoseidon.MathHelpers
minimalRequiredClientVersionPoseidon.PoseidonVersion
MinorPoseidon.Version
MinusPoseidon.Janno
MixedPoseidon.Janno
MixedSSDSPoseidon.Janno
ModernPoseidon.Janno
\ No newline at end of file diff --git a/doc-index-N.html b/doc-index-N.html index d3171fc7..88a6922e 100644 --- a/doc-index-N.html +++ b/doc-index-N.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - N)
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - N)
poseidon-hs-1.4.0.2: 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 121edc45..adfe91ad 100644 --- a/doc-index-O.html +++ b/doc-index-O.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - O)
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data

Index - O

ORCID 
1 (Type/Class)Poseidon.Contributor
2 (Data Constructor)Poseidon.Contributor
OtherPoseidon.Janno
OtherCapturePoseidon.Janno
OtherDegreePoseidon.Janno
OtherIDPoseidon.Janno
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - O)
poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data

Index - O

ORCID 
1 (Type/Class)Poseidon.Contributor
2 (Data Constructor)Poseidon.Contributor
OtherPoseidon.Janno
OtherCapturePoseidon.Janno
OtherDegreePoseidon.Janno
OtherIDPoseidon.Janno
\ No newline at end of file diff --git a/doc-index-P.html b/doc-index-P.html index 434aa581..5ff27ca9 100644 --- a/doc-index-P.html +++ b/doc-index-P.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - P)
poseidon-hs-1.4.0.1: 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
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
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
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
parseMinimalOutputPoseidon.CLI.OptparseApplicativeParsers
parseNoChecksumUpdatePoseidon.CLI.OptparseApplicativeParsers
parseNoExitCodePoseidon.CLI.OptparseApplicativeParsers
parseOnlyLatestPoseidon.CLI.OptparseApplicativeParsers
parseOutGenotypeFormatPoseidon.CLI.OptparseApplicativeParsers
parseOutOnlyGenoPoseidon.CLI.OptparseApplicativeParsers
parseOutPackagePathPoseidon.CLI.OptparseApplicativeParsers
parseOutputPlinkPopModePoseidon.CLI.OptparseApplicativeParsers
parsePackageWisePoseidon.CLI.OptparseApplicativeParsers
parsePortPoseidon.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
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
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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - P)
poseidon-hs-1.4.0.2: 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
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
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
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
parseMinimalOutputPoseidon.CLI.OptparseApplicativeParsers
parseNoChecksumUpdatePoseidon.CLI.OptparseApplicativeParsers
parseNoExitCodePoseidon.CLI.OptparseApplicativeParsers
parseOnlyLatestPoseidon.CLI.OptparseApplicativeParsers
parseOutGenotypeFormatPoseidon.CLI.OptparseApplicativeParsers
parseOutOnlyGenoPoseidon.CLI.OptparseApplicativeParsers
parseOutPackagePathPoseidon.CLI.OptparseApplicativeParsers
parseOutputPlinkPopModePoseidon.CLI.OptparseApplicativeParsers
parsePackageWisePoseidon.CLI.OptparseApplicativeParsers
parsePortPoseidon.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
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
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 57b5d715..144227ab 100644 --- a/doc-index-Q.html +++ b/doc-index-Q.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - Q)
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - Q)
poseidon-hs-1.4.0.2: 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 c5b1953a..09b27476 100644 --- a/doc-index-R.html +++ b/doc-index-R.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - R)
poseidon-hs-1.4.0.1: 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
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
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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - R)
poseidon-hs-1.4.0.2: 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
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
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 ae422f14..753b0117 100644 --- a/doc-index-S.html +++ b/doc-index-S.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - S)
poseidon-hs-1.4.0.1: 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
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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - S)
poseidon-hs-1.4.0.2: 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
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 diff --git a/doc-index-T.html b/doc-index-T.html index 35d4db63..7423748c 100644 --- a/doc-index-T.html +++ b/doc-index-T.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - T)
poseidon-hs-1.4.0.1: 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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - T)
poseidon-hs-1.4.0.2: 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 diff --git a/doc-index-U.html b/doc-index-U.html index f084d9e7..16824544 100644 --- a/doc-index-U.html +++ b/doc-index-U.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - U)
poseidon-hs-1.4.0.1: 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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - U)
poseidon-hs-1.4.0.2: 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 diff --git a/doc-index-V.html b/doc-index-V.html index 829eef6c..499dca7e 100644 --- a/doc-index-V.html +++ b/doc-index-V.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - V)
poseidon-hs-1.4.0.1: 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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - V)
poseidon-hs-1.4.0.2: 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 31c3dbb1..91d288e1 100644 --- a/doc-index-W.html +++ b/doc-index-W.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - W)
poseidon-hs-1.4.0.1: 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.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - W)
poseidon-hs-1.4.0.2: 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 584fd015..08d61092 100644 --- a/doc-index-Z.html +++ b/doc-index-Z.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index - Z)
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data (Index - Z)
poseidon-hs-1.4.0.2: 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 fab8f45d..9ac561c2 100644 --- a/doc-index.html +++ b/doc-index.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data (Index)
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data (Index)
poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data
\ No newline at end of file diff --git a/index.html b/index.html index d990c352..7a514c0e 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data
poseidon-hs-1.4.0.1: A package with tools for working with Poseidon Genotype Data
\ No newline at end of file +poseidon-hs-1.4.0.2: A package with tools for working with Poseidon Genotype Data
poseidon-hs-1.4.0.2: 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 2ff6cde0d9bc419edebf152331f9adc68a501fa0..7d7171ac29f8f947eda5b457d08098e49f10e59a 100644 GIT binary patch delta 39 ucmdnk#=NnOc|&c5gpsamL~)jDZhCm0OO #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,20 +38,20 @@ 1,Int 4,Int 0,Int -1] [] +2] [] 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 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 @@ -63,16 +63,16 @@ "/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/a3264da055cd8aa4551a0827f194fb97c2c314b5d590419118b249ca92d46b7b/9.2.7/bin" libdir :: String libdir = String -"/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/a3264da055cd8aa4551a0827f194fb97c2c314b5d590419118b249ca92d46b7b/9.2.7/lib/x86_64-linux-ghc-9.2.7/poseidon-hs-1.4.0.1-B0lcGsd1Z7cDZBvYcl6VJs" +"/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/a3264da055cd8aa4551a0827f194fb97c2c314b5d590419118b249ca92d46b7b/9.2.7/lib/x86_64-linux-ghc-9.2.7/poseidon-hs-1.4.0.2-EXsjEmgWnDzKk833OgETgL" dynlibdir :: String dynlibdir = String "/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/a3264da055cd8aa4551a0827f194fb97c2c314b5d590419118b249ca92d46b7b/9.2.7/lib/x86_64-linux-ghc-9.2.7" datadir :: String datadir = String -"/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/a3264da055cd8aa4551a0827f194fb97c2c314b5d590419118b249ca92d46b7b/9.2.7/share/x86_64-linux-ghc-9.2.7/poseidon-hs-1.4.0.1" +"/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/a3264da055cd8aa4551a0827f194fb97c2c314b5d590419118b249ca92d46b7b/9.2.7/share/x86_64-linux-ghc-9.2.7/poseidon-hs-1.4.0.2" libexecdir :: String libexecdir = String -"/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/a3264da055cd8aa4551a0827f194fb97c2c314b5d590419118b249ca92d46b7b/9.2.7/libexec/x86_64-linux-ghc-9.2.7/poseidon-hs-1.4.0.1" +"/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/a3264da055cd8aa4551a0827f194fb97c2c314b5d590419118b249ca92d46b7b/9.2.7/libexec/x86_64-linux-ghc-9.2.7/poseidon-hs-1.4.0.2" sysconfdir :: String sysconfdir = String "/home/runner/work/poseidon-hs/poseidon-hs/.stack-work/install/x86_64-linux-tinfo6/a3264da055cd8aa4551a0827f194fb97c2c314b5d590419118b249ca92d46b7b/9.2.7/etc" @@ -132,34 +132,34 @@ 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 (forall a. [a] -> a List.last String -dir) = String -dir forall a. [a] -> [a] -> [a] +dir) = String +dir forall a. [a] -> [a] -> [a] ++ String -fname +fname | Bool otherwise = String -dir forall a. [a] -> [a] -> [a] +dir forall a. [a] -> [a] -> [a] ++ Char pathSeparator forall a. a -> [a] -> [a] : String -fname +fname pathSeparator :: Char pathSeparator :: Char @@ -168,9 +168,9 @@ isPathSeparator :: Char -> Bool isPathSeparator :: Char -> Bool -isPathSeparator Char -c = Char -c forall a. Eq a => a -> a -> Bool +isPathSeparator Char +c = Char +c forall a. Eq a => a -> a -> Bool == Char '/' \ No newline at end of file diff --git a/src/Poseidon.BibFile.html b/src/Poseidon.BibFile.html index 408f18ef..49de9867 100644 --- a/src/Poseidon.BibFile.html +++ b/src/Poseidon.BibFile.html @@ -24,7 +24,7 @@ , BibEntry -> [(String, String)] bibEntryFields :: [(String, String)] } - deriving (Int -> BibEntry -> ShowS + deriving (Int -> BibEntry -> ShowS [BibEntry] -> ShowS BibEntry -> String forall a. @@ -37,35 +37,35 @@ $cshowsPrec :: Int -> 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 forall a. Eq a => a -> a -> Bool +t1 forall a. Eq a => a -> a -> Bool == String -t2) Bool -> Bool -> Bool +t2) Bool -> Bool -> Bool && (String -i1 forall a. Eq a => a -> a -> Bool +i1 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 +_ String +i1 [(String, String)] +_) compare :: BibEntry -> BibEntry -> Ordering `compare` (BibEntry String -_ String -i2 [(String, String)] +_ String +i2 [(String, String)] _) = String -i1 forall a. Ord a => a -> a -> Ordering +i1 forall a. Ord a => a -> a -> Ordering `compare` String -i2 +i2 type BibTeX = [BibEntry] @@ -112,27 +112,27 @@ readBibTeXFile :: FilePath -> IO BibTeX readBibTeXFile :: String -> IO [BibEntry] -readBibTeXFile String -bibPath = do - Either ParseError [BibEntry] -res <- forall a. Parser a -> String -> IO (Either ParseError a) +readBibTeXFile String +bibPath = do + Either ParseError [BibEntry] +res <- 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 -> forall e a. Exception e => e -> IO a +res of + Left ParseError +err -> forall e a. Exception e => e -> IO a throwIO forall a b. (a -> b) -> a -> b $ String -> String -> PoseidonException PoseidonBibTeXException String -bibPath (forall a. Show a => a -> String +bibPath (forall a. Show a => a -> String show ParseError -err) - Right [BibEntry] -res_ -> forall (m :: * -> *) a. Monad m => a -> m a +err) + Right [BibEntry] +res_ -> 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" @@ -142,65 +142,65 @@ writeBibTeXFile :: FilePath -> BibTeX -> IO () writeBibTeXFile :: String -> [BibEntry] -> IO () -writeBibTeXFile String -path [BibEntry] -entries = forall r. String -> IOMode -> (Handle -> IO r) -> IO r +writeBibTeXFile String +path [BibEntry] +entries = forall r. String -> IOMode -> (Handle -> IO r) -> IO r withFile String -path IOMode +path IOMode WriteMode forall a b. (a -> b) -> a -> b -$ \Handle -outH -> do +$ \Handle +outH -> do forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [BibEntry] -entries forall a b. (a -> b) -> a -> b -$ \BibEntry -bibEntry -> do - let entryString :: String -entryString = BibEntry -> String -writeEntry BibEntry -bibEntry +entries forall a b. (a -> b) -> a -> b +$ \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 " " forall a. [a] -> [a] -> [a] ++ String -name forall a. [a] -> [a] -> [a] +name forall a. [a] -> [a] -> [a] ++ String " = {" forall a. [a] -> [a] -> [a] ++ String -value_ forall a. [a] -> [a] -> [a] +value_ forall a. [a] -> [a] -> [a] ++ String "},\n" in String "@" forall a. [a] -> [a] -> [a] ++ String -entryType forall a. [a] -> [a] -> [a] +entryType forall a. [a] -> [a] -> [a] ++ String "{" forall a. [a] -> [a] -> [a] ++ String -bibId forall a. [a] -> [a] -> [a] +bibId forall a. [a] -> [a] -> [a] ++ String ",\n" forall a. [a] -> [a] -> [a] ++ forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (String, String) -> String -formatItem [(String, String)] -items forall a. [a] -> [a] -> [a] +formatItem [(String, String)] +items forall a. [a] -> [a] -> [a] ++ String "}\n" @@ -228,8 +228,8 @@ bibEntryParser :: Parser BibEntry bibEntryParser :: Parser BibEntry bibEntryParser = - do String -entryType <- forall s (m :: * -> *) u. + do String +entryType <- forall s (m :: * -> *) u. Stream s m Char => Char -> ParsecT s u m Char char Char @@ -244,7 +244,7 @@ (a1 -> a2 -> r) -> m a1 -> m a2 -> m r liftM2 (String -> String -> [(String, String)] -> BibEntry BibEntry String -entryType) +entryType) (forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m a try Parser String bibIdentifier) @@ -257,14 +257,14 @@ assignment forall st. CharParser st String comma) -identifier :: CharParser st String +identifier :: CharParser st String identifier :: forall st. CharParser st String identifier = forall s u (m :: * -> *). GenTokenParser s u m -> ParsecT s u m String T.identifier forall st. TokenParser st lexer -lexer :: T.TokenParser st +lexer :: T.TokenParser st lexer :: forall st. TokenParser st lexer = forall s (m :: * -> *) u. @@ -274,17 +274,17 @@ $ forall st. LanguageDef st emptyDef { commentLine :: String -T.commentLine = String +T.commentLine = String "%", identStart :: ParsecT String st Identity Char -T.identStart = forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char +T.identStart = forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char alphaNum, identLetter :: ParsecT String st Identity Char -T.identLetter = forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char +T.identLetter = forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char 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 = forall s u (m :: * -> *). GenTokenParser s u m @@ -317,7 +317,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 = forall s u (m :: * -> *). GenTokenParser s u m @@ -339,7 +339,7 @@ >> Parser String value) -equals :: CharParser st String +equals :: CharParser st String equals :: forall st. CharParser st String equals = forall s u (m :: * -> *). GenTokenParser s u m -> String -> ParsecT s u m String @@ -391,31 +391,31 @@ texSequence :: Char -> Parser String texSequence :: Char -> Parser String -texSequence Char -closeChar = +texSequence Char +closeChar = forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> 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 = 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 forall a. a -> [a] -> [a] +liftM3 (\Char +open String +body Char +close -> Char +open forall a. a -> [a] -> [a] : String -body forall a. [a] -> [a] -> [a] +body forall a. [a] -> [a] -> [a] ++ [Char -close]) +close]) (forall s (m :: * -> *) u. Stream s m Char => Char -> ParsecT s u m Char @@ -454,10 +454,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 = forall s u (m :: * -> *). GenTokenParser s u m -> ParsecT s u m String diff --git a/src/Poseidon.CLI.Chronicle.html b/src/Poseidon.CLI.Chronicle.html index 9e24b1e8..11488c94 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 2905194b..99837e1b 100644 --- a/src/Poseidon.CLI.Fetch.html +++ b/src/Poseidon.CLI.Fetch.html @@ -78,20 +78,20 @@ -- | 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 = forall a. [a] -> a + let downloadDir :: [Char] +downloadDir = forall a. [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 () @@ -99,20 +99,20 @@ $ [Char] "Download directory (will be created if missing): " forall a. [a] -> [a] -> [a] ++ [Char] -downloadDir +downloadDir forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ Bool -> [Char] -> IO () createDirectoryIfMissing Bool True [Char] -downloadDir +downloadDir -- compile entities - [PoseidonEntity] -entities <- forall (m :: * -> *) a. + [PoseidonEntity] +entities <- forall (m :: * -> *) a. (MonadIO m, EntitySpec a, Eq a) => [EntityInput a] -> m [a] readEntityInputs [EntityInput PoseidonEntity] -entityInputs +entityInputs [Char] -> PoseidonIO () logDebug [Char] "Requested entities:" @@ -123,38 +123,38 @@ logDebug forall b c a. (b -> c) -> (a -> b) -> a -> c . 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" - [IndividualInfo] -remoteIndList <- do - ApiReturnData -r <- [Char] -> Bool -> PoseidonIO ApiReturnData + [IndividualInfo] +remoteIndList <- do + ApiReturnData +r <- [Char] -> Bool -> PoseidonIO ApiReturnData processApiResponse ([Char] -remoteURL forall a. [a] -> [a] -> [a] +remoteURL forall a. [a] -> [a] -> [a] ++ [Char] "/individuals" forall a. [a] -> [a] -> [a] ++ Maybe [Char] -> [Char] qDefault Maybe [Char] -archive) Bool +archive) Bool False case ApiReturnData -r of - ApiReturnExtIndividualInfo [ExtendedIndividualInfo] -indInfo -> forall (m :: * -> *) a. Monad m => a -> m a +r of + ApiReturnExtIndividualInfo [ExtendedIndividualInfo] +indInfo -> forall (m :: * -> *) a. Monad m => a -> m a return [[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] -indInfo] +indInfo] ApiReturnData _ -> forall a. HasCallStack => [Char] -> a error [Char] @@ -164,76 +164,76 @@ -- find and report non-existent entities (throws an exception) forall a. EntitySpec a => [a] -> [IndividualInfo] -> PoseidonIO () checkIfAllEntitiesExist [PoseidonEntity] -entities [IndividualInfo] -remoteIndList +entities [IndividualInfo] +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 = forall a b. (a -> b) -> [a] -> [b] +baseDirs + let localPacs :: [PacNameAndVersion] +localPacs = forall a b. (a -> b) -> [a] -> [b] map 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 forall (t :: * -> *) a. Foldable t => t a -> Bool + [PacNameAndVersion] +desiredPacs <- if 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 forall a. [a] -> [a] -> [a] +remoteURL forall a. [a] -> [a] -> [a] ++ [Char] "/packages" forall a. [a] -> [a] -> [a] ++ Maybe [Char] -> [Char] qDefault Maybe [Char] -archive) Bool +archive) Bool True case ApiReturnData -r of - ApiReturnPackageInfo [PackageInfo] -p -> forall (m :: * -> *) a. Monad m => a -> m a +r of + ApiReturnPackageInfo [PackageInfo] +p -> forall (m :: * -> *) a. Monad m => a -> m a return [PackageInfo] -p +p ApiReturnData _ -> forall a. HasCallStack => [Char] -> a error [Char] "should not happen" - [PackageInfo] -remotePacList <- forall (m :: * -> *) a. + [PackageInfo] +remotePacList <- forall (m :: * -> *) a. Applicative m => (a -> m Bool) -> [a] -> m [a] filterM (forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [PackageInfo] -remotePacListAll) [PackageInfo] -remotePacListAll +remotePacListAll) [PackageInfo] +remotePacListAll forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion [PackageInfo] -remotePacList +remotePacList else forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m [PacNameAndVersion] determineRelevantPackages [PoseidonEntity] -entities [IndividualInfo] -remoteIndList +entities [IndividualInfo] +remoteIndList [Char] -> PoseidonIO () logDebug [Char] "Desired packages based on remote individuals list:" @@ -244,14 +244,14 @@ logDebug forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Show a => a -> [Char] show) [PacNameAndVersion] -desiredPacs +desiredPacs -- start comparison/download process [Char] -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> [Char] show (forall (t :: * -> *) a. Foldable t => t a -> Int length [PacNameAndVersion] -desiredPacs) forall a. [a] -> [a] -> [a] +desiredPacs) forall a. [a] -> [a] -> [a] ++ [Char] " requested" [Char] -> PoseidonIO () @@ -260,139 +260,139 @@ forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (forall (t :: * -> *) a. Foldable t => t a -> Bool null [PacNameAndVersion] -desiredPacs) forall a b. (a -> b) -> a -> b +desiredPacs) forall a b. (a -> b) -> a -> b $ do forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ Bool -> [Char] -> IO () createDirectoryIfMissing Bool False [Char] -tempDir +tempDir forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [PacNameAndVersion] -desiredPacs forall a b. (a -> b) -> a -> b -$ \PacNameAndVersion -pac -> do +desiredPacs forall a b. (a -> b) -> a -> b +$ \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 forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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 forall a. FromJSON a => ByteString -> Either [Char] a eitherDecode' ByteString -bs of - Left [Char] -err -> forall e a. Exception e => e -> IO a +bs of + Left [Char] +err -> forall e a. Exception e => e -> IO a throwIO forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonException PoseidonRemoteJSONParsingException [Char] -err - Right [ExtendedIndividualInfo] -pac -> forall (m :: * -> *) a. Monad m => a -> m a +err + Right [ExtendedIndividualInfo] +pac -> 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 forall a. FromJSON a => ByteString -> Either [Char] a eitherDecode' ByteString -bs of - Left [Char] -err -> forall e a. Exception e => e -> IO a +bs of + Left [Char] +err -> forall e a. Exception e => e -> IO a throwIO forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonException PoseidonRemoteJSONParsingException [Char] -err - Right [PackageInfo] -pac -> forall (m :: * -> *) a. Monad m => a -> m a +err + Right [PackageInfo] +pac -> 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 forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +desiredRemotePacTitle forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `notElem` forall a b. (a -> b) -> [a] -> [b] map forall a. HasNameAndVersion a => a -> [Char] getPacName [PacNameAndVersion] -localPacs = +localPacs = (PackageState NotLocal, [Char] -desiredRemotePacTitle, Maybe Version -desiredRemotePacVersion, [forall a. Maybe a +desiredRemotePacTitle, Maybe Version +desiredRemotePacVersion, [forall a. Maybe a Nothing]) | PacNameAndVersion -desiredRemotePac forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +desiredRemotePac 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 forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +desiredRemotePac 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 = forall a. HasCallStack => [Char] -> a error [Char] "determinePackageState: should never happen" where - localVersionsOfDesired :: [Maybe Version] -localVersionsOfDesired = forall a b. (a -> b) -> [a] -> [b] + localVersionsOfDesired :: [Maybe Version] +localVersionsOfDesired = forall a b. (a -> b) -> [a] -> [b] map forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] -filter (\PacNameAndVersion -x -> forall a. HasNameAndVersion a => a -> [Char] +filter (\PacNameAndVersion +x -> forall a. HasNameAndVersion a => a -> [Char] getPacName PacNameAndVersion -x forall a. Eq a => a -> a -> Bool +x 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] @@ -400,13 +400,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 forall a b. (a -> b) -> a -> b @@ -416,238 +416,238 @@ " x remote " forall a. [a] -> [a] -> [a] ++ Maybe Version -> [Char] printV Maybe Version -remoteV forall a. [a] -> [a] -> [a] +remoteV forall a. [a] -> [a] -> [a] ++ [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 forall a b. (a -> b) -> a -> b $ [Char] "[local " forall a. [a] -> [a] -> [a] ++ [Maybe Version] -> [Char] printVs [Maybe Version] -localVs forall a. [a] -> [a] -> [a] +localVs forall a. [a] -> [a] -> [a] ++ [Char] " = remote " forall a. [a] -> [a] -> [a] ++ Maybe Version -> [Char] printV Maybe Version -remoteV forall a. [a] -> [a] -> [a] +remoteV forall a. [a] -> [a] -> [a] ++ [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 forall a b. (a -> b) -> a -> b $ [Char] "[local " forall a. [a] -> [a] -> [a] ++ [Maybe Version] -> [Char] printVs [Maybe Version] -localVs forall a. [a] -> [a] -> [a] +localVs forall a. [a] -> [a] -> [a] ++ [Char] " < remote " forall a. [a] -> [a] -> [a] ++ Maybe Version -> [Char] printV Maybe Version -remoteV forall a. [a] -> [a] -> [a] +remoteV forall a. [a] -> [a] -> [a] ++ [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 = forall a. [a] -> [[a]] -> [a] +printVs [Maybe Version] +xs = forall a. [a] -> [[a]] -> [a] intercalate [Char] "," forall a b. (a -> b) -> a -> b $ 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 = forall a. HasNameAndVersion a => a -> [Char] +downloadAndUnzipPackage [Char] +baseDir [Char] +tempDir ArchiveEndpoint +archiveE PacNameAndVersion +pacNameAndVersion = do + let pnv :: [Char] +pnv = forall a. HasNameAndVersion a => a -> [Char] renderNameWithVersion PacNameAndVersion -pacNameAndVersion +pacNameAndVersion [Char] -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ [Char] "Downloading: " forall a. [a] -> [a] -> [a] ++ [Char] -pnv +pnv [Char] -> ArchiveEndpoint -> PacNameAndVersion -> PoseidonIO () downloadPackage [Char] -tempDir ArchiveEndpoint -archiveE PacNameAndVersion -pacNameAndVersion +tempDir ArchiveEndpoint +archiveE PacNameAndVersion +pacNameAndVersion forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ 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 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) (forall e a. Exception e => e -> IO a +outDir] Archive +archive) (forall e a. Exception e => e -> IO a throwIO forall b c a. (b -> c) -> (a -> b) -> a -> c . SomeException -> PoseidonException PoseidonUnzipException) 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + Manager +downloadManager <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ ManagerSettings -> IO Manager newManager ManagerSettings tlsManagerSettings - Request -packageRequest <- forall (m :: * -> *). MonadThrow m => [Char] -> m Request + Request +packageRequest <- forall (m :: * -> *). MonadThrow m => [Char] -> m Request parseRequest ([Char] -remoteURL forall a. [a] -> [a] -> [a] +remoteURL forall a. [a] -> [a] -> [a] ++ [Char] "/zip_file/" forall a. [a] -> [a] -> [a] ++ [Char] -pacName forall a. [a] -> [a] -> [a] +pacName 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 forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) a. MonadUnliftIO m => ResourceT m a -> m a runResourceT forall a b. (a -> b) -> a -> b $ do - Response (ConduitM () ByteString (ResourceT IO) ()) -response <- forall (m :: * -> *) i. + Response (ConduitM () ByteString (ResourceT IO) ()) +response <- forall (m :: * -> *) i. MonadResource m => Request -> Manager -> m (Response (ConduitM i ByteString m ())) http Request -packageRequest Manager -downloadManager - let fileSize :: ByteString -fileSize = forall a. a -> Maybe a -> a +packageRequest Manager +downloadManager + let fileSize :: ByteString +fileSize = forall a. a -> Maybe a -> a fromMaybe ByteString "0" forall a b. (a -> b) -> a -> b $ forall a b. Eq a => a -> [(a, b)] -> Maybe b lookup HeaderName hContentLength (forall body. Response body -> ResponseHeaders responseHeaders Response (ConduitM () ByteString (ResourceT IO) ()) -response) - let fileSizeKB :: Int -fileSizeKB = (forall a. Read a => [Char] -> a +response) + let fileSizeKB :: Int +fileSizeKB = (forall a. Read a => [Char] -> a read 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 (forall a b. (Integral a, Num b) => a -> b fromIntegral Int -fileSizeKB forall a. Fractional a => a -> a -> a +fileSizeKB forall a. Fractional a => a -> a -> a / Double 1000.0 forall a. Fractional a => a -> a -> a / Double 1000.0) forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () logWithEnv LogA -logA forall a b. (a -> b) -> a -> b +logA forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ [Char] @@ -656,21 +656,21 @@ show (Int -> Double -> Double roundTo Int 1 Double -fileSizeMB) forall a. [a] -> [a] -> [a] +fileSizeMB) forall a. [a] -> [a] -> [a] ++ [Char] "MB" forall i o (m :: * -> *) r. ConduitT i o m r -> SealedConduitT i o m r sealConduitT (forall body. Response body -> body responseBody Response (ConduitM () ByteString (ResourceT IO) ()) -response) forall (m :: * -> *) a b. +response) forall (m :: * -> *) a b. Monad m => SealedConduitT () a m () -> ConduitT a Void m b -> m b $$+- LogA -> Double -> ConduitT ByteString ByteString (ResourceT IO) () printDownloadProgress LogA -logA Double -fileSizeMB forall (m :: * -> *) a b c r. +logA Double +fileSizeMB forall (m :: * -> *) a b c r. Monad m => ConduitT a b m () -> ConduitT b c m r -> ConduitT a c m r .| @@ -678,108 +678,108 @@ MonadResource m => [Char] -> ConduitT ByteString o m () sinkFile ([Char] -outDir [Char] -> [Char] -> [Char] +outDir [Char] -> [Char] -> [Char] </> forall a. HasNameAndVersion a => a -> [Char] renderNameWithVersion PacNameAndVersion -pacNameAndVersion) +pacNameAndVersion) forall (m :: * -> *) a. Monad m => a -> m a return () printDownloadProgress :: LogA -> Double -> ConduitT B.ByteString B.ByteString (ResourceT IO) () printDownloadProgress :: LogA -> Double -> ConduitT ByteString ByteString (ResourceT IO) () -printDownloadProgress LogA -logA Double -fileSizeMB = forall {m :: * -> *}. +printDownloadProgress LogA +logA Double +fileSizeMB = 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 <- forall (m :: * -> *) i o. Monad m => ConduitT i o m (Maybe i) + loop :: Int -> Double -> ConduitT ByteString ByteString m () +loop Int +loadedB Double +loadedMB = do + Maybe ByteString +x <- forall (m :: * -> *) i o. Monad m => ConduitT i o m (Maybe i) await forall b a. b -> (a -> b) -> Maybe a -> b maybe (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_ forall a. Num a => a -> a -> a + showDownloaded :: Double -> Int -> ByteString -> ConduitT ByteString ByteString m () +showDownloaded Double +fileSizeMB_ Int +loadedB_ ByteString +x = do + let newLoadedB :: Int +newLoadedB = Int +loadedB_ 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 (forall a b. (Integral a, Num b) => a -> b fromIntegral Int -newLoadedB forall a. Fractional a => a -> a -> a +newLoadedB forall a. Fractional a => a -> a -> a / Double 1000 forall a. Fractional a => a -> a -> a / Double 1000) -- update progress counter every 5% - let newLoadedMB :: Double -newLoadedMB = if (Double -curLoadedMBforall a. Fractional a => a -> a -> a + let newLoadedMB :: Double +newLoadedMB = if (Double +curLoadedMBforall a. Fractional a => a -> a -> a /Double -fileSizeMB_ forall a. Num a => a -> a -> a +fileSizeMB_ forall a. Num a => a -> a -> a - Double -loadedMBforall a. Fractional a => a -> a -> a +loadedMBforall a. Fractional a => a -> a -> a /Double -fileSizeMB_ forall a. Ord a => a -> a -> Bool +fileSizeMB_ forall a. Ord a => a -> a -> Bool >= Double 0.05 Bool -> Bool -> Bool && -- but only at at least 200KB Double -curLoadedMB forall a. Num a => a -> a -> a +curLoadedMB forall a. Num a => a -> a -> a - Double -loadedMB forall a. Ord a => a -> a -> Bool +loadedMB forall a. Ord a => a -> a -> Bool > Double 0.2) Bool -> Bool -> Bool || -- and of course at the end of the sequence Double -curLoadedMB forall a. Eq a => a -> a -> Bool +curLoadedMB forall a. Eq a => a -> a -> Bool == Double -fileSizeMB_ +fileSizeMB_ then Double -curLoadedMB +curLoadedMB else Double -loadedMB +loadedMB forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (Double -loadedMB forall a. Eq a => a -> a -> Bool +loadedMB forall a. Eq a => a -> a -> Bool /= Double -newLoadedMB) forall a b. (a -> b) -> a -> b +newLoadedMB) 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 forall a. Fractional a => a -> a -> a +newLoadedMB forall a. Fractional a => a -> a -> a / Double -fileSizeMB_) forall a. Num a => a -> a -> a +fileSizeMB_) forall a. Num a => a -> a -> a * Double 100 forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () logWithEnv LogA -logA forall a b. (a -> b) -> a -> b +logA forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonIO () logInfo ([Char] "MB:" forall a. [a] -> [a] -> [a] @@ -787,7 +787,7 @@ padLeft Int 9 (forall a. Show a => a -> [Char] show Double -curLoadedMB) forall a. [a] -> [a] -> [a] +curLoadedMB) forall a. [a] -> [a] -> [a] ++ [Char] " " forall a. [a] -> [a] -> [a] ++ Int -> [Char] -> [Char] @@ -795,14 +795,14 @@ 5 (forall a. (PrintfArg a, Floating a) => Int -> a -> [Char] roundToStr Int 1 Double -leadedPercent) forall a. [a] -> [a] -> [a] +leadedPercent) forall a. [a] -> [a] -> [a] ++ [Char] "% ") 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 6b3373af..08ef1b4c 100644 --- a/src/Poseidon.CLI.Forge.html +++ b/src/Poseidon.CLI.Forge.html @@ -109,43 +109,43 @@ runForge :: ForgeOptions -> PoseidonIO () runForge :: ForgeOptions -> PoseidonIO () runForge ( - ForgeOptions [GenoDataSource] -genoSources - [EntityInput SignedEntity] -entityInputs Maybe [Char] -maybeSnpFile Bool -intersect_ - GenotypeFormatSpec -outFormat Bool -minimal Bool -onlyGeno [Char] -outPathRaw Maybe [Char] -maybeOutName - Bool -packageWise PlinkPopNameMode -outPlinkPopMode + ForgeOptions [GenoDataSource] +genoSources + [EntityInput SignedEntity] +entityInputs Maybe [Char] +maybeSnpFile Bool +intersect_ + GenotypeFormatSpec +outFormat Bool +minimal Bool +onlyGeno [Char] +outPathRaw Maybe [Char] +maybeOutName + Bool +packageWise PlinkPopNameMode +outPlinkPopMode ) = do -- load packages -- - [PoseidonPackage] -properPackages <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] + [PoseidonPackage] +properPackages <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions pacReadOpts forall a b. (a -> b) -> a -> b $ [GenoDataSource -> [Char] getPacBaseDirs GenoDataSource -x | x :: GenoDataSource -x@PacBaseDir {} <- [GenoDataSource] -genoSources] - [PoseidonPackage] -pseudoPackages <- forall (t :: * -> *) (m :: * -> *) a b. +x | x :: GenoDataSource +x@PacBaseDir {} <- [GenoDataSource] +genoSources] + [PoseidonPackage] +pseudoPackages <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM GenotypeDataSpec -> PoseidonIO PoseidonPackage makePseudoPackageFromGenotypeData [GenoDataSource -> GenotypeDataSpec getGenoDirect GenoDataSource -x | x :: GenoDataSource -x@GenoDirect {} <- [GenoDataSource] -genoSources] +x | x :: GenoDataSource +x@GenoDirect {} <- [GenoDataSource] +genoSources] [Char] -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ [Char] @@ -153,34 +153,34 @@ ++ forall a. Show a => a -> [Char] show (forall (t :: * -> *) a. Foldable t => t a -> Int length [PoseidonPackage] -pseudoPackages) - let allPackages :: [PoseidonPackage] -allPackages = [PoseidonPackage] -properPackages forall a. [a] -> [a] -> [a] +pseudoPackages) + let allPackages :: [PoseidonPackage] +allPackages = [PoseidonPackage] +properPackages forall a. [a] -> [a] -> [a] ++ [PoseidonPackage] -pseudoPackages +pseudoPackages -- compile entities - [SignedEntity] -entitiesUser <- forall (m :: * -> *) a. + [SignedEntity] +entitiesUser <- forall (m :: * -> *) a. (MonadIO m, EntitySpec a, Eq a) => [EntityInput a] -> m [a] readEntityInputs [EntityInput SignedEntity] -entityInputs +entityInputs - [PoseidonPackage] -allLatestPackages <- forall (m :: * -> *) a. + [PoseidonPackage] +allLatestPackages <- forall (m :: * -> *) a. Applicative m => (a -> m Bool) -> [a] -> m [a] filterM (forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [PoseidonPackage] -allPackages) [PoseidonPackage] -allPackages - [SignedEntity] -entities <- case [SignedEntity] -entitiesUser of +allPackages) [PoseidonPackage] +allPackages + [SignedEntity] +entities <- case [SignedEntity] +entitiesUser of [] -> do [Char] -> PoseidonIO () logInfo [Char] @@ -194,13 +194,13 @@ Pac forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion) [PoseidonPackage] -allLatestPackages +allLatestPackages (Include PoseidonEntity _:[SignedEntity] _) -> do forall (m :: * -> *) a. Monad m => a -> m a return [SignedEntity] -entitiesUser +entitiesUser (Exclude PoseidonEntity _:[SignedEntity] _) -> do @@ -219,9 +219,9 @@ Pac forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion) [PoseidonPackage] -allLatestPackages forall a. [a] -> [a] -> [a] +allLatestPackages forall a. [a] -> [a] -> [a] ++ [SignedEntity] -entitiesUser +entitiesUser [Char] -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ [Char] @@ -235,18 +235,18 @@ . forall a. Int -> [a] -> [a] take Int 10) [SignedEntity] -entities forall a. [a] -> [a] -> [a] +entities forall a. [a] -> [a] -> [a] ++ if forall (t :: * -> *) a. Foldable t => t a -> Int length [SignedEntity] -entities forall a. Ord a => a -> a -> Bool +entities forall a. Ord a => a -> a -> Bool > Int 10 then [Char] " and " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show (forall (t :: * -> *) a. Foldable t => t a -> Int length [SignedEntity] -entities forall a. Num a => a -> a -> a +entities forall a. Num a => a -> a -> a - Int 10) forall a. [a] -> [a] -> [a] ++ [Char] @@ -256,17 +256,17 @@ -- check if all entities can be found. This function reports an error and throws and exception forall a. EntitySpec a => [a] -> [IndividualInfo] -> PoseidonIO () checkIfAllEntitiesExist [SignedEntity] -entities ([PoseidonPackage] -> [IndividualInfo] +entities ([PoseidonPackage] -> [IndividualInfo] getJointIndividualInfo [PoseidonPackage] -allPackages) +allPackages) -- determine relevant packages - [PoseidonPackage] -relevantPackages <- forall (m :: * -> *) a. + [PoseidonPackage] +relevantPackages <- forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> [PoseidonPackage] -> m [PoseidonPackage] filterToRelevantPackages [SignedEntity] -entities [PoseidonPackage] -allPackages +entities [PoseidonPackage] +allPackages [Char] -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ (forall a. Show a => a -> [Char] @@ -274,13 +274,13 @@ . forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ [PoseidonPackage] -relevantPackages) forall a. [a] -> [a] -> [a] +relevantPackages) forall a. [a] -> [a] -> [a] ++ [Char] " packages contain data for this forging operation" forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall (t :: * -> *) a. Foldable t => t a -> Bool null [PoseidonPackage] -relevantPackages) forall a b. (a -> b) -> a -> b +relevantPackages) forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall e a. Exception e => e -> IO a @@ -288,16 +288,16 @@ PoseidonEmptyForgeException -- get all individuals from the relevant packages - let allInds :: [IndividualInfo] -allInds = [PoseidonPackage] -> [IndividualInfo] + let allInds :: [IndividualInfo] +allInds = [PoseidonPackage] -> [IndividualInfo] getJointIndividualInfo [PoseidonPackage] -relevantPackages +relevantPackages -- set entities to only packages, if --packagewise is set - let relevantEntities :: [SignedEntity] -relevantEntities = + let relevantEntities :: [SignedEntity] +relevantEntities = if Bool -packageWise +packageWise then forall a b. (a -> b) -> [a] -> [b] map (PoseidonEntity -> SignedEntity Include forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -305,135 +305,135 @@ Pac forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion) [PoseidonPackage] -relevantPackages +relevantPackages else [SignedEntity] -entities +entities -- determine indizes of relevant individuals - [Int] -relevantIndices <- forall a. + [Int] +relevantIndices <- forall a. EntitySpec a => [a] -> [IndividualInfo] -> PoseidonIO [Int] resolveUniqueEntityIndices [SignedEntity] -relevantEntities [IndividualInfo] -allInds +relevantEntities [IndividualInfo] +allInds -- collect data -- -- janno - let (JannoRows [JannoRow] -jannoRows) = [PoseidonPackage] -> JannoRows + 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 forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map ([JannoRow] -jannoRows forall a. [a] -> Int -> a +jannoRows forall a. [a] -> Int -> a !!) [Int] -relevantIndices +relevantIndices -- seqSource - let seqSourceRows :: SeqSourceRows -seqSourceRows = forall a. Monoid a => [a] -> a + let seqSourceRows :: SeqSourceRows +seqSourceRows = forall a. Monoid a => [a] -> a mconcat forall a b. (a -> b) -> a -> b $ 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 +newJanno SeqSourceRows +seqSourceRows -- bib - let bibEntries :: [BibEntry] -bibEntries = forall a. Ord a => [a] -> [a] + let bibEntries :: [BibEntry] +bibEntries = forall a. Ord a => [a] -> [a] uniqueRO forall a b. (a -> b) -> a -> b $ 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 +newJanno [BibEntry] +bibEntries -- create new package -- - let outPath :: [Char] -outPath = [Char] -> [Char] + let outPath :: [Char] +outPath = [Char] -> [Char] dropTrailingPathSeparator [Char] -outPathRaw - [Char] -outName <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +outPathRaw + [Char] +outName <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ Maybe [Char] -> [Char] -> IO [Char] determinePackageOutName Maybe [Char] -maybeOutName [Char] -outPath +maybeOutName [Char] +outPath -- create new directory [Char] -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ [Char] "Writing to directory (will be created if missing): " forall a. [a] -> [a] -> [a] ++ [Char] -outPath +outPath forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ Bool -> [Char] -> IO () createDirectoryIfMissing Bool True [Char] -outPath +outPath -- compile genotype data structure - let ([Char] -outInd, [Char] -outSnp, [Char] -outGeno) = case GenotypeFormatSpec -outFormat of + 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") -- output warning if any snpSet is set to Other - [SNPSetSpec] -snpSetList <- [PoseidonPackage] -> PoseidonIO [SNPSetSpec] + [SNPSetSpec] +snpSetList <- [PoseidonPackage] -> PoseidonIO [SNPSetSpec] fillMissingSnpSets [PoseidonPackage] -relevantPackages - let newSNPSet :: SNPSetSpec -newSNPSet = case +relevantPackages + let newSNPSet :: SNPSetSpec +newSNPSet = case Maybe [Char] -maybeSnpFile of +maybeSnpFile of Maybe [Char] Nothing -> [SNPSetSpec] -> Bool -> SNPSetSpec snpSetMergeList [SNPSetSpec] -snpSetList Bool -intersect_ +snpSetList Bool +intersect_ Just [Char] _ -> SNPSetSpec SNPSetOther - let genotypeData :: GenotypeDataSpec -genotypeData = GenotypeFormatSpec + let genotypeData :: GenotypeDataSpec +genotypeData = GenotypeFormatSpec -> [Char] -> Maybe [Char] -> [Char] @@ -443,29 +443,29 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -outFormat [Char] -outGeno forall a. Maybe a +outFormat [Char] +outGeno forall a. Maybe a Nothing [Char] -outSnp forall a. Maybe a +outSnp forall a. Maybe a Nothing [Char] -outInd forall a. Maybe a +outInd forall a. Maybe a Nothing (forall a. a -> Maybe a Just SNPSetSpec -newSNPSet) +newSNPSet) -- create package [Char] -> PoseidonIO () logInfo [Char] "Creating new package entity" - PoseidonPackage -pac <- if Bool -minimal + PoseidonPackage +pac <- if Bool +minimal then forall (m :: * -> *) a. Monad m => a -> m a return 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 @@ -475,25 +475,25 @@ -> PoseidonIO PoseidonPackage newPackageTemplate [Char] -outPath +outPath [Char] -outName +outName GenotypeDataSpec -genotypeData +genotypeData (forall a. a -> Maybe a Just (forall a b. b -> Either a b Right JannoRows -newJanno)) +newJanno)) SeqSourceRows -relevantSeqSourceRows +relevantSeqSourceRows [BibEntry] -relevantBibEntries +relevantBibEntries -- write new package to the file system -- -- POSEIDON.yml forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -onlyGeno forall a b. (a -> b) -> a -> b +onlyGeno forall a b. (a -> b) -> a -> b $ do [Char] -> PoseidonIO () logInfo [Char] @@ -502,17 +502,17 @@ liftIO forall a b. (a -> b) -> a -> b $ PoseidonPackage -> IO () writePoseidonPackage PoseidonPackage -pac +pac -- bib forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (Bool -minimal Bool -> Bool -> Bool +minimal Bool -> Bool -> Bool || Bool -onlyGeno Bool -> Bool -> Bool +onlyGeno Bool -> Bool -> Bool || forall (t :: * -> *) a. Foldable t => t a -> Bool null (SeqSourceRows -> [SeqSourceRow] getSeqSourceRowList SeqSourceRows -relevantSeqSourceRows)) forall a b. (a -> b) -> a -> b +relevantSeqSourceRows)) forall a b. (a -> b) -> a -> b $ do [Char] -> PoseidonIO () logInfo [Char] @@ -521,21 +521,21 @@ liftIO 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 -relevantSeqSourceRows +relevantSeqSourceRows -- bib forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (Bool -minimal Bool -> Bool -> Bool +minimal Bool -> Bool -> Bool || Bool -onlyGeno Bool -> Bool -> Bool +onlyGeno Bool -> Bool -> Bool || forall (t :: * -> *) a. Foldable t => t a -> Bool null [BibEntry] -relevantBibEntries) forall a b. (a -> b) -> a -> b +relevantBibEntries) forall a b. (a -> b) -> a -> b $ do [Char] -> PoseidonIO () logInfo [Char] @@ -544,12 +544,12 @@ liftIO 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] -relevantBibEntries +relevantBibEntries -- genotype data [Char] -> PoseidonIO () logInfo [Char] @@ -557,18 +557,18 @@ [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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + UTCTime +currentTime <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO UTCTime getCurrentTime - IOVector Int -newNrSNPs <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + IOVector Int +newNrSNPs <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall e a. Exception e => IO a -> (e -> IO a) -> IO a catch ( @@ -577,9 +577,9 @@ SafeT m r -> m r runSafeT forall a b. (a -> b) -> a -> b $ do - ([EigenstratIndEntry] -eigenstratIndEntries, Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -eigenstratProd) <- forall (m :: * -> *). + ([EigenstratIndEntry] +eigenstratIndEntries, Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +eigenstratProd) <- forall (m :: * -> *). MonadSafe m => LogA -> Bool @@ -589,33 +589,33 @@ -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) getJointGenotypeData LogA -logA Bool -intersect_ PlinkPopNameMode -inPlinkPopMode [PoseidonPackage] -relevantPackages Maybe [Char] -maybeSnpFile - let newEigenstratIndEntries :: [EigenstratIndEntry] -newEigenstratIndEntries = forall a b. (a -> b) -> [a] -> [b] +logA Bool +intersect_ PlinkPopNameMode +inPlinkPopMode [PoseidonPackage] +relevantPackages Maybe [Char] +maybeSnpFile + let newEigenstratIndEntries :: [EigenstratIndEntry] +newEigenstratIndEntries = forall a b. (a -> b) -> [a] -> [b] map ([EigenstratIndEntry] -eigenstratIndEntries forall a. [a] -> Int -> a +eigenstratIndEntries forall a. [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 +outInd) + let outConsumer :: Consumer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +outConsumer = case GenotypeFormatSpec +outFormat of GenotypeFormatSpec GenotypeFormatEigenstrat -> forall (m :: * -> *). MonadSafe m => @@ -625,10 +625,10 @@ -> [EigenstratIndEntry] -> Consumer (EigenstratSnpEntry, GenoLine) m () writeEigenstrat [Char] -outG [Char] -outS [Char] -outI [EigenstratIndEntry] -newEigenstratIndEntries +outG [Char] +outS [Char] +outI [EigenstratIndEntry] +newEigenstratIndEntries GenotypeFormatSpec GenotypeFormatPlink -> forall (m :: * -> *). MonadSafe m => @@ -638,30 +638,30 @@ -> [PlinkFamEntry] -> Consumer (EigenstratSnpEntry, GenoLine) m () writePlink [Char] -outG [Char] -outS [Char] -outI (forall a b. (a -> b) -> [a] -> [b] +outG [Char] +outS [Char] +outI (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 forall (m :: * -> *) a r. Functor m => Pipe a a m r +extractPipe = if Bool +packageWise then forall (m :: * -> *) a r. Functor m => Pipe a a m r cat else forall (m :: * -> *) a b r. Functor m => (a -> b) -> Pipe a b m r P.map ([Int] -> (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) selectIndices [Int] -relevantIndices) +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 forall (m :: * -> *) a' a b r c' c. + let forgePipe :: Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +forgePipe = Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +eigenstratProd 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 >-> @@ -669,8 +669,8 @@ MonadIO m => LogA -> UTCTime -> Pipe a a m () printSNPCopyProgress LogA -logA UTCTime -currentTime forall (m :: * -> *) a' a b r c' c. +logA UTCTime +currentTime 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 >-> @@ -680,22 +680,22 @@ (EigenstratSnpEntry, GenoLine) (SafeT IO) r -extractPipe forall (m :: * -> *) a' a b r c' c. +extractPipe 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 >-> 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 = forall (m :: * -> *) a. MonadIO m => IO a -> m a +outConsumer + let startAcc :: SafeT IO (IOVector Int) +startAcc = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) a. (PrimMonad m, Unbox a) => Int -> a -> m (MVector (PrimState m) a) VUM.replicate (forall (t :: * -> *) a. Foldable t => t a -> Int length [EigenstratIndEntry] -newEigenstratIndEntries) Int +newEigenstratIndEntries) Int 0 forall (m :: * -> *) x a b. Monad m => @@ -703,9 +703,9 @@ P.foldM IOVector Int -> (EigenstratSnpEntry, GenoLine) -> SafeT IO (IOVector Int) sumNonMissingSNPs SafeT IO (IOVector Int) -startAcc forall (m :: * -> *) a. Monad m => a -> m a +startAcc forall (m :: * -> *) a. Monad m => a -> m a return Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -forgePipe +forgePipe ) (forall e a. Exception e => e -> IO a throwIO forall b c a. (b -> c) -> (a -> b) -> a -> c . SomeException -> PoseidonException @@ -716,87 +716,87 @@ -- janno (with updated SNP numbers) forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (Bool -minimal Bool -> Bool -> Bool +minimal Bool -> Bool -> Bool || Bool -onlyGeno) forall a b. (a -> b) -> a -> b +onlyGeno) forall a b. (a -> b) -> a -> b $ do [Char] -> PoseidonIO () logInfo [Char] "Creating .janno file" - Vector Int -snpList <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + Vector Int +snpList <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall a (m :: * -> *). (Unbox a, PrimMonad m) => MVector (PrimState m) a -> m (Vector a) VU.freeze IOVector Int -newNrSNPs - let jannoRowsWithNewSNPNumbers :: [JannoRow] -jannoRowsWithNewSNPNumbers = forall a b c. (a -> b -> c) -> [a] -> [b] -> [c] -zipWith (\JannoRow -x Int -y -> JannoRow -x {jNrSNPs :: Maybe Int +newNrSNPs + let jannoRowsWithNewSNPNumbers :: [JannoRow] +jannoRowsWithNewSNPNumbers = forall a b c. (a -> b -> c) -> [a] -> [b] -> [c] +zipWith (\JannoRow +x Int +y -> JannoRow +x {jNrSNPs :: Maybe Int jNrSNPs = forall a. a -> Maybe a Just Int -y}) +y}) [JannoRow] -relevantJannoRows +relevantJannoRows (forall a. Unbox a => Vector a -> [a] VU.toList Vector Int -snpList) +snpList) forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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) +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 +sumNonMissingSNPs IOVector Int +accumulator (EigenstratSnpEntry +_, GenoLine +geno) = do forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ (forall a b. [a] -> [b] -> [(a, b)] zip (forall a. Vector a -> [a] V.toList GenoLine -geno) [Int +geno) [Int 0..]) forall a b. (a -> b) -> a -> b -$ \(GenoEntry -g, Int -i) -> do - let x :: Int -x = GenoEntry -> Int -nonMissingToInt GenoEntry -g +$ \(GenoEntry +g, Int +i) -> do + let x :: Int +x = GenoEntry -> Int +nonMissingToInt GenoEntry +g forall (m :: * -> *) a. (PrimMonad m, Unbox a) => MVector (PrimState m) a -> (a -> a) -> Int -> m () VUM.modify IOVector Int -accumulator (forall a. Num a => a -> a -> a +accumulator (forall a. Num a => a -> a -> a +Int -x) Int -i +x) Int +i forall (m :: * -> *) a. Monad m => a -> m a return IOVector Int -accumulator +accumulator where - nonMissingToInt :: GenoEntry -> Int - nonMissingToInt :: GenoEntry -> Int -nonMissingToInt GenoEntry -x + nonMissingToInt :: GenoEntry -> Int + nonMissingToInt :: GenoEntry -> Int +nonMissingToInt GenoEntry +x | GenoEntry -x forall a. Eq a => a -> a -> Bool +x forall a. Eq a => a -> a -> Bool == GenoEntry Missing = Int 0 @@ -806,46 +806,46 @@ filterSeqSourceRows :: JannoRows -> SeqSourceRows -> SeqSourceRows filterSeqSourceRows :: JannoRows -> SeqSourceRows -> SeqSourceRows -filterSeqSourceRows (JannoRows [JannoRow] -jRows) (SeqSourceRows [SeqSourceRow] -sRows) = - let desiredPoseidonIDs :: [[Char]] -desiredPoseidonIDs = forall a b. (a -> b) -> [a] -> [b] +filterSeqSourceRows (JannoRows [JannoRow] +jRows) (SeqSourceRows [SeqSourceRow] +sRows) = + let desiredPoseidonIDs :: [[Char]] +desiredPoseidonIDs = forall a b. (a -> b) -> [a] -> [b] map JannoRow -> [Char] jPoseidonID [JannoRow] -jRows +jRows in [SeqSourceRow] -> SeqSourceRows SeqSourceRows forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] filter ([[Char]] -> SeqSourceRow -> Bool -hasAPoseidonID [[Char]] -desiredPoseidonIDs) [SeqSourceRow] -sRows +hasAPoseidonID [[Char]] +desiredPoseidonIDs) [SeqSourceRow] +sRows where - hasAPoseidonID :: [String] -> SeqSourceRow -> Bool - hasAPoseidonID :: [[Char]] -> SeqSourceRow -> Bool -hasAPoseidonID [[Char]] -jIDs SeqSourceRow -seqSourceRow = - let sIDs :: [[Char]] -sIDs = forall a. Maybe (JannoList a) -> [a] + hasAPoseidonID :: [String] -> SeqSourceRow -> Bool + hasAPoseidonID :: [[Char]] -> SeqSourceRow -> Bool +hasAPoseidonID [[Char]] +jIDs SeqSourceRow +seqSourceRow = + let sIDs :: [[Char]] +sIDs = forall a. Maybe (JannoList a) -> [a] getMaybeJannoList forall a b. (a -> b) -> a -> b $ SeqSourceRow -> Maybe JannoStringList sPoseidonID SeqSourceRow -seqSourceRow +seqSourceRow in forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any (forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [[Char]] -jIDs) [[Char]] -sIDs +jIDs) [[Char]] +sIDs filterBibEntries :: JannoRows -> BibTeX -> BibTeX filterBibEntries :: JannoRows -> [BibEntry] -> [BibEntry] -filterBibEntries (JannoRows [JannoRow] -rows) [BibEntry] -references_ = - let relevantPublications :: [[Char]] -relevantPublications = forall a. Eq a => [a] -> [a] +filterBibEntries (JannoRows [JannoRow] +rows) [BibEntry] +references_ = + let relevantPublications :: [[Char]] +relevantPublications = forall a. Eq a => [a] -> [a] nub forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap forall a. JannoList a -> [a] @@ -854,43 +854,43 @@ mapMaybe JannoRow -> Maybe JannoStringList jPublication forall a b. (a -> b) -> a -> b $ [JannoRow] -rows +rows in forall a. (a -> Bool) -> [a] -> [a] -filter (\BibEntry -x-> BibEntry -> [Char] +filter (\BibEntry +x-> BibEntry -> [Char] bibEntryId BibEntry -x forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +x forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [[Char]] -relevantPublications) [BibEntry] -references_ +relevantPublications) [BibEntry] +references_ fillMissingSnpSets :: [PoseidonPackage] -> PoseidonIO [SNPSetSpec] fillMissingSnpSets :: [PoseidonPackage] -> PoseidonIO [SNPSetSpec] -fillMissingSnpSets [PoseidonPackage] -packages = forall (t :: * -> *) (m :: * -> *) a b. +fillMissingSnpSets [PoseidonPackage] +packages = forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM [PoseidonPackage] -packages forall a b. (a -> b) -> a -> b -$ \PoseidonPackage -pac -> do - let pac_ :: PacNameAndVersion -pac_ = PoseidonPackage -> PacNameAndVersion +packages forall a b. (a -> b) -> a -> b +$ \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 forall b c a. (b -> c) -> (a -> b) -> a -> c . PoseidonPackage -> GenotypeDataSpec posPacGenotypeData forall a b. (a -> b) -> a -> b $ PoseidonPackage -pac +pac case Maybe SNPSetSpec -maybeSnpSet of - Just SNPSetSpec -s -> forall (m :: * -> *) a. Monad m => a -> m a +maybeSnpSet of + Just SNPSetSpec +s -> forall (m :: * -> *) a. Monad m => a -> m a return SNPSetSpec -s +s Maybe SNPSetSpec Nothing -> do [Char] -> PoseidonIO () @@ -899,7 +899,7 @@ "Warning for package " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show PacNameAndVersion -pac_ forall a. [a] -> [a] -> [a] +pac_ forall a. [a] -> [a] -> [a] ++ [Char] ": field \"snpSet\" \ \is not set. I will interpret this as \"snpSet: Other\"" diff --git a/src/Poseidon.CLI.Genoconvert.html b/src/Poseidon.CLI.Genoconvert.html index b9755056..fd20f0f9 100644 --- a/src/Poseidon.CLI.Genoconvert.html +++ b/src/Poseidon.CLI.Genoconvert.html @@ -52,16 +52,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 @@ -74,31 +74,31 @@ True , _readOptOnlyLatest :: Bool _readOptOnlyLatest = Bool -onlyLatest +onlyLatest } -- load packages - [PoseidonPackage] -properPackages <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] + [PoseidonPackage] +properPackages <- PackageReadOptions -> [[Char]] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions -pacReadOpts forall a b. (a -> b) -> a -> b +pacReadOpts 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 <- forall (t :: * -> *) (m :: * -> *) a b. + [PoseidonPackage] +pseudoPackages <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM GenotypeDataSpec -> PoseidonIO PoseidonPackage makePseudoPackageFromGenotypeData [GenoDataSource -> GenotypeDataSpec getGenoDirect GenoDataSource -x | x :: GenoDataSource -x@GenoDirect {} <- [GenoDataSource] -genoSources] +x | x :: GenoDataSource +x@GenoDirect {} <- [GenoDataSource] +genoSources] [Char] -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b @@ -107,7 +107,7 @@ ++ forall a. Show a => a -> [Char] show (forall (t :: * -> *) a. Foldable t => t a -> Int length [PoseidonPackage] -pseudoPackages) +pseudoPackages) -- convert forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => @@ -121,13 +121,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 forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () @@ -140,13 +140,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 () @@ -158,14 +158,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 forall a b. (a -> b) -> a -> b @@ -176,134 +176,134 @@ ++ forall a. Show a => a -> [Char] show (PoseidonPackage -> PacNameAndVersion posPacNameAndVersion PoseidonPackage -pac) +pac) forall a. [a] -> [a] -> [a] ++ [Char] " to format " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show GenotypeFormatSpec -outFormat +outFormat forall a. [a] -> [a] -> [a] ++ [Char] ":" -- compile file names paths - let outName :: [Char] -outName = forall a. HasNameAndVersion a => a -> [Char] + let outName :: [Char] +outName = forall a. HasNameAndVersion a => a -> [Char] getPacName forall b c a. (b -> c) -> (a -> b) -> a -> c . PoseidonPackage -> PacNameAndVersion posPacNameAndVersion 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) forall a. Eq a => a -> a -> Bool +pac) 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 forall a b. (a -> b) -> a -> b $ [Char] "Writing to directory (will be created if missing): " forall a. [a] -> [a] -> [a] ++ [Char] -x +x forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ Bool -> [Char] -> IO () createDirectoryIfMissing Bool True ([Char] -> [Char] dropTrailingPathSeparator [Char] -x) +x) forall (m :: * -> *) a. Monad m => a -> m a return [Char] -x +x Maybe [Char] Nothing -> forall (m :: * -> *) a. Monad m => a -> m a return 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 <- forall (t :: * -> *). Foldable t => t Bool -> Bool +outInd) + Bool +anyExists <- forall (t :: * -> *). Foldable t => t Bool -> Bool or forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t 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 " forall a. [a] -> [a] -> [a] ++ 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + UTCTime +currentTime <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO UTCTime getCurrentTime forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -315,9 +315,9 @@ SafeT m r -> m r runSafeT forall a b. (a -> b) -> a -> b $ do - ([EigenstratIndEntry] -eigenstratIndEntries, Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -eigenstratProd) <- forall (m :: * -> *). + ([EigenstratIndEntry] +eigenstratIndEntries, Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () +eigenstratProd) <- forall (m :: * -> *). MonadSafe m => [Char] -> GenotypeDataSpec @@ -326,13 +326,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 -> forall (m :: * -> *). MonadSafe m => @@ -342,10 +342,10 @@ -> [EigenstratIndEntry] -> Consumer (EigenstratSnpEntry, GenoLine) m () writeEigenstrat [Char] -outG [Char] -outS [Char] -outI [EigenstratIndEntry] -eigenstratIndEntries +outG [Char] +outS [Char] +outI [EigenstratIndEntry] +eigenstratIndEntries GenotypeFormatSpec GenotypeFormatPlink -> forall (m :: * -> *). MonadSafe m => @@ -355,29 +355,29 @@ -> [PlinkFamEntry] -> Consumer (EigenstratSnpEntry, GenoLine) m () writePlink [Char] -outG [Char] -outS [Char] -outI (forall a b. (a -> b) -> [a] -> [b] +outG [Char] +outS [Char] +outI (forall a b. (a -> b) -> [a] -> [b] map (PlinkPopNameMode -> EigenstratIndEntry -> PlinkFamEntry eigenstratInd2PlinkFam PlinkPopNameMode -outPlinkPopMode) [EigenstratIndEntry] -eigenstratIndEntries) +outPlinkPopMode) [EigenstratIndEntry] +eigenstratIndEntries) forall (m :: * -> *) r. Monad m => Effect m r -> m r runEffect forall a b. (a -> b) -> a -> b $ Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -eigenstratProd forall (m :: * -> *) a' a b r c' c. +eigenstratProd 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 >-> forall (m :: * -> *) a. MonadIO m => LogA -> UTCTime -> Pipe a a m () printSNPCopyProgress LogA -logA UTCTime -currentTime forall (m :: * -> *) a' a b r c' c. +logA UTCTime +currentTime 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 ) (forall e a. Exception e => e -> IO a throwIO forall b c a. (b -> c) -> (a -> b) -> a -> c . SomeException -> PoseidonException @@ -388,13 +388,13 @@ -- overwrite genotype data field in POSEIDON.yml file forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (Bool -onlyGeno Bool -> Bool -> Bool +onlyGeno Bool -> Bool -> Bool || forall a. Maybe a -> Bool isJust Maybe [Char] -outPath) forall a b. (a -> b) -> a -> b +outPath) forall a b. (a -> b) -> a -> b $ do - let genotypeData :: GenotypeDataSpec -genotypeData = GenotypeFormatSpec + let genotypeData :: GenotypeDataSpec +genotypeData = GenotypeFormatSpec -> [Char] -> Maybe [Char] -> [Char] @@ -404,23 +404,23 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -outFormat [Char] -outGeno forall a. Maybe a +outFormat [Char] +outGeno forall a. Maybe a Nothing [Char] -outSnp forall a. Maybe a +outSnp forall a. Maybe a Nothing [Char] -outInd forall a. Maybe a +outInd forall a. Maybe a Nothing (GenotypeDataSpec -> Maybe SNPSetSpec snpSet forall b c a. (b -> c) -> (a -> b) -> a -> c . PoseidonPackage -> GenotypeDataSpec posPacGenotypeData 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..." @@ -428,11 +428,11 @@ liftIO forall a b. (a -> b) -> a -> b $ PoseidonPackage -> IO () writePoseidonPackage PoseidonPackage -newPac +newPac -- delete now replaced input genotype data forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -removeOld forall a b. (a -> b) -> a -> b +removeOld forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) (m :: * -> *) a b. @@ -442,49 +442,49 @@ 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + checkFile :: FilePath -> PoseidonIO Bool + checkFile :: [Char] -> ReaderT Env IO Bool +checkFile [Char] +fn = do + Bool +fe <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> IO Bool doesFileExist [Char] -fn +fn forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -fe forall a b. (a -> b) -> a -> b +fe forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonIO () logWarning forall a b. (a -> b) -> a -> b $ [Char] "File " forall a. [a] -> [a] -> [a] ++ [Char] -fn forall a. [a] -> [a] -> [a] +fn forall a. [a] -> [a] -> [a] ++ [Char] " exists" 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 c61b4e30..389645aa 100644 --- a/src/Poseidon.CLI.Init.html +++ b/src/Poseidon.CLI.Init.html @@ -31,53 +31,53 @@ 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 forall a b. (a -> b) -> a -> b $ [Char] "Creating new package directory: " forall a. [a] -> [a] -> [a] ++ [Char] -outPath +outPath forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ 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] @@ -87,14 +87,14 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -format_ [Char] -outGeno forall a. Maybe a +format_ [Char] +outGeno forall a. Maybe a Nothing [Char] -outSnp forall a. Maybe a +outSnp forall a. Maybe a Nothing [Char] -outInd forall a. Maybe a +outInd forall a. Maybe a Nothing Maybe SNPSetSpec -snpSet_ +snpSet_ -- genotype data [Char] -> PoseidonIO () logInfo [Char] @@ -103,73 +103,73 @@ liftIO forall a b. (a -> b) -> a -> b $ [Char] -> Maybe [Char] -> IO () checkFile [Char] -indFile_ forall a. Maybe a +indFile_ forall a. Maybe a Nothing forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> Maybe [Char] -> IO () checkFile [Char] -snpFile_ forall a. Maybe a +snpFile_ forall a. Maybe a Nothing forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> Maybe [Char] -> IO () checkFile [Char] -genoFile_ forall a. Maybe a +genoFile_ forall a. Maybe a Nothing forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> [Char] -> IO () copyFile [Char] -indFile_ forall a b. (a -> b) -> a -> b +indFile_ forall a b. (a -> b) -> a -> b $ [Char] -outPath [Char] -> [Char] -> [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outInd +outInd forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> [Char] -> IO () copyFile [Char] -snpFile_ forall a b. (a -> b) -> a -> b +snpFile_ forall a b. (a -> b) -> a -> b $ [Char] -outPath [Char] -> [Char] -> [Char] +outPath [Char] -> [Char] -> [Char] </> [Char] -outSnp +outSnp forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> [Char] -> IO () copyFile [Char] -genoFile_ forall a b. (a -> b) -> a -> b +genoFile_ 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + [Char] +outName <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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 forall (m :: * -> *) a. Monad m => a -> m a return 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 @@ -178,12 +178,12 @@ -> BibTeX -> ReaderT Env IO PoseidonPackage newPackageTemplate [Char] -outPath [Char] -outName GenotypeDataSpec -genotypeData (forall a. a -> Maybe a +outPath [Char] +outName GenotypeDataSpec +genotypeData (forall a. a -> Maybe a Just (forall a b. a -> Either a b Left [EigenstratIndEntry] -inds)) forall a. Monoid a => a +inds)) forall a. Monoid a => a mempty [BibEntry dummyBibEntry] -- POSEIDON.yml @@ -194,10 +194,10 @@ liftIO forall a b. (a -> b) -> a -> b $ PoseidonPackage -> IO () writePoseidonPackage PoseidonPackage -pac +pac forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -minimal forall a b. (a -> b) -> a -> b +minimal forall a b. (a -> b) -> a -> b $ do -- janno [Char] -> PoseidonIO () @@ -207,14 +207,14 @@ liftIO 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") forall a b. (a -> b) -> a -> b $ PoseidonPackage -> JannoRows posPacJanno PoseidonPackage -pac +pac -- bib [Char] -> PoseidonIO () logInfo [Char] @@ -223,12 +223,12 @@ liftIO 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") 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.List.html b/src/Poseidon.CLI.List.html index 1ec5a098..7e6db24c 100644 --- a/src/Poseidon.CLI.List.html +++ b/src/Poseidon.CLI.List.html @@ -47,13 +47,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 @@ -66,58 +66,58 @@ 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 forall a. [a] -> [a] -> [a] +remoteURL forall a. [a] -> [a] -> [a] ++ String "/packages" forall a. [a] -> [a] -> [a] ++ Maybe String -> String qDefault Maybe String -archive) Bool +archive) Bool False case ApiReturnData -apiReturn of - ApiReturnPackageInfo [PackageInfo] -pacInfo -> forall (m :: * -> *) a. Monad m => a -> m a +apiReturn of + ApiReturnPackageInfo [PackageInfo] +pacInfo -> forall (m :: * -> *) a. Monad m => a -> m a return [PackageInfo] -pacInfo +pacInfo ApiReturnData _ -> 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 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 @@ -125,20 +125,20 @@ "Description", String "Last modified", String "Nr Individuals"] - tableB :: [[String]] -tableB = forall b a. Ord b => (a -> b) -> [a] -> [a] + tableB :: [[String]] +tableB = forall b a. Ord b => (a -> b) -> [a] -> [a] sortOn forall a. [a] -> a head 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 @@ -146,165 +146,165 @@ True <- forall (m :: * -> *) a. Monad m => a -> m a return (Bool -> Bool not Bool -onlyLatest Bool -> Bool -> Bool +onlyLatest Bool -> Bool -> Bool || Bool -isLatest) +isLatest) forall (m :: * -> *) a. Monad m => a -> m a return [forall a. HasNameAndVersion a => a -> String getPacName PackageInfo -pInf, Maybe Version -> String -showMaybeVersion (forall a. HasNameAndVersion a => a -> Maybe Version +pInf, Maybe Version -> String +showMaybeVersion (forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PackageInfo -pInf), forall a. Show a => a -> String +pInf), 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 (forall a. Show a => a -> String +posV, Maybe String -> String +showMaybe Maybe String +desc, Maybe String -> String +showMaybe (forall a. Show a => a -> String show forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Maybe Day -lastMod), forall a. Show a => a -> String +lastMod), forall a. Show a => a -> String show Int -nrInds] +nrInds] 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 forall a. [a] -> [a] -> [a] +remoteURL forall a. [a] -> [a] -> [a] ++ String "/groups" forall a. [a] -> [a] -> [a] ++ Maybe String -> String qDefault Maybe String -archive) Bool +archive) Bool False case ApiReturnData -apiReturn of - ApiReturnGroupInfo [GroupInfo] -groupInfo -> forall (m :: * -> *) a. Monad m => a -> m a +apiReturn of + ApiReturnGroupInfo [GroupInfo] +groupInfo -> forall (m :: * -> *) a. Monad m => a -> m a return [GroupInfo] -groupInfo +groupInfo ApiReturnData _ -> 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 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 <- forall (m :: * -> *) a. Monad m => a -> m a return (Bool -> Bool not Bool -onlyLatest Bool -> Bool -> Bool +onlyLatest Bool -> Bool -> Bool || Bool -isLatest) +isLatest) forall (m :: * -> *) a. Monad m => a -> m a return [String -groupName, forall a. HasNameAndVersion a => a -> String +groupName, forall a. HasNameAndVersion a => a -> String getPacName GroupInfo -gi, Maybe Version -> String -showMaybeVersion (forall a. HasNameAndVersion a => a -> Maybe Version +gi, Maybe Version -> String +showMaybeVersion (forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion GroupInfo -gi), forall a. Show a => a -> String +gi), forall a. Show a => a -> String show Bool -isLatest, forall a. Show a => a -> String +isLatest, forall a. Show a => a -> String show Int -nrInds] +nrInds] forall (m :: * -> *) a. Monad m => a -> m a return ([String] -tableH, [[String]] -tableB) - ListIndividuals [String] -moreJannoColumns -> do - [ExtendedIndividualInfo] -extIndInfos <- case RepoLocationSpec -repoLocation of - RepoRemote (ArchiveEndpoint String -remoteURL Maybe String -archive) -> do +tableH, [[String]] +tableB) + ListIndividuals [String] +moreJannoColumns -> do + [ExtendedIndividualInfo] +extIndInfos <- case RepoLocationSpec +repoLocation of + RepoRemote (ArchiveEndpoint String +remoteURL Maybe String +archive) -> do String -> PoseidonIO () logInfo String "Downloading individual data from server" - ApiReturnData -apiReturn <- String -> Bool -> PoseidonIO ApiReturnData + ApiReturnData +apiReturn <- String -> Bool -> PoseidonIO ApiReturnData processApiResponse (String -remoteURL forall a. [a] -> [a] -> [a] +remoteURL forall a. [a] -> [a] -> [a] ++ String "/individuals" forall a. [a] -> [a] -> [a] ++ Maybe String -> String qDefault Maybe String -archive forall a. [a] -> [a] -> [a] +archive forall a. [a] -> [a] -> [a] ++ String "&additionalJannoColumns=" forall a. [a] -> [a] -> [a] ++ forall a. [a] -> [[a]] -> [a] intercalate String "," [String] -moreJannoColumns) Bool +moreJannoColumns) Bool False case ApiReturnData -apiReturn of - ApiReturnExtIndividualInfo [ExtendedIndividualInfo] -indInfo -> forall (m :: * -> *) a. Monad m => a -> m a +apiReturn of + ApiReturnExtIndividualInfo [ExtendedIndividualInfo] +indInfo -> forall (m :: * -> *) a. Monad m => a -> m a return [ExtendedIndividualInfo] -indInfo +indInfo ApiReturnData _ -> 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 forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> [String] -> m [ExtendedIndividualInfo] getExtendedIndividualInfo [PoseidonPackage] -pacCollection [String] -moreJannoColumns +pacCollection [String] +moreJannoColumns -- warning in case the additional Columns do not exist in the entire janno dataset forall (t :: * -> *) (m :: * -> *) a b. @@ -313,78 +313,78 @@ forM_ (forall a b. [a] -> [b] -> [(a, b)] zip [Int 0..] [String] -moreJannoColumns) forall a b. (a -> b) -> a -> b -$ \(Int -i, String -columnKey) -> do +moreJannoColumns) forall a b. (a -> b) -> a -> b +$ \(Int +i, String +columnKey) -> do -- check entries in all individuals for that key - let nonEmptyEntries :: [String] -nonEmptyEntries = forall a. [Maybe a] -> [a] + let nonEmptyEntries :: [String] +nonEmptyEntries = forall a. [Maybe a] -> [a] catMaybes [forall a b. (a, b) -> b snd ([(String, Maybe String)] -entries forall a. [a] -> Int -> a +entries forall a. [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] forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall (t :: * -> *) a. Foldable t => t a -> Bool null [String] -nonEmptyEntries) forall b c a. (b -> c) -> (a -> b) -> a -> c +nonEmptyEntries) forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> PoseidonIO () logWarning forall a b. (a -> b) -> a -> b $ String "Column Name " forall a. [a] -> [a] -> [a] ++ String -columnKey forall a. [a] -> [a] -> [a] +columnKey forall a. [a] -> [a] -> [a] ++ String " not present in any individual" - let tableH :: [String] -tableH = [String + let tableH :: [String] +tableH = [String "Individual", String "Group", String "Package", String "PackageVersion", String "Is Latest"] forall a. [a] -> [a] -> [a] ++ [String] -moreJannoColumns - tableB :: [[String]] -tableB = do - i :: ExtendedIndividualInfo -i@(ExtendedIndividualInfo String -name [String] -groups PacNameAndVersion -_ Bool -isLatest [(String, Maybe String)] -addColumnEntries) <- [ExtendedIndividualInfo] -extIndInfos +moreJannoColumns + tableB :: [[String]] +tableB = do + i :: ExtendedIndividualInfo +i@(ExtendedIndividualInfo String +name [String] +groups PacNameAndVersion +_ Bool +isLatest [(String, Maybe String)] +addColumnEntries) <- [ExtendedIndividualInfo] +extIndInfos Bool True <- forall (m :: * -> *) a. Monad m => a -> m a return (Bool -> Bool not Bool -onlyLatest Bool -> Bool -> Bool +onlyLatest Bool -> Bool -> Bool || Bool -isLatest) +isLatest) forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ [String -name, forall a. [a] -> [[a]] -> [a] +name, forall a. [a] -> [[a]] -> [a] intercalate String ", " [String] -groups, forall a. HasNameAndVersion a => a -> String +groups, forall a. HasNameAndVersion a => a -> String getPacName ExtendedIndividualInfo -i, +i, Maybe Version -> String -showMaybeVersion (forall a. HasNameAndVersion a => a -> Maybe Version +showMaybeVersion (forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion ExtendedIndividualInfo -i), forall a. Show a => a -> String +i), forall a. Show a => a -> String show Bool -isLatest] forall a. [a] -> [a] -> [a] +isLatest] forall a. [a] -> [a] -> [a] ++ forall a b. (a -> b) -> [a] -> [b] map (forall a. a -> Maybe a -> a @@ -392,13 +392,13 @@ "n/a" forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd) [(String, Maybe String)] -addColumnEntries +addColumnEntries forall (m :: * -> *) a. Monad m => a -> m a return ([String] -tableH, [[String]] -tableB) +tableH, [[String]] +tableB) if Bool -rawOutput then +rawOutput then forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ String -> IO () @@ -408,17 +408,17 @@ "\n" [forall a. [a] -> [[a]] -> [a] intercalate String "\t" [String] -row | [String] -row <- [String] -tableHforall a. a -> [a] -> [a] +row | [String] +row <- [String] +tableHforall a. a -> [a] -> [a] :[[String]] -tableB] +tableB] else do - let colSpecs :: [ColSpec] -colSpecs = forall a. Int -> a -> [a] + let colSpecs :: [ColSpec] +colSpecs = forall a. Int -> a -> [a] replicate (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) forall a. Default a => a @@ -433,21 +433,21 @@ Cell a => [ColSpec] -> TableStyle -> HeaderSpec -> [RowGroup a] -> String tableString [ColSpec] -colSpecs TableStyle +colSpecs TableStyle asciiRoundS ([String] -> HeaderSpec titlesH [String] -tableH) [forall a. [Row a] -> RowGroup a +tableH) [forall a. [Row a] -> RowGroup a rowsG [[String]] -tableB] +tableB] where - showMaybe :: Maybe String -> String - showMaybe :: Maybe String -> String -showMaybe = forall a. a -> Maybe a -> a + showMaybe :: Maybe String -> String + showMaybe :: Maybe String -> String +showMaybe = forall a. a -> Maybe a -> a fromMaybe String "n/a" - showMaybeVersion :: Maybe Version -> String - showMaybeVersion :: Maybe Version -> String -showMaybeVersion = forall b a. b -> (a -> b) -> Maybe a -> b + showMaybeVersion :: Maybe Version -> String + showMaybeVersion :: Maybe Version -> String +showMaybeVersion = forall b a. b -> (a -> b) -> Maybe a -> b maybe String "n/a" Version -> String showVersion diff --git a/src/Poseidon.CLI.OptparseApplicativeParsers.html b/src/Poseidon.CLI.OptparseApplicativeParsers.html index 73ae433d..ec2e0c0f 100644 --- a/src/Poseidon.CLI.OptparseApplicativeParsers.html +++ b/src/Poseidon.CLI.OptparseApplicativeParsers.html @@ -132,7 +132,7 @@ Just forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String Version -readPoseidonVersionString) ( +readPoseidonVersionString) ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "poseidonVersion" forall a. Semigroup a => a -> a -> a @@ -151,25 +151,25 @@ Nothing ) where - readPoseidonVersionString :: String -> Either String Version - readPoseidonVersionString :: String -> Either String Version -readPoseidonVersionString String -s = case forall s t u a. + readPoseidonVersionString :: String -> Either String Version + readPoseidonVersionString :: String -> Either String Version +readPoseidonVersionString String +s = case forall s t u a. Stream s Identity t => Parsec s u a -> u -> String -> s -> Either ParseError a P.runParser Parser Version parseVersion () String "" String -s of - Left ParseError -p -> forall a b. a -> Either a b +s of + Left ParseError +p -> forall a b. a -> Either a b Left (forall a. Show a => a -> String show ParseError -p) - Right Version -x -> forall a b. b -> Either a b +p) + Right Version +x -> forall a b. b -> Either a b Right Version -x +x parseDebugMode :: OP.Parser LogMode parseDebugMode :: Parser LogMode @@ -190,7 +190,7 @@ parseLogMode = forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option (forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String LogMode -readLogMode) ( +readLogMode) ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "logMode" forall a. Semigroup a => a -> a -> a @@ -212,11 +212,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" -> forall a b. b -> Either a b Right LogMode @@ -247,7 +247,7 @@ parseTestMode = forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option (forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String TestMode -readTestMode) ( +readTestMode) ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "testMode" forall a. Semigroup a => a -> a -> a @@ -272,11 +272,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" -> forall a b. b -> Either a b Right TestMode @@ -290,7 +290,7 @@ Left String "must be Testing or Production" -data ErrorLength = CharInf | CharCount Int deriving Int -> ErrorLength -> ShowS +data ErrorLength = CharInf | CharCount Int deriving Int -> ErrorLength -> ShowS [ErrorLength] -> ShowS ErrorLength -> String forall a. @@ -308,7 +308,7 @@ parseErrorLength = forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option (forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String ErrorLength -readErrorLengthString) ( +readErrorLengthString) ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "errLength" forall a. Semigroup a => a -> a -> a @@ -330,12 +330,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 forall a. Eq a => a -> a -> Bool +s forall a. Eq a => a -> a -> Bool == String "Inf" then forall a b. b -> Either a b @@ -343,13 +343,13 @@ CharInf else case forall a. Read a => String -> Maybe a readMaybe String -s of - Just Int -n -> forall a b. b -> Either a b +s of + Just Int +n -> forall a b. b -> Either a b Right forall a b. (a -> b) -> a -> b $ Int -> ErrorLength CharCount Int -n +n Maybe Int Nothing -> forall a b. a -> Either a b Left String @@ -371,20 +371,20 @@ parseChecksumsToRectify :: OP.Parser ChecksumsToRectify parseChecksumsToRectify :: Parser ChecksumsToRectify parseChecksumsToRectify = Parser ChecksumsToRectify -parseChecksumNone forall (f :: * -> *) a. Alternative f => f a -> f a -> f a +parseChecksumNone forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Parser ChecksumsToRectify -parseChecksumAll forall (f :: * -> *) a. Alternative f => f a -> f a -> f a +parseChecksumAll forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Parser ChecksumsToRectify -parseChecksumsDetail +parseChecksumsDetail where - parseChecksumNone :: OP.Parser ChecksumsToRectify - parseChecksumNone :: Parser ChecksumsToRectify -parseChecksumNone = forall (f :: * -> *) a. Applicative f => a -> f a + parseChecksumNone :: OP.Parser ChecksumsToRectify + parseChecksumNone :: Parser ChecksumsToRectify +parseChecksumNone = 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 forall (f :: * -> *) a b. Functor f => a -> f b -> f a <$ forall a. a -> Mod FlagFields a -> Parser a @@ -396,25 +396,25 @@ 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 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parser Bool -parseChecksumGeno forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b +parseChecksumGeno forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Parser Bool -parseChecksumJanno forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b +parseChecksumJanno forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Parser Bool -parseChecksumSSF forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b +parseChecksumSSF 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 ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -423,9 +423,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 ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -434,9 +434,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 ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -445,9 +445,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 ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -473,7 +473,7 @@ parseVersionComponent = forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option (forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String VersionComponent -readVersionComponent) ( +readVersionComponent) ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "packageVersion" forall a. Semigroup a => a -> a -> a @@ -489,11 +489,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" -> forall a b. b -> Either a b Right VersionComponent @@ -572,23 +572,23 @@ readContributorString :: String -> Either String [ContributorSpec] readContributorString :: String -> Either String [ContributorSpec] -readContributorString String -s = case forall s t u a. +readContributorString String +s = case forall s t u a. Stream s Identity t => Parsec s u a -> u -> String -> s -> Either ParseError a P.runParser Parser [ContributorSpec] contributorSpecParser () String "" String -s of - Left ParseError -p -> forall a b. a -> Either a b +s of + Left ParseError +p -> forall a b. a -> Either a b Left (forall a. Show a => a -> String show ParseError -p) - Right [ContributorSpec] -x -> forall a b. b -> Either a b +p) + Right [ContributorSpec] +x -> forall a b. b -> Either a b Right [ContributorSpec] -x +x parseMaybeLog :: OP.Parser (Maybe String) @@ -660,10 +660,10 @@ parseForgeEntityInputs :: Parser [EntityInput SignedEntity] parseForgeEntityInputs = forall (f :: * -> *) a. Alternative f => f a -> f [a] OP.many Parser (EntityInput SignedEntity) -parseSignedEntityInput +parseSignedEntityInput where - parseSignedEntityInput :: Parser (EntityInput SignedEntity) -parseSignedEntityInput = (forall a. String -> EntityInput a + parseSignedEntityInput :: Parser (EntityInput SignedEntity) +parseSignedEntityInput = (forall a. String -> EntityInput a EntitiesFromFile forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parser String parseForgeEntitiesFromFile) forall (f :: * -> *) a. Alternative f => f a -> f a -> f a @@ -677,13 +677,13 @@ parseFetchEntityInputs :: OP.Parser [EntityInput PoseidonEntity] parseFetchEntityInputs :: Parser [EntityInput PoseidonEntity] parseFetchEntityInputs = forall {a}. Parser [a] -parseDownloadAll forall (f :: * -> *) a. Alternative f => f a -> f a -> f a +parseDownloadAll forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> forall (f :: * -> *) a. Alternative f => f a -> f [a] OP.some Parser (EntityInput PoseidonEntity) -parseEntityInput +parseEntityInput where - parseDownloadAll :: Parser [a] -parseDownloadAll = forall a. a -> Mod FlagFields a -> Parser a + parseDownloadAll :: Parser [a] +parseDownloadAll = forall a. a -> Mod FlagFields a -> Parser a OP.flag' [] ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -693,8 +693,8 @@ OP.help String "Download all packages the server is offering." ) - parseEntityInput :: Parser (EntityInput PoseidonEntity) -parseEntityInput = (forall a. String -> EntityInput a + parseEntityInput :: Parser (EntityInput PoseidonEntity) +parseEntityInput = (forall a. String -> EntityInput a EntitiesFromFile forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parser String parseFetchEntitiesFromFile) forall (f :: * -> *) a. Alternative f => f a -> f a -> f a @@ -722,7 +722,7 @@ parseForgeEntitiesDirect = forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option (forall a. (String -> Either String a) -> ReadM a OP.eitherReader forall {a}. EntitySpec a => String -> Either String [a] -readSignedEntities) ( +readSignedEntities) ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "forgeString" forall a. Semigroup a => a -> a -> a @@ -750,27 +750,27 @@ \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 forall a. EntitySpec a => String -> Either PoseidonException [a] + readSignedEntities :: String -> Either String [a] +readSignedEntities String +s = case forall a. EntitySpec a => String -> Either PoseidonException [a] readEntitiesFromString String -s of - Left PoseidonException -e -> forall a b. a -> Either a b +s of + Left PoseidonException +e -> forall a b. a -> Either a b Left (forall a. Show a => a -> String show PoseidonException -e) - Right [a] -e -> forall a b. b -> Either a b +e) + Right [a] +e -> forall a b. b -> Either a b Right [a] -e +e parseFetchEntitiesDirect :: OP.Parser EntitiesList parseFetchEntitiesDirect :: Parser EntitiesList parseFetchEntitiesDirect = forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option (forall a. (String -> Either String a) -> ReadM a OP.eitherReader forall {a}. EntitySpec a => String -> Either String [a] -readEntities) ( +readEntities) ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "fetchString" forall a. Semigroup a => a -> a -> a @@ -791,20 +791,20 @@ \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 forall a. EntitySpec a => String -> Either PoseidonException [a] + readEntities :: String -> Either String [a] +readEntities String +s = case forall a. EntitySpec a => String -> Either PoseidonException [a] readEntitiesFromString String -s of - Left PoseidonException -e -> forall a b. a -> Either a b +s of + Left PoseidonException +e -> forall a b. a -> Either a b Left (forall a. Show a => a -> String show PoseidonException -e) - Right [a] -e -> forall a b. b -> Either a b +e) + Right [a] +e -> forall a b. b -> Either a b Right [a] -e +e parseForgeEntitiesFromFile :: OP.Parser FilePath parseForgeEntitiesFromFile :: Parser String @@ -874,23 +874,23 @@ parseOutGenotypeFormat :: Bool -> OP.Parser GenotypeFormatSpec parseOutGenotypeFormat :: Bool -> Parser GenotypeFormatSpec -parseOutGenotypeFormat Bool -withDefault = +parseOutGenotypeFormat Bool +withDefault = if Bool -withDefault +withDefault then forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option (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 forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option (forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String GenotypeFormatSpec -readGenotypeFormat) forall {a}. Mod OptionFields a -settingsWithoutDefault +readGenotypeFormat) forall {a}. Mod OptionFields a +settingsWithoutDefault where - settingsWithDefault :: Mod OptionFields GenotypeFormatSpec -settingsWithDefault = + settingsWithDefault :: Mod OptionFields GenotypeFormatSpec +settingsWithDefault = forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "outFormat" forall a. Semigroup a => a -> a -> a @@ -909,8 +909,8 @@ <> forall a (f :: * -> *). Show a => Mod f a OP.showDefault - settingsWithoutDefault :: Mod OptionFields a -settingsWithoutDefault = + settingsWithoutDefault :: Mod OptionFields a +settingsWithoutDefault = forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "outFormat" forall a. Semigroup a => a -> a -> a @@ -922,11 +922,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" -> forall a b. b -> Either a b Right GenotypeFormatSpec @@ -1120,19 +1120,19 @@ parseInGenoWithoutSNPSet :: OP.Parser GenotypeDataSpec parseInGenoWithoutSNPSet :: Parser GenotypeDataSpec parseInGenoWithoutSNPSet = GenoInput -> GenotypeDataSpec -createGeno forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b +createGeno forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Parser GenoInput parseInGenoOne forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> 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 @@ -1142,19 +1142,19 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -a String -b forall a. Maybe a +a String +b forall a. Maybe a Nothing String -c forall a. Maybe a +c forall a. Maybe a Nothing String -d forall a. Maybe a +d forall a. Maybe a Nothing forall a. Maybe a Nothing parseInGenotypeDataset :: OP.Parser GenotypeDataSpec parseInGenotypeDataset :: Parser GenotypeDataSpec parseInGenotypeDataset = GenoInput -> Maybe SNPSetSpec -> GenotypeDataSpec -createGeno forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b +createGeno forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Parser GenoInput parseInGenoOne forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Parser GenoInput @@ -1162,13 +1162,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 @@ -1178,12 +1178,12 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -a String -b forall a. Maybe a +a String +b forall a. Maybe a Nothing String -c forall a. Maybe a +c forall a. Maybe a Nothing String -d forall a. Maybe a +d forall a. Maybe a Nothing type GenoInput = (GenotypeFormatSpec, FilePath, FilePath, FilePath) @@ -1193,7 +1193,7 @@ parseInGenoOne = forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option (forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String GenoInput -readGenoInput) ( +readGenoInput) ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "genoOne" forall a. Semigroup a => a -> a -> a @@ -1214,21 +1214,21 @@ \The other files must be in the same directory \ \and must have the same base name.") where - readGenoInput :: FilePath -> Either String GenoInput - readGenoInput :: String -> Either String GenoInput -readGenoInput String -p = String -> String -> Either String GenoInput -makeGenoInput (ShowS + readGenoInput :: FilePath -> Either String GenoInput + readGenoInput :: String -> Either String GenoInput +readGenoInput String +p = String -> String -> Either String GenoInput +makeGenoInput (ShowS dropExtension String -p) (ShowS +p) (ShowS takeExtension 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 forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +ext forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [String ".geno", String ".snp", String @@ -1236,17 +1236,17 @@ forall a b. b -> Either a b Right (GenotypeFormatSpec GenotypeFormatEigenstrat, String -path String -> ShowS +path String -> ShowS <.> String "geno", String -path String -> ShowS +path String -> ShowS <.> String "snp", String -path String -> ShowS +path String -> ShowS <.> String "ind") | String -ext forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +ext forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [String ".bed", String ".bim", String @@ -1254,13 +1254,13 @@ forall a b. b -> Either a b Right (GenotypeFormatSpec GenotypeFormatPlink, String -path String -> ShowS +path String -> ShowS <.> String "bed", String -path String -> ShowS +path String -> ShowS <.> String "bim", String -path String -> ShowS +path String -> ShowS <.> String "fam") | Bool @@ -1269,7 +1269,7 @@ $ String "unknown file extension: " forall a. [a] -> [a] -> [a] ++ String -ext +ext parseInGenoSep :: OP.Parser GenoInput parseInGenoSep :: Parser GenoInput @@ -1288,7 +1288,7 @@ parseInGenotypeFormat = forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option (forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String GenotypeFormatSpec -readGenotypeFormat) ( +readGenotypeFormat) ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "inFormat" forall a. Semigroup a => a -> a -> a @@ -1302,11 +1302,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" -> forall a b. b -> Either a b Right GenotypeFormatSpec @@ -1375,7 +1375,7 @@ Just forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String SNPSetSpec -readSnpSet) ( +readSnpSet) ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "snpSet" forall a. Semigroup a => a -> a -> a @@ -1396,11 +1396,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" -> forall a b. b -> Either a b Right SNPSetSpec @@ -1583,16 +1583,16 @@ parseListEntity :: OP.Parser ListEntity parseListEntity :: Parser ListEntity parseListEntity = Parser ListEntity -parseListPackages forall (f :: * -> *) a. Alternative f => f a -> f a -> f a +parseListPackages forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Parser ListEntity -parseListGroups forall (f :: * -> *) a. Alternative f => f a -> f a -> f a +parseListGroups forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> (Parser () -parseListIndividualsDummy forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b +parseListIndividualsDummy forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b *> Parser ListEntity -parseListIndividualsExtraCols) +parseListIndividualsExtraCols) where - parseListPackages :: Parser ListEntity -parseListPackages = forall a. a -> Mod FlagFields a -> Parser a + parseListPackages :: Parser ListEntity +parseListPackages = forall a. a -> Mod FlagFields a -> Parser a OP.flag' ListEntity ListPackages ( forall (f :: * -> *) a. HasName f => String -> Mod f a @@ -1603,8 +1603,8 @@ OP.help String "List all packages." ) - parseListGroups :: Parser ListEntity -parseListGroups = forall a. a -> Mod FlagFields a -> Parser a + parseListGroups :: Parser ListEntity +parseListGroups = forall a. a -> Mod FlagFields a -> Parser a OP.flag' ListEntity ListGroups ( forall (f :: * -> *) a. HasName f => String -> Mod f a @@ -1614,8 +1614,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 = forall a. a -> Mod FlagFields a -> Parser a + parseListIndividualsDummy :: Parser () +parseListIndividualsDummy = forall a. a -> Mod FlagFields a -> Parser a OP.flag' () ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String @@ -1624,14 +1624,14 @@ forall (f :: * -> *) a. String -> Mod f a OP.help String "List all individuals/samples.") - parseListIndividualsExtraCols :: Parser ListEntity -parseListIndividualsExtraCols = [String] -> ListEntity + parseListIndividualsExtraCols :: Parser ListEntity +parseListIndividualsExtraCols = [String] -> ListEntity ListIndividuals forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall (f :: * -> *) a. Alternative f => f a -> f [a] OP.many Parser String -parseExtraCol - parseExtraCol :: Parser String -parseExtraCol = forall s. IsString s => Mod OptionFields s -> Parser s +parseExtraCol + parseExtraCol :: Parser String +parseExtraCol = forall s. IsString s => Mod OptionFields s -> Parser s OP.strOption ( forall (f :: * -> *) a. HasName f => Char -> Mod f a OP.short Char @@ -1822,9 +1822,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" -> forall a b. b -> Either a b Right PlinkPopNameMode @@ -1921,10 +1921,10 @@ parseMaybeCertFiles :: Parser (Maybe (String, [String], String)) parseMaybeCertFiles = 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 = (,,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b + parseFiles :: Parser (String, [String], String) +parseFiles = (,,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parser String parseCertFile forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> forall (f :: * -> *) a. Alternative f => f a -> f [a] @@ -1986,14 +1986,14 @@ parseArchiveBasePaths :: Parser [(String, String)] parseArchiveBasePaths = 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 = forall a. ReadM a -> Mod OptionFields a -> Parser a + parseArchiveBasePath :: OP.Parser (String, FilePath) + parseArchiveBasePath :: Parser (String, String) +parseArchiveBasePath = forall a. ReadM a -> Mod OptionFields a -> Parser a OP.option (forall a. (String -> Either String a) -> ReadM a OP.eitherReader String -> Either String (String, String) -parseArchiveNameAndPath) ( +parseArchiveNameAndPath) ( forall (f :: * -> *) a. HasName f => String -> Mod f a OP.long String "baseDir" forall a. Semigroup a => a -> a -> a @@ -2012,30 +2012,30 @@ \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 = forall a. Eq a => [a] -> [a] -> [[a]] + parseArchiveNameAndPath :: String -> Either String (String, FilePath) + parseArchiveNameAndPath :: String -> Either String (String, String) +parseArchiveNameAndPath String +str = + let parts :: [String] +parts = forall a. Eq a => [a] -> [a] -> [[a]] splitOn String "=" String -str +str in case [String] -parts of - [String -name, String -fp] -> forall (m :: * -> *) a. Monad m => a -> m a +parts of + [String +name, String +fp] -> forall (m :: * -> *) a. Monad m => a -> m a return (String -name, String -fp) +name, String +fp) [String] _ -> forall a b. a -> Either a b Left forall a b. (a -> b) -> a -> b $ String "could not parse archive and base directory " forall a. [a] -> [a] -> [a] ++ String -str forall a. [a] -> [a] -> [a] +str forall a. [a] -> [a] -> [a] ++ String ". Please use format name=path " diff --git a/src/Poseidon.CLI.Rectify.html b/src/Poseidon.CLI.Rectify.html index 76f46296..253eda33 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" @@ -108,356 +108,356 @@ (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 forall a b. (a -> b) -> a -> b $ [Char] "Rectifying package: " forall a. [a] -> [a] -> [a] ++ 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 = forall (m :: * -> *) a. Monad m => a -> m a +Nothing PoseidonPackage +pac = 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" 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 = forall (m :: * -> *) a. Monad m => a -> m a +Nothing PoseidonPackage +pac = 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" forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -pac { posPacContributor :: [ContributorSpec] +pac { posPacContributor :: [ContributorSpec] posPacContributor = forall a. Eq a => [a] -> [a] nub (PoseidonPackage -> [ContributorSpec] posPacContributor PoseidonPackage -pac forall a. [a] -> [a] -> [a] +pac 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] "Update no checksums" forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> 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 forall a. a -> Maybe a Just forall (m :: * -> *) b a. (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 forall (m :: * -> *) a. Monad m => a -> m a return 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 forall a. a -> Maybe a Just forall (m :: * -> *) b a. (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 forall (m :: * -> *) a. Monad m => a -> m a return 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 forall a. a -> Maybe a Just forall (m :: * -> *) b a. (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 forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ GenotypeDataSpec -> Maybe [Char] indFileChkSum GenotypeDataSpec -gd +gd forall (m :: * -> *) a. Monad m => a -> m a return 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 forall (m :: * -> *) a. Monad m => a -> m a return 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 -> forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ PoseidonPackage -> Maybe [Char] posPacJannoFileChkSum PoseidonPackage -pac - Just [Char] -fn -> forall a. a -> Maybe a +pac + Just [Char] +fn -> forall a. a -> Maybe a Just forall (m :: * -> *) b a. (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 forall (m :: * -> *) a. Monad m => a -> m a return 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 -> forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ PoseidonPackage -> Maybe [Char] posPacSeqSourceFileChkSum PoseidonPackage -pac - Just [Char] -fn -> forall a. a -> Maybe a +pac + Just [Char] +fn -> forall a. a -> Maybe a Just forall (m :: * -> *) b a. (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 forall (m :: * -> *) a. Monad m => a -> m a return 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 -> forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ PoseidonPackage -> Maybe [Char] posPacBibFileChkSum PoseidonPackage -pac - Just [Char] -fn -> forall a. a -> Maybe a +pac + Just [Char] +fn -> forall a. a -> Maybe a Just forall (m :: * -> *) b a. (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 forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ PoseidonPackage -> Maybe [Char] posPacBibFileChkSum PoseidonPackage -pac +pac forall (m :: * -> *) a. Monad m => a -> m a return 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 = forall (m :: * -> *) a. MonadIO m => IO a -> m a + getChk :: [Char] -> ReaderT Env IO [Char] +getChk = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> IO [Char] getChecksum - exists :: [Char] -> ReaderT Env IO Bool -exists = forall (m :: * -> *) a. MonadIO m => IO a -> m a + exists :: [Char] -> ReaderT Env IO Bool +exists = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> IO Bool doesFileExist @@ -465,8 +465,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" @@ -474,21 +474,21 @@ liftIO 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" @@ -496,31 +496,31 @@ liftIO 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 _) <- 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 = forall b a. b -> (a -> b) -> Maybe a -> b maybe (forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b @@ -533,33 +533,33 @@ Just forall b c a. (b -> c) -> (a -> b) -> a -> c . VersionComponent -> Version -> Version updateThreeComponentVersion VersionComponent -component) +component) (forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PoseidonPackage -pac) +pac) } , posPacLastModified :: Maybe Day posPacLastModified = forall a. a -> Maybe a Just Day -today +today } 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 = forall (m :: * -> *) a. Monad m => a -> m a +Nothing PoseidonPackage +pac = 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 () @@ -570,7 +570,7 @@ $ [Char] -> [Char] -> IO () writeFile (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> [Char] -> [Char] +pac [Char] -> [Char] -> [Char] </> [Char] "CHANGELOG.md") forall a b. (a -> b) -> a -> b $ @@ -581,50 +581,50 @@ fromJust forall a b. (a -> b) -> a -> b $ forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PoseidonPackage -pac) forall a. [a] -> [a] -> [a] +pac) forall a. [a] -> [a] -> [a] ++ [Char] ": " forall a. [a] -> [a] -> [a] ++ [Char] -logText forall a. [a] -> [a] -> [a] +logText forall a. [a] -> [a] -> [a] ++ [Char] "\n" forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -pac { posPacChangelogFile :: Maybe [Char] +pac { posPacChangelogFile :: Maybe [Char] posPacChangelogFile = 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + [Char] +changelogFile <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> IO [Char] readFile (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> [Char] -> [Char] +pac [Char] -> [Char] -> [Char] </> [Char] -x) +x) forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> IO () removeFile (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> [Char] -> [Char] +pac [Char] -> [Char] -> [Char] </> [Char] -x) +x) forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> [Char] -> IO () writeFile (PoseidonPackage -> [Char] posPacBaseDir PoseidonPackage -pac [Char] -> [Char] -> [Char] +pac [Char] -> [Char] -> [Char] </> [Char] -x) forall a b. (a -> b) -> a -> b +x) forall a b. (a -> b) -> a -> b $ [Char] "- V " forall a. [a] -> [a] -> [a] @@ -633,17 +633,17 @@ fromJust forall a b. (a -> b) -> a -> b $ forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PoseidonPackage -pac) forall a. [a] -> [a] -> [a] +pac) forall a. [a] -> [a] -> [a] ++ [Char] ": " forall a. [a] -> [a] -> [a] ++ [Char] -logText forall a. [a] -> [a] -> [a] +logText forall a. [a] -> [a] -> [a] ++ [Char] "\n" forall a. [a] -> [a] -> [a] ++ [Char] -changelogFile +changelogFile 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 34b84d38..172f979b 100644 --- a/src/Poseidon.CLI.Serve.html +++ b/src/Poseidon.CLI.Serve.html @@ -63,7 +63,7 @@ , ServeOptions -> Maybe ([Char], [[Char]], [Char]) cliCertFiles :: Maybe (FilePath, [FilePath], FilePath) } - deriving (Int -> ServeOptions -> ShowS + deriving (Int -> ServeOptions -> ShowS [ServeOptions] -> ShowS ServeOptions -> [Char] forall a. @@ -80,55 +80,55 @@ 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + MVar () +dummy <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a. IO (MVar a) 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 = 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 forall a b. (a -> b) -> a -> b @@ -138,35 +138,35 @@ fst forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. [a] -> a head) ArchiveStore [PoseidonPackage] -archiveStore forall a. [a] -> [a] -> [a] +archiveStore 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 -> 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]] @@ -174,17 +174,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 forall a b. (a -> b) -> a -> b +runScotty forall a b. (a -> b) -> a -> b $ do Middleware -> ScottyM () middleware Middleware @@ -196,7 +196,7 @@ $ do LogA -> ActionM () logRequest LogA -logA +logA Text -> ActionM () text forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> Text @@ -214,27 +214,27 @@ $ do LogA -> ActionM () logRequest LogA -logA - [PoseidonPackage] -pacs <- forall a. ArchiveStore a -> ActionM a +logA + [PoseidonPackage] +pacs <- forall a. ArchiveStore a -> ActionM a getItemFromArchiveStore ArchiveStore [PoseidonPackage] -archiveStore - [PackageInfo] -pacInfos <- forall (m :: * -> *). +archiveStore + [PackageInfo] +pacInfos <- 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 forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ [[Char]] -> Maybe ApiReturnData -> ServerApiReturnType ServerApiReturnType [] (forall a. a -> Maybe a Just ApiReturnData -retData) +retData) RoutePattern -> ActionM () -> ScottyM () get RoutePattern @@ -244,27 +244,27 @@ $ do LogA -> ActionM () logRequest LogA -logA - [PoseidonPackage] -pacs <- forall a. ArchiveStore a -> ActionM a +logA + [PoseidonPackage] +pacs <- forall a. ArchiveStore a -> ActionM a getItemFromArchiveStore ArchiveStore [PoseidonPackage] -archiveStore - [GroupInfo] -groupInfos <- forall (m :: * -> *). +archiveStore + [GroupInfo] +groupInfos <- 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 forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ [[Char]] -> Maybe ApiReturnData -> ServerApiReturnType ServerApiReturnType [] (forall a. a -> Maybe a Just ApiReturnData -retData) +retData) RoutePattern -> ActionM () -> ScottyM () get RoutePattern @@ -274,13 +274,13 @@ $ do LogA -> ActionM () logRequest LogA -logA - [PoseidonPackage] -pacs <- forall a. ArchiveStore a -> ActionM a +logA + [PoseidonPackage] +pacs <- forall a. ArchiveStore a -> ActionM a getItemFromArchiveStore ArchiveStore [PoseidonPackage] -archiveStore - Maybe [Char] -maybeAdditionalColumnsString <- (forall a. a -> Maybe a +archiveStore + Maybe [Char] +maybeAdditionalColumnsString <- (forall a. a -> Maybe a Just forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. Parsable a => Text -> ActionM a param Text @@ -289,61 +289,61 @@ _ -> forall (m :: * -> *) a. Monad m => a -> m a return forall a. Maybe a Nothing) - [ExtendedIndividualInfo] -indInfo <- case Maybe [Char] -maybeAdditionalColumnsString of - Just [Char] -additionalColumnsString -> - let additionalColumnNames :: [[Char]] -additionalColumnNames = forall a. Eq a => [a] -> [a] -> [[a]] + [ExtendedIndividualInfo] +indInfo <- case Maybe [Char] +maybeAdditionalColumnsString of + Just [Char] +additionalColumnsString -> + let additionalColumnNames :: [[Char]] +additionalColumnNames = forall a. Eq a => [a] -> [a] -> [[a]] splitOn [Char] "," [Char] -additionalColumnsString +additionalColumnsString in forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> [[Char]] -> m [ExtendedIndividualInfo] getExtendedIndividualInfo [PoseidonPackage] -pacs [[Char]] -additionalColumnNames +pacs [[Char]] +additionalColumnNames Maybe [Char] Nothing -> forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> [[Char]] -> m [ExtendedIndividualInfo] getExtendedIndividualInfo [PoseidonPackage] -pacs [] - let retData :: ApiReturnData -retData = [ExtendedIndividualInfo] -> ApiReturnData +pacs [] + let retData :: ApiReturnData +retData = [ExtendedIndividualInfo] -> ApiReturnData ApiReturnExtIndividualInfo [ExtendedIndividualInfo] -indInfo +indInfo forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ [[Char]] -> Maybe ApiReturnData -> ServerApiReturnType ServerApiReturnType [] (forall a. a -> Maybe a Just ApiReturnData -retData) +retData) -- API for retreiving package zip files forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (forall a. Maybe a -> Bool isJust Maybe [Char] -maybeZipPath) forall b c a. (b -> c) -> (a -> b) -> a -> c +maybeZipPath) forall b c a. (b -> c) -> (a -> b) -> a -> c . RoutePattern -> ActionM () -> ScottyM () get RoutePattern "/zip_file/:package_name" forall a b. (a -> b) -> a -> b $ do LogA -> ActionM () logRequest LogA -logA - ZipStore -zipStore <- forall a. ArchiveStore a -> ActionM a +logA + ZipStore +zipStore <- forall a. ArchiveStore a -> ActionM a getItemFromArchiveStore [([Char], ZipStore)] -zipArchiveStore - [Char] -packageName <- forall a. Parsable a => Text -> ActionM a +zipArchiveStore + [Char] +packageName <- forall a. Parsable a => Text -> ActionM a param Text "package_name" - Maybe [Char] -maybeVersionString <- (forall a. a -> Maybe a + Maybe [Char] +maybeVersionString <- (forall a. a -> Maybe a Just forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. Parsable a => Text -> ActionM a param Text @@ -352,17 +352,17 @@ _ -> forall (m :: * -> *) a. Monad m => a -> m a return forall a. Maybe a Nothing) - Maybe Version -maybeVersion <- case Maybe [Char] -maybeVersionString of + Maybe Version +maybeVersion <- case Maybe [Char] +maybeVersionString of Maybe [Char] Nothing -> forall (m :: * -> *) a. Monad m => a -> m a return 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 -> forall a. Text -> ActionM a raise forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -371,13 +371,13 @@ $ [Char] "Could not parse package version string " forall a. [a] -> [a] -> [a] ++ [Char] -versionStr - Just Version -v -> forall (m :: * -> *) a. Monad m => a -> m a +versionStr + Just Version +v -> forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a. a -> Maybe a Just Version -v +v case forall b a. Ord b => (a -> b) -> [a] -> [a] sortOn (forall a. a -> Down a Down forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -386,13 +386,13 @@ . forall a. (a -> Bool) -> [a] -> [a] filter ((forall a. Eq a => a -> a -> Bool ==[Char] -packageName) forall b c a. (b -> c) -> (a -> b) -> a -> c +packageName) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. HasNameAndVersion a => a -> [Char] getPacName forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> a fst) forall a b. (a -> b) -> a -> b $ ZipStore -zipStore of +zipStore of [] -> forall a. Text -> ActionM a raise forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> Text @@ -400,57 +400,57 @@ $ [Char] "unknown package " 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 forall a. HasNameAndVersion a => a -> Maybe Version +fn + Just Version +v -> if forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PacNameAndVersion -pacNameAndVersion forall a. Eq a => a -> a -> Bool +pacNameAndVersion forall a. Eq a => a -> a -> Bool == forall a. a -> Maybe a Just Version -v then [Char] -> ActionM () +v then [Char] -> ActionM () file [Char] -fn else forall a. Text -> ActionM a +fn else forall a. Text -> ActionM a raise forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> Text pack forall a b. (a -> b) -> a -> b $ [Char] "Package " forall a. [a] -> [a] -> [a] ++ [Char] -packageName forall a. [a] -> [a] -> [a] +packageName forall a. [a] -> [a] -> [a] ++ [Char] " is not available for version " 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 forall a. (a -> Bool) -> [a] -> [a] +fnLatest + Just Version +v -> case forall a. (a -> Bool) -> [a] -> [a] filter ((forall a. Eq a => a -> a -> Bool ==forall a. a -> Maybe a Just Version -v) forall b c a. (b -> c) -> (a -> b) -> a -> c +v) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> a fst) ZipStore -pl of +pl of [] -> forall a. Text -> ActionM a raise forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> Text @@ -458,17 +458,17 @@ $ [Char] "Package " forall a. [a] -> [a] -> [a] ++ [Char] -packageName forall a. [a] -> [a] -> [a] +packageName forall a. [a] -> [a] -> [a] ++ [Char] "is not available for version " 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 _ -> forall a. HasCallStack => [Char] -> a error [Char] @@ -484,80 +484,80 @@ readArchiveStore :: [([Char], [Char])] -> PackageReadOptions -> PoseidonIO (ArchiveStore [PoseidonPackage]) -readArchiveStore [([Char], [Char])] -archBaseDirs PackageReadOptions -pacReadOpts = do - let archiveNames :: [[Char]] -archiveNames = forall a. Eq a => [a] -> [a] +readArchiveStore [([Char], [Char])] +archBaseDirs PackageReadOptions +pacReadOpts = do + let archiveNames :: [[Char]] +archiveNames = forall a. Eq a => [a] -> [a] nub forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> a fst forall a b. (a -> b) -> a -> b $ [([Char], [Char])] -archBaseDirs +archBaseDirs forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM [[Char]] -archiveNames forall a b. (a -> b) -> a -> b -$ \[Char] -archiveName -> do +archiveNames forall a b. (a -> b) -> a -> b +$ \[Char] +archiveName -> do [Char] -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ [Char] "Loading packages for archive " forall a. [a] -> [a] -> [a] ++ [Char] -archiveName - let relevantDirs :: [[Char]] -relevantDirs = forall a b. (a -> b) -> [a] -> [b] +archiveName + let relevantDirs :: [[Char]] +relevantDirs = forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> b snd forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. (a -> Bool) -> [a] -> [a] filter ((forall a. Eq a => a -> a -> Bool ==[Char] -archiveName) forall b c a. (b -> c) -> (a -> b) -> a -> c +archiveName) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> a fst) 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 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 = forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM ArchiveStore [PoseidonPackage] -archiveStore forall a b. (a -> b) -> a -> b -$ \([Char] -archiveName, [PoseidonPackage] -packages) -> do +archiveStore forall a b. (a -> b) -> a -> b +$ \([Char] +archiveName, [PoseidonPackage] +packages) -> do [Char] -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ [Char] "Zipping packages in archive " forall a. [a] -> [a] -> [a] ++ [Char] -archiveName +archiveName ([Char] -archiveName,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b +archiveName,) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall (t :: * -> *) (m :: * -> *) a b. (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" @@ -566,61 +566,61 @@ $ Bool -> [Char] -> IO () createDirectoryIfMissing Bool True ([Char] -zipPath [Char] -> ShowS +zipPath [Char] -> ShowS </> [Char] -archiveName) - let combinedPackageVersionTitle :: [Char] -combinedPackageVersionTitle = forall a. HasNameAndVersion a => a -> [Char] +archiveName) + let combinedPackageVersionTitle :: [Char] +combinedPackageVersionTitle = 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + Bool +zipFileOutdated <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ PoseidonPackage -> [Char] -> IO Bool checkZipFileOutdated PoseidonPackage -pac [Char] -fn +pac [Char] +fn forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -zipFileOutdated forall a b. (a -> b) -> a -> b +zipFileOutdated forall a b. (a -> b) -> a -> b $ do [Char] -> PoseidonIO () logInfo ([Char] "Zip Archive for package " forall a. [a] -> [a] -> [a] ++ [Char] -combinedPackageVersionTitle forall a. [a] -> [a] -> [a] +combinedPackageVersionTitle forall a. [a] -> [a] -> [a] ++ [Char] " missing or outdated. Zipping now") - Archive -zip_ <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + Archive +zip_ <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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_ forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> ByteString -> IO () B.writeFile [Char] -fn ByteString -zip_raw +fn ByteString +zip_raw 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] @@ -633,8 +633,8 @@ parseVersionString :: String -> Maybe Version parseVersionString :: [Char] -> Maybe Version -parseVersionString [Char] -vStr = case forall a. (a -> Bool) -> [a] -> [a] +parseVersionString [Char] +vStr = case forall a. (a -> Bool) -> [a] -> [a] filter ((forall a. Eq a => a -> a -> Bool ==[Char] "") forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -643,22 +643,22 @@ $ forall a. ReadP a -> ReadS a readP_to_S ReadP Version parseVersion [Char] -vStr of - [(Version -v', [Char] +vStr of + [(Version +v', [Char] "")] -> forall a. a -> Maybe a Just Version -v' +v' [(Version, [Char])] _ -> forall a. Maybe a Nothing conditionOnClientVersion :: ActionM ServerApiReturnType -> ActionM () conditionOnClientVersion :: ActionM ServerApiReturnType -> ActionM () -conditionOnClientVersion ActionM ServerApiReturnType -contentAction = do - Maybe [Char] -maybeClientVersion <- (forall a. a -> Maybe a +conditionOnClientVersion ActionM ServerApiReturnType +contentAction = do + Maybe [Char] +maybeClientVersion <- (forall a. a -> Maybe a Just forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. Parsable a => Text -> ActionM a param Text @@ -667,10 +667,10 @@ _ -> forall (m :: * -> *) a. Monad m => a -> m a return 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 -> forall (m :: * -> *) a. Monad m => a -> m a return (Version @@ -679,32 +679,32 @@ ++ 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 -> forall (m :: * -> *) a. Monad m => a -> m a +versionString of + Just Version +v -> forall (m :: * -> *) a. Monad m => a -> m a return (Version -v, []) +v, []) Maybe Version Nothing -> forall (m :: * -> *) a. Monad m => a -> m a return (Version version, [[Char] "Could not parse Client Version string " forall a. [a] -> [a] -> [a] ++ [Char] -versionString forall a. [a] -> [a] -> [a] +versionString forall a. [a] -> [a] -> [a] ++ [Char] ", assuming latest version " forall a. [a] -> [a] -> [a] ++ Version -> [Char] showVersion Version version]) if Version -clientVersion forall a. Ord a => a -> a -> Bool +clientVersion 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 " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show Version @@ -718,350 +718,350 @@ ServerApiReturnType ([[Char]] genericServerMessages forall a. [a] -> [a] -> [a] ++ [[Char]] -versionWarnings forall a. [a] -> [a] -> [a] +versionWarnings forall a. [a] -> [a] -> [a] ++ [[Char] -msg]) forall a. Maybe a +msg]) 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 forall a. ToJSON a => a -> ActionM () json forall a b. (a -> b) -> a -> b $ [[Char]] -> Maybe ApiReturnData -> ServerApiReturnType ServerApiReturnType ([[Char]] genericServerMessages forall a. [a] -> [a] -> [a] ++ [[Char]] -versionWarnings forall a. [a] -> [a] -> [a] +versionWarnings 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 -> 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 -> 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 -> 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 -> 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 -> 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) forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ 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 forall (m :: * -> *) a. Monad m => a -> m a return Bool True where - checkOutdated :: UTCTime -> [Char] -> IO Bool -checkOutdated UTCTime -zipModTime [Char] -fn_ = (forall a. Ord a => a -> a -> Bool + checkOutdated :: UTCTime -> [Char] -> IO Bool +checkOutdated UTCTime +zipModTime [Char] +fn_ = (forall a. Ord a => a -> a -> Bool > UTCTime -zipModTime) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b +zipModTime) 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 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addJanno forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +addJanno forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addBib forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +addBib forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addReadme forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +addReadme forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addChangelog forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +addChangelog forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addInd forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +addInd forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addSnp forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +addSnp forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Archive -> IO Archive -addGeno forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b +addGeno 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 -> 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 -> 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 -> 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 -> 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 -> 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 forall b c a. (b -> c) -> (a -> b) -> a -> c . PoseidonPackage -> GenotypeDataSpec posPacGenotypeData 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 forall b c a. (b -> c) -> (a -> b) -> a -> c . PoseidonPackage -> GenotypeDataSpec posPacGenotypeData 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 forall b c a. (b -> c) -> (a -> b) -> a -> c . PoseidonPackage -> GenotypeDataSpec posPacGenotypeData 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 <- forall a b. (RealFrac a, Integral b) => a -> b +fullFN + Integer +modTime <- forall a b. (RealFrac a, Integral b) => a -> b round forall b c a. (b -> c) -> (a -> b) -> a -> c . UTCTime -> POSIXTime utcTimeToPOSIXSeconds 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 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 () @@ -1071,13 +1071,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 forall a b. (a -> b) -> a -> b @@ -1085,119 +1085,119 @@ "Server now listening via HTTPS on " forall a. [a] -> [a] -> [a] ++ 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 forall b c a. (b -> c) -> (a -> b) -> a -> c +port forall b c a. (b -> c) -> (a -> b) -> a -> c . IO () -> Settings -> Settings setBeforeMainLoop (forall a. MVar a -> a -> IO () putMVar MVar () -serverReady ()) forall a b. (a -> b) -> a -> b +serverReady ()) forall a b. (a -> b) -> a -> b $ Settings defaultSettings forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ do - Application -app <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + Application +app <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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 forall a b. (a -> b) -> a -> b $ [Char] "Server now listening via HTTP on " forall a. [a] -> [a] -> [a] ++ 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 forall b c a. (b -> c) -> (a -> b) -> a -> c +port forall b c a. (b -> c) -> (a -> b) -> a -> c . IO () -> Settings -> Settings setBeforeMainLoop (forall a. MVar a -> a -> IO () putMVar MVar () -serverReady ()) forall a b. (a -> b) -> a -> b +serverReady ()) forall a b. (a -> b) -> a -> b $ Settings defaultSettings forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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 forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () logWithEnv LogA -logA forall b c a. (b -> c) -> (a -> b) -> a -> c +logA forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> PoseidonIO () logDebug forall a b. (a -> b) -> a -> b $ [Char] "Request: Path=" forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show [Text] -p forall a. [a] -> [a] -> [a] +p forall a. [a] -> [a] -> [a] ++ [Char] ", qstring=" forall a. [a] -> [a] -> [a] ++ 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 <- (forall a. a -> Maybe a +getItemFromArchiveStore ArchiveStore a +store = do + Maybe [Char] +maybeArchiveName <- (forall a. a -> Maybe a Just forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. Parsable a => Text -> ActionM a param Text @@ -1207,7 +1207,7 @@ return forall a. Maybe a Nothing) case Maybe [Char] -maybeArchiveName of +maybeArchiveName of Maybe [Char] Nothing -> forall (m :: * -> *) a. Monad m => a -> m a return forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -1216,12 +1216,12 @@ . forall a. [a] -> a head forall a b. (a -> b) -> a -> b $ ArchiveStore a -store - Just [Char] -a -> case forall a b. Eq a => a -> [(a, b)] -> Maybe b +store + Just [Char] +a -> case 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 -> forall a. Text -> ActionM a raise forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -1231,7 +1231,7 @@ [Char] "The requested archive named " forall a. [a] -> [a] -> [a] ++ [Char] -a forall a. [a] -> [a] -> [a] +a forall a. [a] -> [a] -> [a] ++ [Char] " does not exist. Possible archives are " forall a. [a] -> [a] -> [a] ++ @@ -1239,10 +1239,10 @@ show (forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> a fst ArchiveStore a -store) - Just a -pacs -> forall (m :: * -> *) a. Monad m => a -> m a +store) + Just a +pacs -> 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 16ed5a4a..4034a045 100644 --- a/src/Poseidon.CLI.Summarise.html +++ b/src/Poseidon.CLI.Summarise.html @@ -45,19 +45,19 @@ -- | 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] +runSummarise (SummariseOptions [String] +baseDirs Bool +rawOutput) = do + [PoseidonPackage] +allPackages <- PackageReadOptions -> [String] -> PoseidonIO [PoseidonPackage] readPoseidonPackageCollection PackageReadOptions pacReadOpts [String] -baseDirs - let jannos :: [JannoRows] -jannos = forall a b. (a -> b) -> [a] -> [b] +baseDirs + let jannos :: [JannoRows] +jannos = forall a b. (a -> b) -> [a] -> [b] map PoseidonPackage -> JannoRows posPacJanno [PoseidonPackage] -allPackages +allPackages String -> PoseidonIO () logInfo String "Note that only the latest versions of packages are included in the summary" @@ -66,30 +66,30 @@ $ JannoRows -> Bool -> IO () summariseJannoRows (forall a. Monoid a => [a] -> a mconcat [JannoRows] -jannos) Bool -rawOutput +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 +summariseJannoRows (JannoRows [JannoRow] +rows) Bool +rawOutput = do + ([String] +tableH, [[String]] +tableB) <- do + let tableH :: [String] +tableH = [String "Summary", String "Value"] - tableB :: [[String]] -tableB = [ + tableB :: [[String]] +tableB = [ [String "Nr Samples" , forall a. Show a => a -> String show (forall (t :: * -> *) a. Foldable t => t a -> Int length [JannoRow] -rows)], +rows)], [String "Samples" , [String] -> String @@ -100,7 +100,7 @@ map JannoRow -> String jPoseidonID forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Nr Primary Groups" , forall a. Ord a => [a] -> String @@ -113,7 +113,7 @@ . JannoRow -> JannoStringList jGroupName) forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Primary Groups" , String -> [(String, Int)] -> String @@ -129,7 +129,7 @@ . JannoRow -> JannoStringList jGroupName) forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Nr Publications" , forall a. Ord a => [a] -> String @@ -141,7 +141,7 @@ mapMaybe JannoRow -> Maybe JannoStringList jPublication forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Publications" , [String] -> String @@ -155,7 +155,7 @@ mapMaybe JannoRow -> Maybe JannoStringList jPublication forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Nr Countries" , forall a. Ord a => [a] -> String @@ -164,7 +164,7 @@ mapMaybe JannoRow -> Maybe String jCountry forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Countries" , String -> [(Maybe String, Int)] -> String @@ -176,21 +176,21 @@ map JannoRow -> Maybe String jCountry forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Mean age BC/AD" , [Double] -> String meanAndSdInteger forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] -map (\(BCADAge Int -x) -> forall a b. (Integral a, Num b) => a -> b +map (\(BCADAge Int +x) -> forall a b. (Integral a, Num b) => a -> b fromIntegral Int -x) forall b c a. (b -> c) -> (a -> b) -> a -> c +x) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe JannoRow -> Maybe BCADAge jDateBCADMedian forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Dating type" , forall a. Show a => String -> [(Maybe a, Int)] -> String @@ -202,7 +202,7 @@ map JannoRow -> Maybe JannoDateType jDateType forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Sex distribution" , forall a. Show a => String -> [(a, Int)] -> String @@ -214,7 +214,7 @@ map JannoRow -> JannoSex jGeneticSex forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "MT haplogroups" , String -> [(Maybe String, Int)] -> String @@ -226,7 +226,7 @@ map JannoRow -> Maybe String jMTHaplogroup forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Y haplogroups" , String -> [(Maybe String, Int)] -> String @@ -238,21 +238,21 @@ map JannoRow -> Maybe String jYHaplogroup forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "% endogenous DNA" , Int -> [Double] -> String meanAndSdRoundTo Int 2 forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] -map (\(Percent Double -x) -> Double -x) forall b c a. (b -> c) -> (a -> b) -> a -> c +map (\(Percent Double +x) -> Double +x) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe JannoRow -> Maybe Percent jEndogenous forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Nr of SNPs" , [Double] -> String @@ -264,7 +264,7 @@ mapMaybe JannoRow -> Maybe Int jNrSNPs forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Coverage on target" , Int -> [Double] -> String @@ -274,7 +274,7 @@ mapMaybe JannoRow -> Maybe Double jCoverageOnTargets forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "Library type" , forall a. Show a => String -> [(Maybe a, Int)] -> String @@ -286,7 +286,7 @@ map JannoRow -> Maybe JannoLibraryBuilt jLibraryBuilt forall a b. (a -> b) -> a -> b $ [JannoRow] -rows], +rows], [String "UDG treatment" , forall a. Show a => String -> [(Maybe a, Int)] -> String @@ -298,14 +298,14 @@ map JannoRow -> Maybe JannoUDG jUDG forall a b. (a -> b) -> a -> b $ [JannoRow] -rows] +rows] ] forall (m :: * -> *) a. Monad m => a -> m a return ([String] -tableH, [[String]] -tableB) - let colSpecs :: [ColSpec] -colSpecs = forall a. Int -> a -> [a] +tableH, [[String]] +tableB) + let colSpecs :: [ColSpec] +colSpecs = forall a. Int -> a -> [a] replicate Int 2 (LenSpec -> Position H -> AlignSpec -> CutMark -> ColSpec column (Int -> LenSpec @@ -315,7 +315,7 @@ def forall a. Default a => a def) if Bool -rawOutput +rawOutput then String -> IO () putStrLn forall a b. (a -> b) -> a -> b $ forall a. [a] -> [[a]] -> [a] @@ -323,34 +323,34 @@ "\n" [forall a. [a] -> [[a]] -> [a] intercalate String "\t" [String] -row | [String] -row <- [[String]] -tableB] +row | [String] +row <- [[String]] +tableB] else String -> IO () putStrLn forall a b. (a -> b) -> a -> b $ forall a. Cell a => [ColSpec] -> TableStyle -> HeaderSpec -> [RowGroup a] -> String tableString [ColSpec] -colSpecs TableStyle +colSpecs TableStyle asciiRoundS ([String] -> HeaderSpec titlesH [String] -tableH) [forall a. [Row a] -> RowGroup a +tableH) [forall a. [Row a] -> RowGroup a rowsG [[String]] -tableB] +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 = forall a. [a] -> [[a]] -> [a] +paste [String] +xs = forall a. [a] -> [[a]] -> [a] intercalate String ", " [String] -xs +xs -uniqueNumber :: Ord a => [a] -> String +uniqueNumber :: Ord a => [a] -> String uniqueNumber :: forall a. Ord a => [a] -> String uniqueNumber = forall a. Show a => a -> String show forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -361,135 +361,135 @@ -- | 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 :: Ord a => [a] -> [(a,Int)] frequency :: forall a. Ord a => [a] -> [(a, Int)] -frequency [a] -list = forall a. (a -> a -> Ordering) -> [a] -> [a] +frequency [a] +list = forall a. (a -> a -> Ordering) -> [a] -> [a] sortBy forall a b. (Ord a, Ord b) => (a, b) -> (a, b) -> Ordering sortTupelsBySndDesc forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] -map (\[a] -l -> (forall a. [a] -> a +map (\[a] +l -> (forall a. [a] -> a head [a] -l, forall (t :: * -> *) a. Foldable t => t a -> Int +l, forall (t :: * -> *) a. Foldable t => t a -> Int length [a] -l)) (forall a. Eq a => [a] -> [[a]] +l)) (forall a. Eq a => [a] -> [[a]] group (forall a. Ord a => [a] -> [a] sort [a] -list)) +list)) -sortTupelsBySndDesc :: (Ord a, Ord b) => (a, b) -> (a, b) -> Ordering +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) +sortTupelsBySndDesc (a +a1, b +b1) (a +a2, b +b2) | b -b1 forall a. Ord a => a -> a -> Bool +b1 forall a. Ord a => a -> a -> Bool < b -b2 = Ordering +b2 = Ordering GT | b -b1 forall a. Ord a => a -> a -> Bool +b1 forall a. Ord a => a -> a -> Bool > b -b2 = Ordering +b2 = Ordering LT | b -b1 forall a. Eq a => a -> a -> Bool +b1 forall a. Eq a => a -> a -> Bool == b -b2 = forall a. Ord a => a -> a -> Ordering +b2 = forall a. Ord a => a -> a -> Ordering compare a -a1 a -a2 +a1 a +a2 | Bool otherwise = 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 :: 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] = forall a. Show a => a -> String +_ [(a, Int) +x] = forall a. Show a => a -> String show (forall a b. (a, b) -> a fst (a, Int) -x) forall a. [a] -> [a] -> [a] +x) forall a. [a] -> [a] -> [a] ++ String ": " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show (forall a b. (a, b) -> b snd (a, Int) -x) -printFrequency String -sep ((a, Int) -x:[(a, Int)] -xs) = forall a. Show a => a -> String +x) +printFrequency String +sep ((a, Int) +x:[(a, Int)] +xs) = forall a. Show a => a -> String show (forall a b. (a, b) -> a fst (a, Int) -x) forall a. [a] -> [a] -> [a] +x) forall a. [a] -> [a] -> [a] ++ String ": " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show (forall a b. (a, b) -> b snd (a, Int) -x) forall a. [a] -> [a] -> [a] +x) forall a. [a] -> [a] -> [a] ++ String -sep forall a. [a] -> [a] -> [a] +sep forall a. [a] -> [a] -> [a] ++ forall a. Show a => String -> [(a, Int)] -> String printFrequency String -sep [(a, Int)] -xs +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 :: 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] = forall a. Show a => Maybe a -> String +_ [(Maybe a, Int) +x] = forall a. Show a => Maybe a -> String maybeShow (forall a b. (a, b) -> a fst (Maybe a, Int) -x) forall a. [a] -> [a] -> [a] +x) forall a. [a] -> [a] -> [a] ++ String ": " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show (forall a b. (a, b) -> b snd (Maybe a, Int) -x) -printFrequencyMaybe String -sep ((Maybe a, Int) -x:[(Maybe a, Int)] -xs) = forall a. Show a => Maybe a -> String +x) +printFrequencyMaybe String +sep ((Maybe a, Int) +x:[(Maybe a, Int)] +xs) = forall a. Show a => Maybe a -> String maybeShow (forall a b. (a, b) -> a fst (Maybe a, Int) -x) forall a. [a] -> [a] -> [a] +x) forall a. [a] -> [a] -> [a] ++ String ": " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show (forall a b. (a, b) -> b snd (Maybe a, Int) -x) forall a. [a] -> [a] -> [a] +x) forall a. [a] -> [a] -> [a] ++ String -sep forall a. [a] -> [a] -> [a] +sep forall a. [a] -> [a] -> [a] ++ forall a. Show a => String -> [(Maybe a, Int)] -> String printFrequencyMaybe String -sep [(Maybe a, Int)] -xs +sep [(Maybe a, Int)] +xs -- | A helper function to unwrap a maybe -maybeShow :: Show a => Maybe a -> String +maybeShow :: Show a => Maybe a -> String maybeShow :: forall a. Show a => Maybe a -> String -maybeShow (Just a -x) = forall a. Show a => a -> String +maybeShow (Just a +x) = forall a. Show a => a -> String show a -x +x maybeShow Maybe a Nothing = String "n/a" @@ -501,34 +501,34 @@ _ [] = String "no values" printFrequencyString String -_ [(String, Int) -x] = forall a b. (a, b) -> a +_ [(String, Int) +x] = forall a b. (a, b) -> a fst (String, Int) -x forall a. [a] -> [a] -> [a] +x forall a. [a] -> [a] -> [a] ++ String ": " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show (forall a b. (a, b) -> b snd (String, Int) -x) -printFrequencyString String -sep ((String, Int) -x:[(String, Int)] -xs) = forall a b. (a, b) -> a +x) +printFrequencyString String +sep ((String, Int) +x:[(String, Int)] +xs) = forall a b. (a, b) -> a fst (String, Int) -x forall a. [a] -> [a] -> [a] +x forall a. [a] -> [a] -> [a] ++ String ": " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show (forall a b. (a, b) -> b snd (String, Int) -x) forall a. [a] -> [a] -> [a] +x) forall a. [a] -> [a] -> [a] ++ String -sep forall a. [a] -> [a] -> [a] +sep forall a. [a] -> [a] -> [a] ++ String -> [(String, Int)] -> String printFrequencyString String -sep [(String, Int)] -xs +sep [(String, Int)] +xs -- | As printFrequencyMaybe, but without additional quoting of strings printFrequencyMaybeString :: String -> [(Maybe String,Int)] -> String @@ -537,43 +537,43 @@ _ [] = String "no values" printFrequencyMaybeString String -_ [(Maybe String, Int) -x] = Maybe String -> String +_ [(Maybe String, Int) +x] = Maybe String -> String maybeShowString (forall a b. (a, b) -> a fst (Maybe String, Int) -x) forall a. [a] -> [a] -> [a] +x) forall a. [a] -> [a] -> [a] ++ String ": " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show (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 (forall a b. (a, b) -> a fst (Maybe String, Int) -x) forall a. [a] -> [a] -> [a] +x) forall a. [a] -> [a] -> [a] ++ String ": " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show (forall a b. (a, b) -> b snd (Maybe String, Int) -x) forall a. [a] -> [a] -> [a] +x) forall a. [a] -> [a] -> [a] ++ String -sep forall a. [a] -> [a] -> [a] +sep forall a. [a] -> [a] -> [a] ++ String -> [(Maybe String, Int)] -> String printFrequencyMaybeString String -sep [(Maybe String, Int)] -xs +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 (Just String +x) = String +x maybeShowString Maybe String Nothing = String "n/a" diff --git a/src/Poseidon.CLI.Survey.html b/src/Poseidon.CLI.Survey.html index 706665cc..7f82b5b6 100644 --- a/src/Poseidon.CLI.Survey.html +++ b/src/Poseidon.CLI.Survey.html @@ -45,12 +45,12 @@ -- | 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 @@ -63,148 +63,148 @@ False , _readOptOnlyLatest :: Bool _readOptOnlyLatest = Bool -onlyLatest +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 = forall a b. (a -> b) -> [a] -> [b] + let packageNames :: [PacNameAndVersion] +packageNames = 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +pac) | PoseidonPackage +pac <- [PoseidonPackage] +allPackages] + [Bool] +genoFilesExist <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) (m :: * -> *) a. (Traversable t, Monad m) => t (m a) -> m (t 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +gd) | (String +d, GenotypeDataSpec +gd) <- [(String, GenotypeDataSpec)] +genotypeDataTuples] + [Bool] +snpFilesExist <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) (m :: * -> *) a. (Traversable t, Monad m) => t (m a) -> m (t 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +gd) | (String +d, GenotypeDataSpec +gd) <- [(String, GenotypeDataSpec)] +genotypeDataTuples] + [Bool] +indFilesExist <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) (m :: * -> *) a. (Traversable t, Monad m) => t (m a) -> m (t 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 = forall a b. (a -> b) -> [a] -> [b] -map (\(Bool -a,Bool -b,Bool -c) -> Bool -a Bool -> Bool -> Bool +gd) | (String +d, GenotypeDataSpec +gd) <- [(String, GenotypeDataSpec)] +genotypeDataTuples] + let genoTypeDataExists :: [Bool] +genoTypeDataExists = forall a b. (a -> b) -> [a] -> [b] +map (\(Bool +a,Bool +b,Bool +c) -> Bool +a Bool -> Bool -> Bool && Bool -b Bool -> Bool -> Bool +b Bool -> Bool -> Bool && Bool -c) forall a b. (a -> b) -> a -> b +c) forall a b. (a -> b) -> a -> b $ 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 = forall a b. (a -> b) -> [a] -> [b] + let jannos :: [JannoRows] +jannos = forall a b. (a -> b) -> [a] -> [b] map PoseidonPackage -> JannoRows posPacJanno [PoseidonPackage] -allPackages +allPackages -- ssf - let ssfs :: [SeqSourceRows] -ssfs = forall a b. (a -> b) -> [a] -> [b] + let ssfs :: [SeqSourceRows] +ssfs = forall a b. (a -> b) -> [a] -> [b] map PoseidonPackage -> SeqSourceRows posPacSeqSource [PoseidonPackage] -allPackages +allPackages -- bib - let bibs :: [BibTeX] -bibs = forall a b. (a -> b) -> [a] -> [b] + let bibs :: [BibTeX] +bibs = 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 <- forall (t :: * -> *) (m :: * -> *) a b. + [[String]] +tableB <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM (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) forall a b. (a -> b) -> a -> b -$ \(PacNameAndVersion -p, Bool -g, JannoRows -j, SeqSourceRows -s, BibTeX -b) -> do +packageNames [Bool] +genoTypeDataExists [JannoRows] +jannos [SeqSourceRows] +ssfs [BibTeX] +bibs) forall a b. (a -> b) -> a -> b +$ \(PacNameAndVersion +p, Bool +g, JannoRows +j, SeqSourceRows +s, BibTeX +b) -> do forall (m :: * -> *) a. Monad m => a -> m a return [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] forall (m :: * -> *) a. Monad m => a -> m a return ([String] -tableH, [[String]] -tableB) - let colSpecs :: [ColSpec] -colSpecs = forall a. Int -> a -> [a] +tableH, [[String]] +tableB) + let colSpecs :: [ColSpec] +colSpecs = forall a. Int -> a -> [a] replicate Int 2 (LenSpec -> Position H -> AlignSpec -> CutMark -> ColSpec column (Int -> LenSpec @@ -214,7 +214,7 @@ def forall a. Default a => a def) if Bool -rawOutput +rawOutput then forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ String -> IO () @@ -224,9 +224,9 @@ "\n" [forall a. [a] -> [[a]] -> [a] intercalate String "\t" [String] -row | [String] -row <- [[String]] -tableB] +row | [String] +row <- [[String]] +tableB] else forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ String -> IO () @@ -235,12 +235,12 @@ Cell a => [ColSpec] -> TableStyle -> HeaderSpec -> [RowGroup a] -> String tableString [ColSpec] -colSpecs TableStyle +colSpecs TableStyle asciiRoundS ([String] -> HeaderSpec titlesH [String] -tableH) [forall a. [Row a] -> RowGroup a +tableH) [forall a. [Row a] -> RowGroup a rowsG [[String]] -tableB] +tableB] -- print help String -> PoseidonIO () logInfo String @@ -248,27 +248,27 @@ 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 ".") forall a. [a] -> [a] -> [a] ++ (if Bool -> Bool not (forall (t :: * -> *) a. Foldable t => t a -> Bool null [SeqSourceRow] -seqSource) then String +seqSource) then String "S" else String ".") forall a. [a] -> [a] -> [a] ++ (if Bool -> Bool not (forall (t :: * -> *) a. Foldable t => t a -> Bool null BibTeX -bib) then String +bib) then String "B" else String ".") forall a. [a] -> [a] -> [a] @@ -276,30 +276,30 @@ "|" forall a. [a] -> [a] -> [a] ++ 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 = forall a. [a] -> [[a]] -> [a] + insertEveryN :: Int -> a -> [a] -> [a] + insertEveryN :: forall a. Int -> a -> [a] -> [a] +insertEveryN Int +n a +y [a] +xs = forall a. [a] -> [[a]] -> [a] intercalate [a -y] forall b c a. (b -> c) -> (a -> b) -> a -> c +y] forall b c a. (b -> c) -> (a -> b) -> a -> c . forall {a}. Int -> [a] -> [[a]] -groups Int -n forall a b. (a -> b) -> a -> b +groups Int +n forall a b. (a -> b) -> a -> b $ [a] -xs - where groups :: Int -> [a] -> [[a]] -groups Int -n_ [a] -xs_ = forall a. (a -> Bool) -> [a] -> [a] +xs + where groups :: Int -> [a] -> [[a]] +groups Int +n_ [a] +xs_ = forall a. (a -> Bool) -> [a] -> [a] takeWhile (Bool -> Bool not forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) a. Foldable t => t a -> Bool @@ -309,33 +309,33 @@ Just forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Int -> [a] -> ([a], [a]) splitAt Int -n_) forall a b. (a -> b) -> a -> b +n_) forall a b. (a -> b) -> a -> b $ [a] -xs_ +xs_ renderJannoCompleteness :: JannoRows -> String renderJannoCompleteness :: JannoRows -> String -renderJannoCompleteness (JannoRows [JannoRow] -rows) = - let ratioString :: String -ratioString = forall a b. (a -> b) -> [a] -> [b] +renderJannoCompleteness (JannoRows [JannoRow] +rows) = + let ratioString :: String +ratioString = forall a b. (a -> b) -> [a] -> [b] map Ratio Int -> Char -prop2Char forall a b. (a -> b) -> a -> b +prop2Char forall a b. (a -> b) -> a -> b $ forall a (xs :: [*]). (Generic a, Code a ~ '[xs], All PresenceCountable xs) => [a] -> [Ratio Int] -getRatiosForEachField [JannoRow] -rows +getRatiosForEachField [JannoRow] +rows in forall a. [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 = forall k l (h :: (k -> *) -> l -> *) (xs :: l) a. (HCollapse h, SListIN h xs) => h (K a) xs -> CollapseTo h a @@ -351,10 +351,10 @@ Proxy :: Proxy PresenceCountable) (forall k a (b :: k). a -> K a b K forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. PresenceCountable a => [a] -> Ratio Int -measureFillState) +measureFillState) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (xs :: [*]). SListI xs => [NP I xs] -> NP [] xs -hunzip +hunzip forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] map (forall {k} (f :: k -> *) (x :: k). NS f '[x] -> f x @@ -363,9 +363,9 @@ unSOP forall b c a. (b -> c) -> (a -> b) -> a -> c . 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 = forall (t :: * -> *) a b. + hunzip :: SListI xs => [NP I xs] -> NP [] xs + hunzip :: forall (xs :: [*]). SListI xs => [NP I xs] -> NP [] xs +hunzip = forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr (forall {k} {l} (h :: (k -> *) -> l -> *) (xs :: l) (f :: k -> *) @@ -379,51 +379,51 @@ (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 = forall (t :: * -> *) a. Foldable t => t a -> Int + measureFillState :: PresenceCountable a => [a] -> Ratio Int + measureFillState :: forall a. PresenceCountable a => [a] -> Ratio Int +measureFillState [a] +vals = + let nrValues :: Int +nrValues = forall (t :: * -> *) a. Foldable t => t a -> Int length [a] -vals - nrFilledValues :: Int -nrFilledValues = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a +vals + nrFilledValues :: Int +nrFilledValues = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map forall a. PresenceCountable a => a -> Int countPresence [a] -vals +vals in Int -nrFilledValues forall a. Integral a => a -> a -> Ratio a +nrFilledValues 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 forall a. Eq a => a -> a -> Bool +r forall a. Eq a => a -> a -> Bool == Ratio Int 0 = Char '.' | Ratio Int -r forall a. Ord a => a -> a -> Bool +r forall a. Ord a => a -> a -> Bool < Ratio Int 0.25 = Char '░' | Ratio Int -r forall a. Ord a => a -> a -> Bool +r forall a. Ord a => a -> a -> Bool < Ratio Int 0.5 = Char '▒' | Ratio Int -r forall a. Ord a => a -> a -> Bool +r forall a. Ord a => a -> a -> Bool < Ratio Int 1 = Char '▓' | Ratio Int -r forall a. Eq a => a -> a -> Bool +r forall a. Eq a => a -> a -> Bool == Ratio Int 1 = Char '█' @@ -432,34 +432,34 @@ '?' -- 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 -countPresence Maybe a +class PresenceCountable a where + countPresence :: a -> Int +instance PresenceCountable (Maybe a) where + countPresence :: Maybe a -> Int +countPresence Maybe a Nothing = Int 0 countPresence (Just a _) = Int 1 instance PresenceCountable String where - countPresence :: String -> Int -countPresence String + countPresence :: String -> Int +countPresence String _ = Int 1 instance PresenceCountable JannoSex where - countPresence :: JannoSex -> Int -countPresence JannoSex + countPresence :: JannoSex -> Int +countPresence JannoSex _ = Int 1 instance PresenceCountable JannoStringList where - countPresence :: JannoStringList -> Int -countPresence JannoStringList + countPresence :: JannoStringList -> Int +countPresence JannoStringList _ = Int 1 instance PresenceCountable CsvNamedRecord where - countPresence :: CsvNamedRecord -> Int -countPresence CsvNamedRecord + countPresence :: CsvNamedRecord -> Int +countPresence CsvNamedRecord _ = Int 0 \ No newline at end of file diff --git a/src/Poseidon.CLI.Timetravel.html b/src/Poseidon.CLI.Timetravel.html index 9b248ab0..8cadf3cc 100644 --- a/src/Poseidon.CLI.Timetravel.html +++ b/src/Poseidon.CLI.Timetravel.html @@ -51,222 +51,222 @@ 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 forall a. Set a -> [a] S.toList forall a b. (a -> b) -> a -> b $ 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + [PackageIteration] +pacStatesToAdd -> do + Either GitHashException GitInfo +eitherGit <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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 forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a +eitherGit of + Left GitHashException +e -> do forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b $ String -> String -> PoseidonException PoseidonGitException String -srcDir (forall a. Show a => a -> String +srcDir (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 forall a b. (a -> b) -> a -> b $ String "Starting at branch " forall a. [a] -> [a] -> [a] ++ String -currentBranch forall a. [a] -> [a] -> [a] +currentBranch forall a. [a] -> [a] -> [a] ++ String " in " forall a. [a] -> [a] -> [a] ++ String -srcDir - LogA -logAction <- PoseidonIO LogA +srcDir + LogA +logAction <- PoseidonIO LogA envLogAction forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ 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 = forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () + recoverPacsIO :: LogA -> [PackageIteration] -> IO () + recoverPacsIO :: LogA -> [PackageIteration] -> IO () +recoverPacsIO LogA +logA [PackageIteration] +pacIters = forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () logWithEnv LogA -logA forall a b. (a -> b) -> a -> b +logA forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) (m :: * -> *) a b. (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 = forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () +recoverPacIter [PackageIteration] +pacIters + gitCheckoutIO :: LogA -> String -> IO () + gitCheckoutIO :: LogA -> String -> IO () +gitCheckoutIO LogA +logA String +s = forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () logWithEnv LogA -logA forall a b. (a -> b) -> a -> b +logA 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 = forall a. HasNameAndVersion a => a -> String +_ String +commit String +path) = do + let pacIterName :: String +pacIterName = forall a. HasNameAndVersion a => a -> String renderNameWithVersion PackageIteration -pacIter +pacIter String -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ String "Recovering package " forall a. [a] -> [a] -> [a] ++ String -pacIterName +pacIterName -- this exists to reduce the number of checkouts - Either GitHashException GitInfo -eitherGit <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + Either GitHashException GitInfo +eitherGit <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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 forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a +eitherGit of + Left GitHashException +e -> do forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b $ String -> String -> PoseidonException PoseidonGitException String -srcDir (forall a. Show a => a -> String +srcDir (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 forall a. Eq a => a -> a -> Bool +currentCommit forall a. Eq a => a -> a -> Bool == String -commit +commit then do String -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ String "Already at the right commit " forall a. [a] -> [a] -> [a] ++ String -commit forall a. [a] -> [a] -> [a] +commit forall a. [a] -> [a] -> [a] ++ String " in " forall a. [a] -> [a] -> [a] ++ String -srcDir +srcDir String -> String -> PoseidonIO () copyDirectory (String -srcDir String -> String -> String +srcDir String -> String -> String </> String -path) (forall a. [a] -> a +path) (forall a. [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) (forall a. [a] -> a +path) (forall a. [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 forall a b. (a -> b) -> a -> b $ String "Checking out " forall a. [a] -> [a] -> [a] ++ String -commit forall a. [a] -> [a] -> [a] +commit forall a. [a] -> [a] -> [a] ++ String " in " forall a. [a] -> [a] -> [a] ++ String -srcDir +srcDir forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ String -> IO () callCommand (String "git -C " forall a. [a] -> [a] -> [a] ++ String -srcDir forall a. [a] -> [a] -> [a] +srcDir forall a. [a] -> [a] -> [a] ++ String " checkout " forall a. [a] -> [a] -> [a] ++ String -commit forall a. [a] -> [a] -> [a] +commit forall a. [a] -> [a] -> [a] ++ String " --quiet") -- Instead of this nasty system call and changing the world with the checkout @@ -277,62 +277,62 @@ copyDirectory :: FilePath -> FilePath -> PoseidonIO () copyDirectory :: String -> String -> PoseidonIO () -copyDirectory String -srcDir String -destDir = do +copyDirectory String +srcDir String +destDir = do String -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ String "Copying dir " forall a. [a] -> [a] -> [a] ++ String -srcDir forall a. [a] -> [a] -> [a] +srcDir forall a. [a] -> [a] -> [a] ++ String " to " forall a. [a] -> [a] -> [a] ++ String -destDir +destDir forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ Bool -> String -> IO () createDirectoryIfMissing Bool True String -destDir - [String] -files <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +destDir + [String] +files <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ String -> IO [String] listDirectory String -srcDir +srcDir forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [String] -files forall a b. (a -> b) -> a -> b -$ \String -file -> do - let srcFile :: String -srcFile = String -srcDir String -> String -> String +files forall a b. (a -> b) -> a -> b +$ \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 forall a b. (a -> b) -> a -> b $ String "Copying: " forall a. [a] -> [a] -> [a] ++ String -srcFile forall a. [a] -> [a] -> [a] +srcFile forall a. [a] -> [a] -> [a] ++ String " -> " forall a. [a] -> [a] -> [a] ++ String -destFile +destFile forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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 c829439f..51cacbf0 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 forall a b. (a -> b) -> a -> b $ [Char] @@ -79,48 +79,48 @@ ++ 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 forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -ignoreDup forall a b. (a -> b) -> a -> b +ignoreDup forall a b. (a -> b) -> a -> b $ do - let allInds :: [IndividualInfo] -allInds = [PoseidonPackage] -> [IndividualInfo] + let allInds :: [IndividualInfo] +allInds = [PoseidonPackage] -> [IndividualInfo] getJointIndividualInfo [PoseidonPackage] -allPackages - duplicateGroups :: [[IndividualInfo]] -duplicateGroups = forall a. (a -> Bool) -> [a] -> [a] +allPackages + duplicateGroups :: [[IndividualInfo]] +duplicateGroups = forall a. (a -> Bool) -> [a] -> [a] filter ((forall a. Ord a => a -> a -> Bool >Int 1) forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -128,24 +128,24 @@ length) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. (a -> a -> Bool) -> [a] -> [[a]] -groupBy (\IndividualInfo -a IndividualInfo -b -> IndividualInfo -> [Char] +groupBy (\IndividualInfo +a IndividualInfo +b -> IndividualInfo -> [Char] indInfoName IndividualInfo -a forall a. Eq a => a -> a -> Bool +a forall a. Eq a => a -> a -> Bool == IndividualInfo -> [Char] indInfoName IndividualInfo -b) +b) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall b a. Ord b => (a -> b) -> [a] -> [a] sortOn IndividualInfo -> [Char] indInfoName forall a b. (a -> b) -> a -> b $ [IndividualInfo] -allInds +allInds forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (forall (t :: * -> *) a. Foldable t => t a -> Bool null [[IndividualInfo]] -duplicateGroups) forall a b. (a -> b) -> a -> b +duplicateGroups) forall a b. (a -> b) -> a -> b $ do [Char] -> PoseidonIO () logError [Char] @@ -155,9 +155,9 @@ (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [[IndividualInfo]] -duplicateGroups forall a b. (a -> b) -> a -> b -$ \[IndividualInfo] -xs -> do +duplicateGroups forall a b. (a -> b) -> a -> b +$ \[IndividualInfo] +xs -> do [Char] -> PoseidonIO () logError forall a b. (a -> b) -> a -> b $ [Char] @@ -167,21 +167,21 @@ indInfoName forall a b. (a -> b) -> a -> b $ forall a. [a] -> a head [IndividualInfo] -xs) +xs) forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [IndividualInfo] -xs forall a b. (a -> b) -> a -> b -$ \IndividualInfo -x -> do +xs forall a b. (a -> b) -> a -> b +$ \IndividualInfo +x -> do [Char] -> PoseidonIO () logError forall a b. (a -> b) -> a -> b $ [Char] " " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show IndividualInfo -x +x forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> PoseidonException @@ -192,53 +192,53 @@ 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 forall a b. (a -> b) -> a -> b $ [Char] "Validating: " forall a. [a] -> [a] -> [a] ++ [Char] -path - ByteString -bs <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +path + ByteString +bs <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> IO ByteString B.readFile [Char] -path - PoseidonYamlStruct -yml <- case forall a. FromJSON a => ByteString -> Either ParseException a +path + PoseidonYamlStruct +yml <- case forall a. FromJSON a => ByteString -> Either ParseException a decodeEither' ByteString -bs of - Left ParseException -err -> forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a +bs of + Left ParseException +err -> forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b $ [Char] -> ParseException -> PoseidonException PoseidonYamlParseException [Char] -path ParseException -err - Right PoseidonYamlStruct -pac -> forall (m :: * -> *) a. Monad m => a -> m a +path ParseException +err + Right PoseidonYamlStruct +pac -> forall (m :: * -> *) a. Monad m => a -> m a return (PoseidonYamlStruct -pac :: PoseidonYamlStruct) +pac :: PoseidonYamlStruct) [Char] -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ [Char] "Read .yml file of package " 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 forall a b. (a -> b) -> a -> b @@ -246,33 +246,33 @@ "Validating: " 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 forall a b. (a -> b) -> a -> b $ [Char] "Validating: " 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 forall a b. (a -> b) -> a -> b $ [Char] @@ -280,27 +280,27 @@ ++ forall a. Show a => a -> [Char] show (forall (t :: * -> *) a. Foldable t => t a -> Int length [JannoRow] -entries) forall a. [a] -> [a] -> [a] +entries) 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 forall a b. (a -> b) -> a -> b $ [Char] "Validating: " 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 forall a b. (a -> b) -> a -> b $ [Char] @@ -308,29 +308,29 @@ ++ forall a. Show a => a -> [Char] show (forall (t :: * -> *) a. Foldable t => t a -> Int length [SeqSourceRow] -entries) forall a. [a] -> [a] -> [a] +entries) 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 forall a b. (a -> b) -> a -> b $ [Char] "Validating: " forall a. [a] -> [a] -> [a] ++ [Char] -path - BibTeX -entries <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +path + BibTeX +entries <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> IO BibTeX readBibTeXFile [Char] -path +path [Char] -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ [Char] @@ -338,37 +338,37 @@ ++ forall a. Show a => a -> [Char] show (forall (t :: * -> *) a. Foldable t => t a -> Int length BibTeX -entries) forall a. [a] -> [a] -> [a] +entries) 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" forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -noExitCode forall a b. (a -> b) -> a -> b +noExitCode forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a. IO a exitSuccess conclude Bool -False Bool -noExitCode = do +False Bool +noExitCode = do [Char] -> PoseidonIO () logError [Char] "Validation failed" forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -noExitCode forall a b. (a -> b) -> a -> b +noExitCode forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a. IO a exitFailure diff --git a/src/Poseidon.Chronicle.html b/src/Poseidon.Chronicle.html index 064e1019..fee4c614 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 forall a. @@ -52,7 +52,7 @@ $cshow :: PoseidonPackageChronicle -> String showsPrec :: Int -> PoseidonPackageChronicle -> ShowS $cshowsPrec :: Int -> PoseidonPackageChronicle -> ShowS -Show, PoseidonPackageChronicle -> PoseidonPackageChronicle -> Bool +Show, PoseidonPackageChronicle -> PoseidonPackageChronicle -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: PoseidonPackageChronicle -> PoseidonPackageChronicle -> Bool $c/= :: PoseidonPackageChronicle -> PoseidonPackageChronicle -> Bool @@ -60,13 +60,13 @@ $c== :: PoseidonPackageChronicle -> PoseidonPackageChronicle -> Bool Eq) -instance FromJSON PoseidonPackageChronicle where - parseJSON :: Value -> Parser PoseidonPackageChronicle -parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a +instance FromJSON PoseidonPackageChronicle where + parseJSON :: Value -> Parser PoseidonPackageChronicle +parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a withObject String "PoseidonYamlStruct" forall a b. (a -> b) -> a -> b -$ \Object -v -> String +$ \Object +v -> String -> Maybe String -> Version -> Day @@ -75,69 +75,69 @@ PoseidonPackageChronicle forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "title" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "description" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "chronicleVersion" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "lastModified" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "packages" forall a. Parser (Maybe a) -> a -> Parser a .!= 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 forall a b. (a -> b) -> a -> b $ [ Key "title" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonPackageChronicle -> String snapYamlTitle PoseidonPackageChronicle -x, +x, Key "description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonPackageChronicle -> Maybe String snapYamlDescription PoseidonPackageChronicle -x, +x, Key "chronicleVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonPackageChronicle -> Version snapYamlChronicleVersion PoseidonPackageChronicle -x, +x, Key "lastModified" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonPackageChronicle -> Day snapYamlLastModified PoseidonPackageChronicle -x] forall a. [a] -> [a] -> [a] +x] forall a. [a] -> [a] -> [a] ++ if Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null (PoseidonPackageChronicle -> Set PackageIteration snapYamlPackages PoseidonPackageChronicle -x) then [Key +x) then [Key "packages" 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 @@ -150,7 +150,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 forall a. @@ -163,198 +163,198 @@ $cshowsPrec :: Int -> 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 forall a. Eq a => a -> a -> Bool +t1 forall a. Eq a => a -> a -> Bool == String -t2) Bool -> Bool -> Bool +t2) Bool -> Bool -> Bool && (Version -v1 forall a. Eq a => a -> a -> Bool +v1 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) forall a. Ord a => a -> a -> Ordering +t1,Version +v1) forall a. Ord a => a -> a -> Ordering `compare` (String -t2,Version -v2) +t2,Version +v2) -instance FromJSON PackageIteration where - parseJSON :: Value -> Parser PackageIteration -parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a +instance FromJSON PackageIteration where + parseJSON :: Value -> Parser PackageIteration +parseJSON = forall a. String -> (Object -> Parser a) -> Value -> Parser a withObject String "packages" forall a b. (a -> b) -> a -> b -$ \Object -v -> String -> Version -> String -> String -> PackageIteration +$ \Object +v -> String -> Version -> String -> String -> PackageIteration PackageIteration forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "title" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "version" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "commit" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v 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" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PackageIteration -> String pacStateTitle PackageIteration -x +x , Key "version" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PackageIteration -> Version pacStateVersion PackageIteration -x +x , Key "commit" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PackageIteration -> String pacStateCommit PackageIteration -x +x , Key "path" 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 +t + getPacVersion :: PackageIteration -> Maybe Version getPacVersion (PackageIteration String -_ Version -v String +_ Version +v String _ String _) = 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 = forall a. Ord a => Set a -> Set a -> Set a +newChronicle + mergedPacSet :: Set PackageIteration +mergedPacSet = 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 forall a. Eq a => a -> a -> Bool +mergedPacSet 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +readChronicle String +p = do + ByteString +bs <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ String -> IO ByteString B.readFile String -p +p case forall a. FromJSON a => ByteString -> Either ParseException a decodeEither' ByteString -bs of - Left ParseException -err -> forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a +bs of + Left ParseException +err -> forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b $ String -> ParseException -> PoseidonException PoseidonYamlParseException String -p ParseException -err - Right PoseidonPackageChronicle -snap -> forall (m :: * -> *) a. Monad m => a -> m a +p ParseException +err + Right PoseidonPackageChronicle +snap -> 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 forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ Bool -> String -> IO () @@ -362,38 +362,38 @@ True forall a b. (a -> b) -> a -> b $ ShowS takeDirectory String -p +p forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ String -> ByteString -> IO () B.writeFile String -p (forall a. ToJSON a => Config -> a -> ByteString +p (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 forall a b. (a -> b) -> a -> b $ (Text -> Text -> Ordering) -> Config -> Config setConfCompare (forall a. Ord a => a -> a -> Ordering compare 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 = forall a. a -> Maybe a -> a + fieldIndex :: Text -> Int +fieldIndex Text +s = forall a. a -> Maybe a -> a fromMaybe (forall (t :: * -> *) a. Foldable t => t a -> Int length [Text] -fields) forall a b. (a -> b) -> a -> b +fields) forall a b. (a -> b) -> a -> b $ Text -s forall a. Eq a => a -> [a] -> Maybe Int +s forall a. Eq a => a -> [a] -> Maybe Int `elemIndex` [Text] -fields - fields :: [Text] -fields = [ +fields + fields :: [Text] +fields = [ Text "title", Text @@ -416,16 +416,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 _) <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO UTCTime getCurrentTime @@ -447,86 +447,86 @@ 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 <- forall (t :: * -> *) (m :: * -> *) a b. +chroniclePackages String +pathToChronicleFile [PoseidonPackage] +pacs = do + [PackageIteration] +pacStateList <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM PoseidonPackage -> PoseidonIO PackageIteration -snapOne [PoseidonPackage] -pacs +snapOne [PoseidonPackage] +pacs forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a. Ord a => [a] -> Set a S.fromList [PackageIteration] -pacStateList +pacStateList where - snapOne :: PoseidonPackage -> PoseidonIO PackageIteration - snapOne :: PoseidonPackage -> PoseidonIO PackageIteration -snapOne PoseidonPackage -pac = do - Version -version <- PoseidonPackage -> PoseidonIO Version + snapOne :: PoseidonPackage -> PoseidonIO PackageIteration + snapOne :: PoseidonPackage -> PoseidonIO 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 forall a b. (a -> b) -> a -> b $ PoseidonPackage -> String posPacBaseDir PoseidonPackage -pac +pac forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ PackageIteration { pacStateTitle :: String pacStateTitle = 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) forall a b. (a -> b) -> a -> b +pathToChronicleFile) 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 forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PoseidonPackage -pac of - Just Version -v -> forall (m :: * -> *) a. Monad m => a -> m a +pac of + Just Version +v -> forall (m :: * -> *) a. Monad m => a -> m a return Version -v +v Maybe Version Nothing -> do - TestMode -testMode <- forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a + TestMode +testMode <- forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a asks Env -> TestMode _envTestMode case TestMode -testMode of +testMode of TestMode Testing -> forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b @@ -547,62 +547,62 @@ ++ forall a. Show a => a -> String show (forall a. HasNameAndVersion a => a -> String getPacName PoseidonPackage -pac) forall a. [a] -> [a] -> [a] +pac) forall a. [a] -> [a] -> [a] ++ String " has no version." getGitCommitHash :: FilePath -> PoseidonIO String getGitCommitHash :: String -> PoseidonIO String -getGitCommitHash String -p = do - TestMode -testMode <- forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a +getGitCommitHash String +p = do + TestMode +testMode <- forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a asks Env -> TestMode _envTestMode case TestMode -testMode of +testMode of TestMode Testing -> forall (m :: * -> *) a. Monad m => a -> m a return String "TestMode Git hash" TestMode Production -> do - Either GitHashException GitInfo -eitherGit <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + Either GitHashException GitInfo +eitherGit <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + String +pAbsolute <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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 forall a. Eq a => a -> a -> Bool +oneLevelUp forall a. Eq a => a -> a -> Bool == ShowS takeDirectory String -oneLevelUp +oneLevelUp then do forall (m :: * -> *) a. Monad m => a -> m a return String "No Git repository found" else String -> PoseidonIO String getGitCommitHash String -oneLevelUp - Right GitInfo -info -> do +oneLevelUp + Right GitInfo +info -> do forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ GitInfo -> String giHash GitInfo -info +info \ No newline at end of file diff --git a/src/Poseidon.Contributor.html b/src/Poseidon.Contributor.html index 637970c5..86e0023a 100644 --- a/src/Poseidon.Contributor.html +++ b/src/Poseidon.Contributor.html @@ -27,7 +27,7 @@ , ContributorSpec -> Maybe ORCID contributorORCID :: Maybe ORCID -- ^ the ORCID of a contributor } - deriving (Int -> ContributorSpec -> ShowS + deriving (Int -> ContributorSpec -> ShowS [ContributorSpec] -> ShowS ContributorSpec -> [Char] forall a. @@ -38,7 +38,7 @@ $cshow :: ContributorSpec -> [Char] showsPrec :: Int -> ContributorSpec -> ShowS $cshowsPrec :: Int -> ContributorSpec -> ShowS -Show, ContributorSpec -> ContributorSpec -> Bool +Show, ContributorSpec -> ContributorSpec -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: ContributorSpec -> ContributorSpec -> Bool $c/= :: ContributorSpec -> ContributorSpec -> Bool @@ -47,51 +47,51 @@ Eq) -- | To facilitate automatic parsing of ContributorSpec from JSON files -instance FromJSON ContributorSpec where - parseJSON :: Value -> Parser ContributorSpec -parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a +instance FromJSON ContributorSpec where + parseJSON :: Value -> Parser ContributorSpec +parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a withObject [Char] "contributor" forall a b. (a -> b) -> a -> b -$ \Object -v -> [Char] -> [Char] -> Maybe ORCID -> ContributorSpec +$ \Object +v -> [Char] -> [Char] -> Maybe ORCID -> ContributorSpec ContributorSpec forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "name" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "email" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v 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" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ContributorSpec -> [Char] contributorName ContributorSpec -x +x , Key "email" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ContributorSpec -> [Char] contributorEmail ContributorSpec -x +x , Key "orcid" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ContributorSpec -> Maybe ORCID contributorORCID ContributorSpec -x +x ] contributorSpecParser :: P.Parser [ContributorSpec] @@ -112,8 +112,8 @@ oneContributorSpecParser :: P.Parser ContributorSpec oneContributorSpecParser :: Parser ContributorSpec oneContributorSpecParser = do - [Char] -name <- forall s (m :: * -> *) t u open close a. + [Char] +name <- forall s (m :: * -> *) t u open close a. Stream s m t => ParsecT s u m open -> ParsecT s u m close -> ParsecT s u m a -> ParsecT s u m a @@ -137,8 +137,8 @@ Char -> ParsecT s u m Char P.char Char ']'))) - [Char] -email <- forall s (m :: * -> *) t u open close a. + [Char] +email <- forall s (m :: * -> *) t u open close a. Stream s m t => ParsecT s u m open -> ParsecT s u m close -> ParsecT s u m a -> ParsecT s u m a @@ -166,8 +166,8 @@ forall (m :: * -> *) a. Monad m => a -> m a return ([Char] -> [Char] -> Maybe ORCID -> ContributorSpec ContributorSpec [Char] -name [Char] -email forall a. Maybe a +name [Char] +email forall a. Maybe a Nothing) -- | A data type to represent an ORCID @@ -178,7 +178,7 @@ , ORCID -> Char _orcidChecksum :: Char } - deriving (Int -> ORCID -> ShowS + deriving (Int -> ORCID -> ShowS [ORCID] -> ShowS ORCID -> [Char] forall a. @@ -189,7 +189,7 @@ $cshow :: ORCID -> [Char] showsPrec :: Int -> ORCID -> ShowS $cshowsPrec :: Int -> ORCID -> ShowS -Show, ORCID -> ORCID -> Bool +Show, ORCID -> ORCID -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: ORCID -> ORCID -> Bool $c/= :: ORCID -> ORCID -> Bool @@ -197,79 +197,79 @@ $c== :: ORCID -> ORCID -> Bool Eq) -instance FromJSON ORCID where - parseJSON :: Value -> Parser ORCID -parseJSON (String Text -s) = case forall s t u a. +instance FromJSON ORCID where + parseJSON :: Value -> Parser ORCID +parseJSON (String Text +s) = case forall s t u a. Stream s Identity t => Parsec s u a -> u -> [Char] -> s -> Either ParseError a P.runParser Parser ORCID parseORCID () [Char] "" (Text -> [Char] unpack Text -s) of - Left ParseError -err -> forall (m :: * -> *) a. MonadFail m => [Char] -> m a +s) of + Left ParseError +err -> forall (m :: * -> *) a. MonadFail m => [Char] -> m a fail forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> [Char] show ParseError -err - Right ORCID -x -> forall (f :: * -> *) a. Applicative f => a -> f a +err + Right ORCID +x -> forall (f :: * -> *) a. Applicative f => a -> f a pure ORCID -x +x parseJSON Value _ = 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 forall a b. (a -> b) -> a -> b $ [Char] -> Text pack forall a b. (a -> b) -> a -> b $ ORCID -> [Char] renderORCID ORCID -x +x parseORCID :: P.Parser ORCID parseORCID :: Parser 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 (forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [[Char] -a,[Char] -b,[Char] -c,[Char] -d]) Char -e) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b +a,[Char] +b,[Char] +c,[Char] +d]) Char +e) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall {u}. ParsecT [Char] u Identity [Char] -fourBlock forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a +fourBlock forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* forall {u}. ParsecT [Char] u Identity Char -m +m forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> forall {u}. ParsecT [Char] u Identity [Char] -fourBlock forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a +fourBlock forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* forall {u}. ParsecT [Char] u Identity Char -m +m forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> forall {u}. ParsecT [Char] u Identity [Char] -fourBlock forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a +fourBlock forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* forall {u}. ParsecT [Char] u Identity Char -m +m forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> forall {u}. ParsecT [Char] u Identity [Char] -threeBlock forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b +threeBlock forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> forall {u}. ParsecT [Char] u Identity Char -checksumDigit forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a +checksumDigit forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* forall s (m :: * -> *) t u. (Stream s m t, Show t) => ParsecT s u m () @@ -277,36 +277,36 @@ forall (f :: * -> *). Alternative f => Bool -> f () guard (ORCID -> Bool validateORCID ORCID -orcid) forall s u (m :: * -> *) a. +orcid) forall s u (m :: * -> *) a. ParsecT s u m a -> [Char] -> ParsecT s u m a P.<?> [Char] "ORCID is not valid" forall (m :: * -> *) a. Monad m => a -> m a return ORCID -orcid +orcid where - fourBlock :: ParsecT [Char] u Identity [Char] -fourBlock = forall s (m :: * -> *) t u a. + fourBlock :: ParsecT [Char] u Identity [Char] +fourBlock = forall s (m :: * -> *) t u a. Stream s m t => Int -> ParsecT s u m a -> ParsecT s u m [a] P.count Int 4 forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char P.digit - m :: ParsecT [Char] u Identity Char -m = forall s (m :: * -> *) u. + m :: ParsecT [Char] u Identity Char +m = forall s (m :: * -> *) u. Stream s m Char => [Char] -> ParsecT s u m Char P.oneOf [Char] "-" - threeBlock :: ParsecT [Char] u Identity [Char] -threeBlock = forall s (m :: * -> *) t u a. + threeBlock :: ParsecT [Char] u Identity [Char] +threeBlock = forall s (m :: * -> *) t u a. Stream s m t => Int -> ParsecT s u m a -> ParsecT s u m [a] P.count Int 3 forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char P.digit - checksumDigit :: ParsecT [Char] u Identity Char -checksumDigit = forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char + checksumDigit :: ParsecT [Char] u Identity Char +checksumDigit = forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char P.digit forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a P.<|> forall s (m :: * -> *) u. @@ -317,92 +317,92 @@ validateORCID :: ORCID -> Bool validateORCID :: ORCID -> Bool -validateORCID (ORCID [Char] -nums Char -check) = - let numsInt :: [Int] -numsInt = forall a b. (a -> b) -> [a] -> [b] +validateORCID (ORCID [Char] +nums Char +check) = + let numsInt :: [Int] +numsInt = 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 forall a. Integral a => a -> a -> a +numsInt + remainder :: Int +remainder = Int +total forall a. Integral a => a -> a -> a `mod` Int 11 - result :: Int -result = (Int + result :: Int +result = (Int 12 forall a. Num a => a -> a -> a - Int -remainder) forall a. Integral a => a -> a -> a +remainder) forall a. Integral a => a -> a -> a `mod` Int 11 - checkInt :: Int -checkInt = if Char -check forall a. Eq a => a -> a -> Bool + checkInt :: Int +checkInt = if Char +check forall a. Eq a => a -> a -> Bool == Char 'X' then Int 10 else Char -> Int digitToInt Char -check +check in Int -result forall a. Eq a => a -> a -> Bool +result 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 forall a. Num a => a -> a -> a + 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 forall a. Num a => a -> a -> a + Int -x) forall a. Num a => a -> a -> a +x) 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) = forall a. [a] -> [[a]] -> [a] intercalate [Char] "-" (forall a. Int -> [a] -> [[a]] -chunks Int +chunks Int 4 [Char] -nums) forall a. [a] -> [a] -> [a] +nums) 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) = forall a. Int -> [a] -> ([a], [a]) + chunks Int +n [a] +xs = + let ([a] +ys, [a] +zs) = forall a. Int -> [a] -> ([a], [a]) splitAt Int -n [a] -xs +n [a] +xs in [a] -ys forall a. a -> [a] -> [a] +ys forall a. a -> [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 59cd620f..72ca2882 100644 --- a/src/Poseidon.EntityTypes.html +++ b/src/Poseidon.EntityTypes.html @@ -40,12 +40,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 = forall a. Maybe a -> Bool isJust forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -53,68 +53,68 @@ 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 forall a. HasNameAndVersion a => a -> Maybe Version +renderNameWithVersion a +a = case forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion a -a of +a of Maybe Version Nothing -> forall a. HasNameAndVersion a => a -> String getPacName a -a - Just Version -v -> forall a. HasNameAndVersion a => a -> String +a + Just Version +v -> forall a. HasNameAndVersion a => a -> String getPacName a -a forall a. [a] -> [a] -> [a] +a forall a. [a] -> [a] -> [a] ++ 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 = forall a. HasNameAndVersion a => a -> String +isLatestInCollection [a] +pacCollection a +onePac = do + let nameOfOne :: String +nameOfOne = forall a. HasNameAndVersion a => a -> String getPacName a -onePac - allWithThisName :: [PacNameAndVersion] -allWithThisName = forall a. Eq a => [a] -> [a] +onePac + allWithThisName :: [PacNameAndVersion] +allWithThisName = forall a. Eq a => [a] -> [a] nub forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] filter ((forall a. Eq a => a -> a -> Bool ==String -nameOfOne) forall b c a. (b -> c) -> (a -> b) -> a -> c +nameOfOne) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. HasNameAndVersion a => a -> String getPacName) forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map 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 = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool + missingVersion :: Bool +missingVersion = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any (forall a. Maybe a -> Bool isNothing forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion) [PacNameAndVersion] -allWithThisName Bool -> Bool -> Bool +allWithThisName Bool -> Bool -> Bool && forall (t :: * -> *) a. Foldable t => t a -> Int length [PacNameAndVersion] -allWithThisName forall a. Ord a => a -> a -> Bool +allWithThisName forall a. Ord a => a -> a -> Bool > Int 1 forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -missingVersion forall a b. (a -> b) -> a -> b +missingVersion forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b @@ -129,18 +129,18 @@ "," (forall a b. (a -> b) -> [a] -> [b] map forall a. HasNameAndVersion a => a -> String renderNameWithVersion [PacNameAndVersion] -allWithThisName) - let latest :: PacNameAndVersion -latest = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a +allWithThisName) + let latest :: PacNameAndVersion +latest = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum [PacNameAndVersion] -allWithThisName +allWithThisName forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion a -onePac forall a. Eq a => a -> a -> Bool +onePac forall a. Eq a => a -> a -> Bool == PacNameAndVersion -latest +latest -- | The minimal instance of HasNameAndVersion data PacNameAndVersion = PacNameAndVersion { @@ -149,7 +149,7 @@ , PacNameAndVersion -> Maybe Version panavVersion :: Maybe Version } - deriving (Eq PacNameAndVersion + deriving (Eq PacNameAndVersion PacNameAndVersion -> PacNameAndVersion -> Bool PacNameAndVersion -> PacNameAndVersion -> Ordering PacNameAndVersion -> PacNameAndVersion -> PacNameAndVersion @@ -177,7 +177,7 @@ $c< :: PacNameAndVersion -> PacNameAndVersion -> Bool compare :: PacNameAndVersion -> PacNameAndVersion -> Ordering $ccompare :: PacNameAndVersion -> PacNameAndVersion -> Ordering -Ord, PacNameAndVersion -> PacNameAndVersion -> Bool +Ord, PacNameAndVersion -> PacNameAndVersion -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: PacNameAndVersion -> PacNameAndVersion -> Bool $c/= :: PacNameAndVersion -> PacNameAndVersion -> Bool @@ -186,34 +186,34 @@ Eq) instance HasNameAndVersion PacNameAndVersion where - getPacName :: PacNameAndVersion -> String -getPacName = PacNameAndVersion -> String + getPacName :: PacNameAndVersion -> String +getPacName = PacNameAndVersion -> String panavName - getPacVersion :: PacNameAndVersion -> Maybe Version -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 "*" forall a. [a] -> [a] -> [a] ++ forall a. HasNameAndVersion a => a -> String renderNameWithVersion PacNameAndVersion -a forall a. [a] -> [a] -> [a] +a 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 (forall a. HasNameAndVersion a => a -> String getPacName a -a) (forall a. HasNameAndVersion a => a -> Maybe Version +a) (forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion a -a) +a) -- | A datatype to represent a requested package, group or individual data PoseidonEntity = @@ -221,13 +221,13 @@ | 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 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: PoseidonEntity -> PoseidonEntity -> Bool $c/= :: PoseidonEntity -> PoseidonEntity -> Bool == :: PoseidonEntity -> PoseidonEntity -> Bool $c== :: PoseidonEntity -> PoseidonEntity -> Bool -Eq, Eq PoseidonEntity +Eq, Eq PoseidonEntity PoseidonEntity -> PoseidonEntity -> Bool PoseidonEntity -> PoseidonEntity -> Ordering PoseidonEntity -> PoseidonEntity -> PoseidonEntity @@ -258,38 +258,38 @@ Ord) -- | A show instance for rendering entities in forgescript -instance Show PoseidonEntity where - show :: PoseidonEntity -> String -show (Pac PacNameAndVersion -p) = forall a. Show a => a -> String +instance Show PoseidonEntity where + show :: PoseidonEntity -> String +show (Pac PacNameAndVersion +p) = 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 "<" forall a. [a] -> [a] -> [a] ++ String -n forall a. [a] -> [a] -> [a] +n forall a. [a] -> [a] -> [a] ++ String ">" - show (SpecificInd String -n String -g PacNameAndVersion -p) = String + show (SpecificInd String +n String +g PacNameAndVersion +p) = String "<" forall a. [a] -> [a] -> [a] ++ forall a. HasNameAndVersion a => a -> String renderNameWithVersion PacNameAndVersion -p forall a. [a] -> [a] -> [a] +p forall a. [a] -> [a] -> [a] ++ String ":" forall a. [a] -> [a] -> [a] ++ String -g forall a. [a] -> [a] -> [a] +g forall a. [a] -> [a] -> [a] ++ String ":" forall a. [a] -> [a] -> [a] ++ String -n forall a. [a] -> [a] -> [a] +n forall a. [a] -> [a] -> [a] ++ String ">" @@ -299,13 +299,13 @@ data SignedEntity = Include PoseidonEntity | Exclude PoseidonEntity - deriving (SignedEntity -> SignedEntity -> Bool + deriving (SignedEntity -> SignedEntity -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: SignedEntity -> SignedEntity -> Bool $c/= :: SignedEntity -> SignedEntity -> Bool == :: SignedEntity -> SignedEntity -> Bool $c== :: SignedEntity -> SignedEntity -> Bool -Eq, Eq SignedEntity +Eq, Eq SignedEntity SignedEntity -> SignedEntity -> Bool SignedEntity -> SignedEntity -> Ordering SignedEntity -> SignedEntity -> SignedEntity @@ -335,53 +335,53 @@ $ccompare :: SignedEntity -> SignedEntity -> Ordering Ord) -instance Show SignedEntity where - show :: SignedEntity -> String -show (Include PoseidonEntity -a) = forall a. Show a => a -> String +instance Show SignedEntity where + show :: SignedEntity -> String +show (Include PoseidonEntity +a) = forall a. Show a => a -> String show PoseidonEntity -a - show (Exclude PoseidonEntity -a) = String +a + show (Exclude PoseidonEntity +a) = String "-" forall a. [a] -> [a] -> [a] ++ 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 forall a b. (a -> Maybe b) -> [a] -> [b] +indInfoConformsToEntitySpecs IndividualInfo +indInfo Bool +isLatest [a] +entities = case forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe (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 -> forall a. [a] -> a + [Bool] +xs -> forall a. [a] -> a last [Bool] -xs +xs instance EntitySpec SignedEntity where @@ -389,28 +389,28 @@ -- 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 String + 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 forall a. Eq a => a -> a -> Bool +p1, PacNameAndVersion +p2) of + (PacNameAndVersion String +n1 (Just Version +v1), PacNameAndVersion String +n2 (Just Version +v2)) -> if String +n1 forall a. Eq a => a -> a -> Bool == String -n2 Bool -> Bool -> Bool +n2 Bool -> Bool -> Bool && Version -v1 forall a. Eq a => a -> a -> Bool +v1 forall a. Eq a => a -> a -> Bool == Version -v2 then forall a. a -> Maybe a +v2 then forall a. a -> Maybe a Just Bool True else forall a. Maybe a Nothing @@ -420,16 +420,16 @@ _ (Just Version _ )) -> 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 forall a. Eq a => a -> a -> Bool +n1 forall a. Eq a => a -> a -> Bool == String -n2 Bool -> Bool -> Bool +n2 Bool -> Bool -> Bool && Bool -isLatest then forall a. a -> Maybe a +isLatest then forall a. a -> Maybe a Just Bool True else forall a. Maybe a Nothing @@ -437,25 +437,25 @@ -- 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 forall a. Eq a => a -> a -> Bool +p1, PacNameAndVersion +p2) of + (PacNameAndVersion String +n1 (Just Version +v1), PacNameAndVersion String +n2 (Just Version +v2)) -> if String +n1 forall a. Eq a => a -> a -> Bool == String -n2 Bool -> Bool -> Bool +n2 Bool -> Bool -> Bool && Version -v1 forall a. Eq a => a -> a -> Bool +v1 forall a. Eq a => a -> a -> Bool == Version -v2 then forall a. a -> Maybe a +v2 then forall a. a -> Maybe a Just Bool False else forall a. Maybe a Nothing @@ -465,147 +465,147 @@ _ (Just Version _ )) -> 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 forall a. Eq a => a -> a -> Bool +n1 forall a. Eq a => a -> a -> Bool == String -n2 then forall a. a -> Maybe a +n2 then forall a. a -> Maybe a Just Bool False else forall a. Maybe a Nothing -- 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 forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +g forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [String] -gs Bool -> Bool -> Bool +gs Bool -> Bool -> Bool && Bool -isLatest then forall a. a -> Maybe a +isLatest then forall a. a -> Maybe a Just Bool True else forall a. Maybe a Nothing -- exclude group indInfoConformsToEntitySpec (IndividualInfo String -_ [String] -gs PacNameAndVersion +_ [String] +gs PacNameAndVersion _) Bool -_ (Exclude (Group String -g)) = +_ (Exclude (Group String +g)) = if String -g forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +g forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [String] -gs then forall a. a -> Maybe a +gs then forall a. a -> Maybe a Just Bool False else forall a. Maybe a 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 forall a. Eq a => a -> a -> Bool +n1 forall a. Eq a => a -> a -> Bool == String -n2 Bool -> Bool -> Bool +n2 Bool -> Bool -> Bool && Bool -isLatest then forall a. a -> Maybe a +isLatest then forall a. a -> Maybe a Just Bool True else forall a. Maybe a 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 forall a. Eq a => a -> a -> Bool +n1 forall a. Eq a => a -> a -> Bool == String -n2 then forall a. a -> Maybe a +n2 then forall a. a -> Maybe a Just Bool False else forall a. Maybe a 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 forall a. Eq a => a -> a -> Bool +n1 forall a. Eq a => a -> a -> Bool /= String -n2 Bool -> Bool -> Bool +n2 Bool -> Bool -> Bool || String -g forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +g forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `notElem` [String] -gs then forall a. Maybe a +gs then forall a. Maybe a Nothing else 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 forall a. Eq a => a -> a -> Bool +n1 forall a. Eq a => a -> a -> Bool /= String -n2 Bool -> Bool -> Bool +n2 Bool -> Bool -> Bool || String -g forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +g forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `notElem` [String] -gs then forall a. Maybe a +gs then forall a. Maybe a Nothing else 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 +underlyingEntity = SignedEntity -> PoseidonEntity removeEntitySign - entitySpecParser :: Parser SignedEntity -entitySpecParser = forall {u}. + entitySpecParser :: Parser SignedEntity +entitySpecParser = forall {u}. ParsecT String u Identity (PoseidonEntity -> SignedEntity) -parseSign forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b +parseSign forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> forall a. EntitySpec a => Parser a entitySpecParser where - parseSign :: ParsecT String u Identity (PoseidonEntity -> SignedEntity) -parseSign = (forall s (m :: * -> *) u. + parseSign :: ParsecT String u Identity (PoseidonEntity -> SignedEntity) +parseSign = (forall s (m :: * -> *) u. Stream s m Char => Char -> ParsecT s u m Char P.char Char @@ -626,29 +626,29 @@ Include) instance EntitySpec PoseidonEntity where - indInfoConformsToEntitySpec :: IndividualInfo -> Bool -> PoseidonEntity -> Maybe Bool -indInfoConformsToEntitySpec IndividualInfo -indInfo Bool -isLatest PoseidonEntity -entity = forall a. EntitySpec a => IndividualInfo -> Bool -> a -> Maybe Bool + indInfoConformsToEntitySpec :: IndividualInfo -> Bool -> PoseidonEntity -> Maybe Bool +indInfoConformsToEntitySpec IndividualInfo +indInfo Bool +isLatest PoseidonEntity +entity = 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 -underlyingEntity = forall a. a -> a +entity) + underlyingEntity :: PoseidonEntity -> PoseidonEntity +underlyingEntity = forall a. a -> a id - entitySpecParser :: Parser PoseidonEntity -entitySpecParser = Parser PoseidonEntity -parsePac forall (f :: * -> *) a. Alternative f => f a -> f a -> f a + entitySpecParser :: Parser PoseidonEntity +entitySpecParser = Parser PoseidonEntity +parsePac forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> forall {u}. ParsecT String u Identity PoseidonEntity -parseGroup forall (f :: * -> *) a. Alternative f => f a -> f a -> f a +parseGroup forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Parser PoseidonEntity -parseInd +parseInd where - parsePac :: Parser PoseidonEntity -parsePac = PacNameAndVersion -> PoseidonEntity + parsePac :: Parser PoseidonEntity +parsePac = PacNameAndVersion -> PoseidonEntity Pac forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall s (m :: * -> *) t u open close a. Stream s m t => @@ -663,26 +663,26 @@ 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 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall {u}. ParsecT String u Identity String -parseName - parseInd :: Parser PoseidonEntity -parseInd = forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m a +parseName + parseInd :: Parser PoseidonEntity +parseInd = forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m a P.try forall {u}. ParsecT String u Identity PoseidonEntity -parseSimpleInd forall (f :: * -> *) a. Alternative f => f a -> f a -> f a +parseSimpleInd forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Parser 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 <- forall s (m :: * -> *) t u a. + Maybe Version +versionPart <- forall s (m :: * -> *) t u a. Stream s m t => ParsecT s u m a -> ParsecT s u m (Maybe a) P.optionMaybe Parser Version @@ -691,25 +691,25 @@ return 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 <- forall s (m :: * -> *) t u a. +namePart Maybe Version +versionPart + parseNamePart :: String -> ParsecT String () Identity String +parseNamePart String +prevPart = do + String +curPart <- forall s (m :: * -> *) t u a. Stream s m t => ParsecT s u m a -> ParsecT s u m [a] P.many1 (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 forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +c forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [Char ':', Char ',', Char @@ -717,20 +717,20 @@ '>', Char '*', Char '-']))) - Maybe Char -nextChar <- forall s (m :: * -> *) t u a. + Maybe Char +nextChar <- forall s (m :: * -> *) t u a. Stream s m t => ParsecT s u m a -> ParsecT s u m (Maybe a) P.optionMaybe (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 forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +c forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [Char ':', Char ',', Char @@ -738,34 +738,34 @@ '>', 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 forall (m :: * -> *) a. Monad m => a -> m a return (String -prevPart forall a. [a] -> [a] -> [a] +prevPart forall a. [a] -> [a] -> [a] ++ String -curPart) +curPart) else String -> ParsecT String () Identity String -parseNamePart (String -prevPart forall a. [a] -> [a] -> [a] +parseNamePart (String +prevPart forall a. [a] -> [a] -> [a] ++ String -curPart forall a. [a] -> [a] -> [a] +curPart forall a. [a] -> [a] -> [a] ++ String "-") Maybe Char _ -> forall (m :: * -> *) a. Monad m => a -> m a return (String -prevPart forall a. [a] -> [a] -> [a] +prevPart forall a. [a] -> [a] -> [a] ++ String -curPart) - probeForVersion :: ParsecT String () Identity Bool -probeForVersion = forall s (m :: * -> *) t u a. +curPart) + probeForVersion :: ParsecT String () Identity Bool +probeForVersion = forall s (m :: * -> *) t u a. Stream s m t => ParsecT s u m a -> ParsecT s u m a P.lookAhead (Parser Version @@ -776,28 +776,28 @@ <|> forall (f :: * -> *) a. Applicative f => a -> f a pure Bool False - parseName :: ParsecT String u Identity String -parseName = forall s (m :: * -> *) t u a. + parseName :: ParsecT String u Identity String +parseName = forall s (m :: * -> *) t u a. Stream s m t => ParsecT s u m a -> ParsecT s u m [a] P.many1 (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 forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +c forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [Char ':', Char ',', Char '<', Char '>', Char '*']))) - parseSimpleInd :: ParsecT String u Identity PoseidonEntity -parseSimpleInd = String -> PoseidonEntity + parseSimpleInd :: ParsecT String u Identity PoseidonEntity +parseSimpleInd = String -> PoseidonEntity Ind forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall s (m :: * -> *) t u open close a. Stream s m t => @@ -812,36 +812,36 @@ Char -> ParsecT s u m Char P.char Char '>') forall {u}. ParsecT String u Identity String -parseName - parseSpecificInd :: Parser PoseidonEntity -parseSpecificInd = do +parseName + parseSpecificInd :: Parser PoseidonEntity +parseSpecificInd = do Char _ <- forall s (m :: * -> *) u. Stream s m Char => Char -> ParsecT s u m Char P.char Char '<' - PacNameAndVersion -pac <- ParsecT String () Identity PacNameAndVersion -parseNameAndVer + PacNameAndVersion +pac <- ParsecT String () Identity PacNameAndVersion +parseNameAndVer Char _ <- forall s (m :: * -> *) u. Stream s m Char => Char -> ParsecT s u m Char P.char Char ':' - String -groupName <- forall {u}. ParsecT String u Identity String -parseName + String +groupName <- forall {u}. ParsecT String u Identity String +parseName Char _ <- forall s (m :: * -> *) u. Stream s m Char => Char -> ParsecT s u m Char P.char Char ':' - String -indName <- forall {u}. ParsecT String u Identity String -parseName + String +indName <- forall {u}. ParsecT String u Identity String +parseName Char _ <- forall s (m :: * -> *) u. Stream s m Char => @@ -852,68 +852,68 @@ return 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 +instance FromJSON PoseidonEntity where parseJSON :: Value -> Parser PoseidonEntity parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a withText String "PoseidonEntity" forall e. EntitySpec e => Text -> Parser e aesonParseEntitySpec -instance FromJSON SignedEntity where parseJSON :: Value -> Parser SignedEntity -parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a +instance FromJSON SignedEntity where parseJSON :: Value -> Parser SignedEntity +parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a withText String "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 forall a b. (a -> b) -> a -> b $ 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 forall a b. (a -> b) -> a -> b $ 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 forall s t u a. +aesonParseEntitySpec Text +t = case forall s t u a. Stream s Identity t => Parsec s u a -> u -> String -> s -> Either ParseError a P.runParser forall a. EntitySpec a => Parser a entitySpecParser () String "" (Text -> String unpack Text -t) of - Left ParseError -err -> forall (m :: * -> *) a. MonadFail m => String -> m a +t) of + Left ParseError +err -> forall (m :: * -> *) a. MonadFail m => String -> m a fail (forall a. Show a => a -> String show ParseError -err) - Right e -p' -> forall (m :: * -> *) a. Monad m => a -> m a +err) + Right e +p' -> 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 +data IndividualInfo = IndividualInfo { IndividualInfo -> String indInfoName :: String -- ^ the name of the individual, corresponding to jPoseidonID in Janno , IndividualInfo -> [String] 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 -> ShowS + } deriving (Int -> IndividualInfo -> ShowS [IndividualInfo] -> ShowS IndividualInfo -> String forall a. @@ -924,13 +924,13 @@ $cshow :: IndividualInfo -> String showsPrec :: Int -> IndividualInfo -> ShowS $cshowsPrec :: Int -> IndividualInfo -> ShowS -Show, IndividualInfo -> IndividualInfo -> Bool +Show, IndividualInfo -> IndividualInfo -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: IndividualInfo -> IndividualInfo -> Bool $c/= :: IndividualInfo -> IndividualInfo -> Bool == :: IndividualInfo -> IndividualInfo -> Bool $c== :: IndividualInfo -> IndividualInfo -> Bool -Eq, Eq IndividualInfo +Eq, Eq IndividualInfo IndividualInfo -> IndividualInfo -> Bool IndividualInfo -> IndividualInfo -> Ordering IndividualInfo -> IndividualInfo -> IndividualInfo @@ -967,13 +967,13 @@ Generic) instance HasNameAndVersion IndividualInfo where - getPacName :: IndividualInfo -> String -getPacName = forall a. HasNameAndVersion a => a -> String + getPacName :: IndividualInfo -> String +getPacName = forall a. HasNameAndVersion a => a -> String getPacName forall b c a. (b -> c) -> (a -> b) -> a -> c . IndividualInfo -> PacNameAndVersion indInfoPac - getPacVersion :: IndividualInfo -> Maybe Version -getPacVersion = forall a. HasNameAndVersion a => a -> Maybe Version + getPacVersion :: IndividualInfo -> Maybe Version +getPacVersion = forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion forall b c a. (b -> c) -> (a -> b) -> a -> c . IndividualInfo -> PacNameAndVersion indInfoPac @@ -981,39 +981,39 @@ -- 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] -> [IndividualInfo] -> m [PacNameAndVersion] +determineRelevantPackages :: (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m [PacNameAndVersion] determineRelevantPackages :: forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m [PacNameAndVersion] -determineRelevantPackages [a] -entities [IndividualInfo] -indInfos = do - [Bool] -areLatest <- forall (t :: * -> *) (m :: * -> *) a b. +determineRelevantPackages [a] +entities [IndividualInfo] +indInfos = do + [Bool] +areLatest <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM (forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [IndividualInfo] -indInfos) [IndividualInfo] -indInfos - let relevantPacs :: [PacNameAndVersion] -relevantPacs = [ IndividualInfo -> PacNameAndVersion +indInfos) [IndividualInfo] +indInfos + let relevantPacs :: [PacNameAndVersion] +relevantPacs = [ IndividualInfo -> PacNameAndVersion indInfoPac IndividualInfo -ind | (IndividualInfo -ind, Bool -l) <- forall a b. [a] -> [b] -> [(a, b)] +ind | (IndividualInfo +ind, Bool +l) <- forall a b. [a] -> [b] -> [(a, b)] zip [IndividualInfo] -indInfos [Bool] -areLatest, forall a. EntitySpec a => IndividualInfo -> Bool -> [a] -> Bool +indInfos [Bool] +areLatest, forall a. EntitySpec a => IndividualInfo -> Bool -> [a] -> Bool indInfoConformsToEntitySpecs IndividualInfo -ind Bool -l [a] -entities ] +ind Bool +l [a] +entities ] forall (m :: * -> *) a. Monad m => a -> m a return forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Eq a => [a] -> [a] @@ -1022,16 +1022,16 @@ map forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion 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] _) <- forall a. (a -> Bool) -> [a] -> [a] filter ((forall a. Ord a => a -> a -> Bool >Int @@ -1039,96 +1039,96 @@ . forall (t :: * -> *) a. Foldable t => t a -> Int length) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. (a -> a -> Bool) -> [a] -> [[a]] -groupBy (\IndividualInfo -a IndividualInfo -b -> IndividualInfo -> String +groupBy (\IndividualInfo +a IndividualInfo +b -> IndividualInfo -> String indInfoName IndividualInfo -a forall a. Eq a => a -> a -> Bool +a forall a. Eq a => a -> a -> Bool == IndividualInfo -> String indInfoName IndividualInfo -b) forall b c a. (b -> c) -> (a -> b) -> a -> c +b) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall b a. Ord b => (a -> b) -> [a] -> [a] sortOn IndividualInfo -> String indInfoName forall a b. (a -> b) -> a -> b $ [IndividualInfo] -individuals +individuals forall (m :: * -> *) a. Monad m => a -> m a return (IndividualInfo -firstInd, [String -> String -> PacNameAndVersion -> PoseidonEntity +firstInd, [String -> String -> PacNameAndVersion -> PoseidonEntity SpecificInd String -n' (forall a. [a] -> a +n' (forall a. [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]) -- | this finds the indices of all individuals from an individual-list which are specified in the Entity list -resolveEntityIndices :: (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m [Int] +resolveEntityIndices :: (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m [Int] resolveEntityIndices :: forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m [Int] -resolveEntityIndices [a] -entities [IndividualInfo] -indInfos = do - [Bool] -areLatest <- forall (t :: * -> *) (m :: * -> *) a b. +resolveEntityIndices [a] +entities [IndividualInfo] +indInfos = do + [Bool] +areLatest <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM (forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [IndividualInfo] -indInfos) [IndividualInfo] -indInfos - let relevantIndizes :: [Int] -relevantIndizes = [ Int -i | (Int -i, IndividualInfo -ind, Bool -l) <- forall a b c. [a] -> [b] -> [c] -> [(a, b, c)] +indInfos) [IndividualInfo] +indInfos + let relevantIndizes :: [Int] +relevantIndizes = [ Int +i | (Int +i, IndividualInfo +ind, Bool +l) <- forall a b c. [a] -> [b] -> [c] -> [(a, b, c)] zip3 [Int 0..] [IndividualInfo] -indInfos [Bool] -areLatest, forall a. EntitySpec a => IndividualInfo -> Bool -> [a] -> Bool +indInfos [Bool] +areLatest, forall a. EntitySpec a => IndividualInfo -> Bool -> [a] -> Bool indInfoConformsToEntitySpecs IndividualInfo -ind Bool -l [a] -entities ] +ind Bool +l [a] +entities ] forall (m :: * -> *) a. Monad m => a -> m a return [Int] -relevantIndizes +relevantIndizes -resolveUniqueEntityIndices :: (EntitySpec a) => [a] -> [IndividualInfo] -> PoseidonIO [Int] +resolveUniqueEntityIndices :: (EntitySpec a) => [a] -> [IndividualInfo] -> PoseidonIO [Int] resolveUniqueEntityIndices :: forall a. EntitySpec a => [a] -> [IndividualInfo] -> PoseidonIO [Int] -resolveUniqueEntityIndices [a] -entities [IndividualInfo] -indInfos = do - [Int] -relevantIndices <- forall (m :: * -> *) a. +resolveUniqueEntityIndices [a] +entities [IndividualInfo] +indInfos = do + [Int] +relevantIndices <- forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m [Int] resolveEntityIndices [a] -entities [IndividualInfo] -indInfos - let duplicateReport :: [(IndividualInfo, [PoseidonEntity])] -duplicateReport = [IndividualInfo] -> [(IndividualInfo, [PoseidonEntity])] +entities [IndividualInfo] +indInfos + let duplicateReport :: [(IndividualInfo, [PoseidonEntity])] +duplicateReport = [IndividualInfo] -> [(IndividualInfo, [PoseidonEntity])] reportDuplicateIndividuals forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] map ([IndividualInfo] -indInfos forall a. [a] -> Int -> a +indInfos forall a. [a] -> Int -> a !!) forall a b. (a -> b) -> a -> b $ [Int] -relevantIndices +relevantIndices -- check if there still are duplicates and if yes, then stop forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (forall (t :: * -> *) a. Foldable t => t a -> Bool null [(IndividualInfo, [PoseidonEntity])] -duplicateReport) forall a b. (a -> b) -> a -> b +duplicateReport) forall a b. (a -> b) -> a -> b $ do String -> ReaderT Env IO () logError String @@ -1140,12 +1140,12 @@ (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [(IndividualInfo, [PoseidonEntity])] -duplicateReport forall a b. (a -> b) -> a -> b -$ \(IndividualInfo String -n [String] +duplicateReport forall a b. (a -> b) -> a -> b +$ \(IndividualInfo String +n [String] _ PacNameAndVersion -_, [PoseidonEntity] -specs) -> do +_, [PoseidonEntity] +specs) -> do String -> ReaderT Env IO () logError forall a b. (a -> b) -> a -> b $ String @@ -1153,16 +1153,16 @@ ++ forall a. Show a => a -> String show (String -> PoseidonEntity Ind String -n) forall a. [a] -> [a] -> [a] +n) forall a. [a] -> [a] -> [a] ++ String " (please specify)" forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [PoseidonEntity] -specs forall a b. (a -> b) -> a -> b -$ \PoseidonEntity -spec -> do +specs forall a b. (a -> b) -> a -> b +$ \PoseidonEntity +spec -> do String -> ReaderT Env IO () logError forall a b. (a -> b) -> a -> b $ String @@ -1170,12 +1170,12 @@ ++ forall a. Show a => a -> String show (String -> PoseidonEntity Ind String -n) forall a. [a] -> [a] -> [a] +n) forall a. [a] -> [a] -> [a] ++ String " -> " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show PoseidonEntity -spec +spec forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall e a. Exception e => e -> IO a @@ -1185,50 +1185,50 @@ "Unresolved duplicated individuals" forall (m :: * -> *) a. Monad m => a -> m a return [Int] -relevantIndices +relevantIndices -- | this returns a list of entities which could not be found -determineNonExistentEntities :: (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m EntitiesList +determineNonExistentEntities :: (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m EntitiesList determineNonExistentEntities :: forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m [PoseidonEntity] -determineNonExistentEntities [a] -entities [IndividualInfo] -indInfos = do +determineNonExistentEntities [a] +entities [IndividualInfo] +indInfos = do forall (m :: * -> *) a. Monad m => a -> m a return [ PoseidonEntity -entity | PoseidonEntity -entity <- forall a b. (a -> b) -> [a] -> [b] +entity | PoseidonEntity +entity <- forall a b. (a -> b) -> [a] -> [b] map forall a. EntitySpec a => a -> PoseidonEntity underlyingEntity [a] -entities, [Int] -indices <- forall (m :: * -> *) a. +entities, [Int] +indices <- forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m [Int] resolveEntityIndices [PoseidonEntity -entity] [IndividualInfo] -indInfos, forall (t :: * -> *) a. Foldable t => t a -> Bool +entity] [IndividualInfo] +indInfos, forall (t :: * -> *) a. Foldable t => t a -> Bool null [Int] -indices] +indices] -checkIfAllEntitiesExist :: (EntitySpec a) => [a] -> [IndividualInfo] -> PoseidonIO () +checkIfAllEntitiesExist :: (EntitySpec a) => [a] -> [IndividualInfo] -> PoseidonIO () checkIfAllEntitiesExist :: forall a. EntitySpec a => [a] -> [IndividualInfo] -> ReaderT Env IO () -checkIfAllEntitiesExist [a] -entities [IndividualInfo] -indInfos = do - [PoseidonEntity] -nonExistentEntities <- forall (m :: * -> *) a. +checkIfAllEntitiesExist [a] +entities [IndividualInfo] +indInfos = do + [PoseidonEntity] +nonExistentEntities <- forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m [PoseidonEntity] determineNonExistentEntities [a] -entities [IndividualInfo] -indInfos +entities [IndividualInfo] +indInfos forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (forall (t :: * -> *) a. Foldable t => t a -> Bool null [PoseidonEntity] -nonExistentEntities) forall a b. (a -> b) -> a -> b +nonExistentEntities) forall a b. (a -> b) -> a -> b $ do String -> ReaderT Env IO () logError String @@ -1237,7 +1237,7 @@ (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [PoseidonEntity] -nonExistentEntities (String -> ReaderT Env IO () +nonExistentEntities (String -> ReaderT Env IO () logError forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Show a => a -> String show) @@ -1253,10 +1253,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 forall s t u a. +readEntitiesFromString String +s = case forall s t u a. Stream s Identity t => Parsec s u a -> u -> String -> s -> Either ParseError a P.runParser (forall a. EntitySpec a => Parser [a] @@ -1266,25 +1266,25 @@ ParsecT s u m () P.eof) () String "" String -s of - Left ParseError -p -> forall a b. a -> Either a b +s of + Left ParseError +p -> forall a b. a -> Either a b Left forall a b. (a -> b) -> a -> b $ String -> PoseidonException PoseidonPoseidonEntityParsingException (forall a. Show a => a -> String show ParseError -p) - Right [a] -x -> forall a b. b -> Either a b +p) + Right [a] +x -> 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 = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap (forall a. Eq a => [a] -> [a] nub forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -1294,31 +1294,31 @@ (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM [EntityInput a] -entityInputs forall a b. (a -> b) -> a -> b -$ \EntityInput a -entityInput -> case EntityInput a -entityInput of - EntitiesDirect [a] -e -> forall (m :: * -> *) a. Monad m => a -> m a +entityInputs forall a b. (a -> b) -> a -> b +$ \EntityInput a +entityInput -> case EntityInput a +entityInput of + EntitiesDirect [a] +e -> forall (m :: * -> *) a. Monad m => a -> m a return [a] -e - EntitiesFromFile String -fp -> forall (m :: * -> *) a. MonadIO m => IO a -> m a +e + EntitiesFromFile String +fp -> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ 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 = forall s (m :: * -> *) t u a sep. Stream s m t => @@ -1332,7 +1332,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 forall (t :: * -> *) a. Foldable t => t [a] -> [a] @@ -1346,13 +1346,13 @@ <|> forall a. EntitySpec a => Parser [a] commentP forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Parser [a] -entitiesListWithCommentsP) forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char +entitiesListWithCommentsP) forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char P.newline where - entitiesListWithCommentsP :: Parser [a] -entitiesListWithCommentsP = do - [a] -eL <- forall a. EntitySpec a => Parser [a] + entitiesListWithCommentsP :: Parser [a] +entitiesListWithCommentsP = do + [a] +eL <- forall a. EntitySpec a => Parser [a] entitiesListP String _ <- forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m [a] @@ -1369,9 +1369,9 @@ commentP :: P.Parser EntitiesList) -- compiler complains about unambiguous type without this redundant type annotation 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 @@ -1390,7 +1390,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 @@ -1412,29 +1412,29 @@ 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 <- forall a. Parser a -> String -> IO (Either ParseError a) +readEntitiesFromFile String +entitiesFile = do + Either ParseError [a] +eitherParseResult <- forall a. Parser a -> String -> IO (Either ParseError a) P.parseFromFile (forall a. EntitySpec a => Parser [a] entitiesListMultilineP forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a <* forall s (m :: * -> *) t u. (Stream s m t, Show t) => ParsecT s u m () P.eof) String -entitiesFile +entitiesFile case Either ParseError [a] -eitherParseResult of - Left ParseError -err -> forall e a. Exception e => e -> IO a +eitherParseResult of + Left ParseError +err -> forall e a. Exception e => e -> IO a throwIO (String -> PoseidonException PoseidonPoseidonEntityParsingException (forall a. Show a => a -> String show ParseError -err)) - Right [a] -r -> forall (m :: * -> *) a. Monad m => a -> m a +err)) + Right [a] +r -> 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 02850087..8669536e 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] forall a. @@ -79,7 +79,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] forall a. @@ -90,7 +90,7 @@ $cshow :: GenotypeDataSpec -> [Char] showsPrec :: Int -> GenotypeDataSpec -> ShowS $cshowsPrec :: Int -> GenotypeDataSpec -> ShowS -Show, GenotypeDataSpec -> GenotypeDataSpec -> Bool +Show, GenotypeDataSpec -> GenotypeDataSpec -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: GenotypeDataSpec -> GenotypeDataSpec -> Bool $c/= :: GenotypeDataSpec -> GenotypeDataSpec -> Bool @@ -99,13 +99,13 @@ Eq) -- | To facilitate automatic parsing of GenotypeDataSpec from JSON files -instance FromJSON GenotypeDataSpec where - parseJSON :: Value -> Parser GenotypeDataSpec -parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a +instance FromJSON GenotypeDataSpec where + parseJSON :: Value -> Parser GenotypeDataSpec +parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a withObject [Char] "GenotypeData" forall a b. (a -> b) -> a -> b -$ \Object -v -> GenotypeFormatSpec +$ \Object +v -> GenotypeFormatSpec -> [Char] -> Maybe [Char] -> [Char] @@ -117,97 +117,97 @@ GenotypeDataSpec forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "format" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "genoFile" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "genoFileChkSum" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "snpFile" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "snpFileChkSum" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "indFile" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "indFileChkSum" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v 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" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> GenotypeFormatSpec format GenotypeDataSpec -x, +x, Key "genoFile" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> [Char] genoFile GenotypeDataSpec -x, +x, Key "genoFileChkSum"forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> Maybe [Char] genoFileChkSum GenotypeDataSpec -x, +x, Key "snpFile" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> [Char] snpFile GenotypeDataSpec -x, +x, Key "snpFileChkSum" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> Maybe [Char] snpFileChkSum GenotypeDataSpec -x, +x, Key "indFile" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> [Char] indFile GenotypeDataSpec -x, +x, Key "indFileChkSum" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= GenotypeDataSpec -> Maybe [Char] indFileChkSum GenotypeDataSpec -x, +x, Key "snpSet" 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 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: GenotypeFormatSpec -> GenotypeFormatSpec -> Bool $c/= :: GenotypeFormatSpec -> GenotypeFormatSpec -> Bool @@ -215,8 +215,8 @@ $c== :: GenotypeFormatSpec -> GenotypeFormatSpec -> Bool Eq) -instance Show GenotypeFormatSpec where - show :: GenotypeFormatSpec -> [Char] +instance Show GenotypeFormatSpec where + show :: GenotypeFormatSpec -> [Char] show GenotypeFormatSpec GenotypeFormatPlink = [Char] "PLINK" @@ -225,14 +225,14 @@ "EIGENSTRAT" -- | To facilitate automatic parsing of GenotypeFormatSpec from JSON files -instance FromJSON GenotypeFormatSpec where - parseJSON :: Value -> Parser GenotypeFormatSpec -parseJSON = forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a +instance FromJSON GenotypeFormatSpec where + parseJSON :: Value -> Parser GenotypeFormatSpec +parseJSON = forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a withText [Char] "format" forall a b. (a -> b) -> a -> b -$ \Text -v -> case Text -v of +$ \Text +v -> case Text +v of Text "EIGENSTRAT" -> forall (f :: * -> *) a. Applicative f => a -> f a pure GenotypeFormatSpec @@ -247,13 +247,13 @@ "unknown format " 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" @@ -264,7 +264,7 @@ data SNPSetSpec = SNPSet1240K | SNPSetHumanOrigins | SNPSetOther - deriving (SNPSetSpec -> SNPSetSpec -> Bool + deriving (SNPSetSpec -> SNPSetSpec -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: SNPSetSpec -> SNPSetSpec -> Bool $c/= :: SNPSetSpec -> SNPSetSpec -> Bool @@ -272,9 +272,9 @@ $c== :: SNPSetSpec -> SNPSetSpec -> Bool Eq) -instance Show SNPSetSpec where - show :: SNPSetSpec -> [Char] -show SNPSetSpec +instance Show SNPSetSpec where + show :: SNPSetSpec -> [Char] +show SNPSetSpec SNPSet1240K = [Char] "1240K" show SNPSetSpec @@ -284,14 +284,14 @@ SNPSetOther = [Char] "Other" -instance FromJSON SNPSetSpec where - parseJSON :: Value -> Parser SNPSetSpec -parseJSON = forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a +instance FromJSON SNPSetSpec where + parseJSON :: Value -> Parser SNPSetSpec +parseJSON = forall a. [Char] -> (Text -> Parser a) -> Value -> Parser a withText [Char] "snpSet" forall a b. (a -> b) -> a -> b -$ \Text -v -> case Text -v of +$ \Text +v -> case Text +v of Text "1240K" -> forall (f :: * -> *) a. Applicative f => a -> f a pure SNPSetSpec @@ -310,13 +310,13 @@ "unknown snpSet " 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" @@ -329,21 +329,21 @@ snpSetMergeList :: [SNPSetSpec] -> Bool -> SNPSetSpec snpSetMergeList :: [SNPSetSpec] -> Bool -> SNPSetSpec -snpSetMergeList (SNPSetSpec -x:[SNPSetSpec] -xs) Bool -intersect = forall (t :: * -> *) a b. +snpSetMergeList (SNPSetSpec +x:[SNPSetSpec] +xs) Bool +intersect = 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 _ = forall a. HasCallStack => [Char] -> a @@ -398,49 +398,49 @@ -> 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 forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ [Char] -> Maybe [Char] -> IO () checkFile ([Char] -d [Char] -> ShowS +d [Char] -> ShowS </> GenotypeDataSpec -> [Char] indFile GenotypeDataSpec -gd) forall a. Maybe a +gd) forall a. Maybe a Nothing case GenotypeDataSpec -> GenotypeFormatSpec format GenotypeDataSpec -gd of +gd of GenotypeFormatSpec GenotypeFormatEigenstrat -> forall (m :: * -> *). MonadIO m => [Char] -> m [EigenstratIndEntry] readEigenstratInd ([Char] -d [Char] -> ShowS +d [Char] -> ShowS </> GenotypeDataSpec -> [Char] indFile GenotypeDataSpec -gd) +gd) GenotypeFormatSpec GenotypeFormatPlink -> forall a b. (a -> b) -> [a] -> [b] map (PlinkPopNameMode -> PlinkFamEntry -> EigenstratIndEntry plinkFam2EigenstratInd PlinkPopNameMode -popMode) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b +popMode) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> 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 => @@ -449,19 +449,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 -> forall (m :: * -> *). MonadSafe m => @@ -471,20 +471,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) <- forall (m :: * -> *). + ([PlinkFamEntry] +famEntries, Producer (EigenstratSnpEntry, GenoLine) m () +prod) <- forall (m :: * -> *). MonadSafe m => [Char] -> [Char] @@ -492,24 +492,24 @@ -> 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) forall (m :: * -> *) a. Monad m => a -> m a return (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 @@ -517,114 +517,114 @@ -> [[Char]] -> [Maybe (EigenstratSnpEntry, GenoLine)] -> m (EigenstratSnpEntry, GenoLine) -joinEntries LogA -logA [Int] -nrInds [[Char]] -pacNames [Maybe (EigenstratSnpEntry, GenoLine)] -maybeTupleList = do - let allSnpEntries :: [EigenstratSnpEntry] -allSnpEntries = forall a b. (a -> b) -> [a] -> [b] +joinEntries LogA +logA [Int] +nrInds [[Char]] +pacNames [Maybe (EigenstratSnpEntry, GenoLine)] +maybeTupleList = do + let allSnpEntries :: [EigenstratSnpEntry] +allSnpEntries = forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> a fst forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. [Maybe a] -> [a] catMaybes forall a b. (a -> b) -> a -> b $ [Maybe (EigenstratSnpEntry, GenoLine)] -maybeTupleList - EigenstratSnpEntry -consensusSnpEntry <- forall (m :: * -> *). +maybeTupleList + EigenstratSnpEntry +consensusSnpEntry <- forall (m :: * -> *). MonadIO m => LogA -> [EigenstratSnpEntry] -> m EigenstratSnpEntry getConsensusSnpEntry LogA -logA [EigenstratSnpEntry] -allSnpEntries - [GenoLine] -recodedGenotypes <- forall (t :: * -> *) (m :: * -> *) a b. +logA [EigenstratSnpEntry] +allSnpEntries + [GenoLine] +recodedGenotypes <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM (forall a b c. [a] -> [b] -> [c] -> [(a, b, c)] zip3 [Int] -nrInds [[Char]] -pacNames [Maybe (EigenstratSnpEntry, GenoLine)] -maybeTupleList) forall a b. (a -> b) -> a -> b -$ \(Int -n, [Char] -name, Maybe (EigenstratSnpEntry, GenoLine) -maybeTuple) -> +nrInds [[Char]] +pacNames [Maybe (EigenstratSnpEntry, GenoLine)] +maybeTupleList) forall a b. (a -> b) -> a -> b +$ \(Int +n, [Char] +name, Maybe (EigenstratSnpEntry, GenoLine) +maybeTuple) -> case Maybe (EigenstratSnpEntry, GenoLine) -maybeTuple of +maybeTuple of Maybe (EigenstratSnpEntry, GenoLine) Nothing -> forall (m :: * -> *) a. Monad m => a -> m a return (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 " forall a. [a] -> [a] -> [a] ++ [Char] -name forall a. [a] -> [a] -> [a] +name forall a. [a] -> [a] -> [a] ++ [Char] ": " forall a. [a] -> [a] -> [a] ++ [Char] -err +err forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c . forall e a. Exception e => e -> IO a throwIO forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonException PoseidonGenotypeException [Char] -msg - Right GenoLine -x -> forall (m :: * -> *) a. Monad m => a -> m a +msg + Right GenoLine +x -> forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -x +x forall (m :: * -> *) a. Monad m => a -> m a return (EigenstratSnpEntry -consensusSnpEntry, forall a. [Vector a] -> Vector a +consensusSnpEntry, 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 forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. [a] -> a head forall a b. (a -> b) -> a -> b $ [EigenstratSnpEntry] -snpEntries - pos :: Int -pos = EigenstratSnpEntry -> Int +snpEntries + pos :: Int +pos = EigenstratSnpEntry -> Int snpPos forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. [a] -> a head forall a b. (a -> b) -> a -> b $ [EigenstratSnpEntry] -snpEntries - uniqueIds :: [ByteString] -uniqueIds = forall a. Eq a => [a] -> [a] +snpEntries + uniqueIds :: [ByteString] +uniqueIds = forall a. Eq a => [a] -> [a] nub forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] map EigenstratSnpEntry -> ByteString snpId forall a b. (a -> b) -> a -> b $ [EigenstratSnpEntry] -snpEntries - uniqueGenPos :: [Double] -uniqueGenPos = forall a. Ord a => [a] -> [a] +snpEntries + uniqueGenPos :: [Double] +uniqueGenPos = forall a. Ord a => [a] -> [a] sort forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Eq a => [a] -> [a] nub forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -632,70 +632,70 @@ map EigenstratSnpEntry -> Double snpGeneticPos forall a b. (a -> b) -> a -> b $ [EigenstratSnpEntry] -snpEntries - allAlleles :: [Char] -allAlleles = forall (t :: * -> *) a. Foldable t => t [a] -> [a] +snpEntries + allAlleles :: [Char] +allAlleles = forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat 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 = forall a. Eq a => [a] -> [a] +_ Char +r Char +a <- [EigenstratSnpEntry] +snpEntries] + uniqueAlleles :: [Char] +uniqueAlleles = forall a. Eq a => [a] -> [a] nub forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. (a -> Bool) -> [a] -> [a] -filter (\Char -a -> Char -a forall a. Eq a => a -> a -> Bool +filter (\Char +a -> Char +a forall a. Eq a => a -> a -> Bool /= Char 'N' Bool -> Bool -> Bool && Char -a forall a. Eq a => a -> a -> Bool +a forall a. Eq a => a -> a -> Bool /= Char '0' Bool -> Bool -> Bool && Char -a forall a. Eq a => a -> a -> Bool +a forall a. Eq a => a -> a -> Bool /= Char 'X') forall a b. (a -> b) -> a -> b $ [Char] -allAlleles - ByteString -id_ <- case [ByteString] -uniqueIds of - [ByteString -i] -> forall (m :: * -> *) a. Monad m => a -> m a +allAlleles + ByteString +id_ <- case [ByteString] +uniqueIds of + [ByteString +i] -> 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 = forall a. (a -> Bool) -> [a] -> [a] + let rsIds :: [ByteString] +rsIds = 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] _ -> forall a. [a] -> a head [ByteString] -uniqueIds +uniqueIds forall (m :: * -> *). MonadIO m => LogA -> ReaderT Env IO () -> m () logWithEnv LogA -logA forall b c a. (b -> c) -> (a -> b) -> a -> c +logA forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> ReaderT Env IO () logDebug forall a b. (a -> b) -> a -> b $ @@ -703,38 +703,38 @@ "Found inconsistent SNP IDs: " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show [ByteString] -uniqueIds forall a. [a] -> [a] -> [a] +uniqueIds forall a. [a] -> [a] -> [a] ++ [Char] ". Choosing " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show ByteString -selectedId +selectedId forall (m :: * -> *) a. Monad m => a -> m a return ByteString -selectedId - Double -genPos <- case [Double] -uniqueGenPos of - [Double -p] -> forall (m :: * -> *) a. Monad m => a -> m a +selectedId + Double +genPos <- case [Double] +uniqueGenPos of + [Double +p] -> forall (m :: * -> *) a. Monad m => a -> m a return Double -p +p [Double -0.0, Double -p] -> forall (m :: * -> *) a. Monad m => a -> m a +0.0, Double +p] -> 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 = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a + let selectedGenPos :: Double +selectedGenPos = forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum [Double] -uniqueGenPos +uniqueGenPos forall (m :: * -> *). MonadIO m => LogA -> ReaderT Env IO () -> m () logWithEnv LogA -logA forall b c a. (b -> c) -> (a -> b) -> a -> c +logA forall b c a. (b -> c) -> (a -> b) -> a -> c . [Char] -> ReaderT Env IO () logDebug forall a b. (a -> b) -> a -> b $ @@ -742,23 +742,23 @@ "Found inconsistent genetic positions in SNP " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show ByteString -id_ forall a. [a] -> [a] -> [a] +id_ forall a. [a] -> [a] -> [a] ++ [Char] ": " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show [Double] -uniqueGenPos forall a. [a] -> [a] -> [a] +uniqueGenPos forall a. [a] -> [a] -> [a] ++ [Char] ". Choosing " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show Double -selectedGenPos +selectedGenPos 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" @@ -771,14 +771,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)" forall (m :: * -> *) a. Monad m => a -> m a @@ -790,15 +790,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] -> forall (m :: * -> *) a. Monad m => a -> m a return (Chrom -> Int @@ -808,12 +808,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] _ -> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -824,293 +824,293 @@ "Incongruent alleles: " forall a. [a] -> [a] -> [a] ++ 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) -> 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) -> 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) -> 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 -> forall a b. a -> Either a b +maybeRecodedGenoline of + Left [Char] +err -> forall a b. a -> Either a b Left ([Char] "At snp " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> [Char] show EigenstratSnpEntry -snpEntry forall a. [a] -> [a] -> [a] +snpEntry forall a. [a] -> [a] -> [a] ++ [Char] ": allele coding error due to inconsistent \ \alleles with consensus alleles ref = " forall a. [a] -> [a] -> [a] ++ [Char -consRefA] forall a. [a] -> [a] -> [a] +consRefA] forall a. [a] -> [a] -> [a] ++ [Char] ", alt = " forall a. [a] -> [a] -> [a] ++ [Char -consAltA] forall a. [a] -> [a] -> [a] +consAltA] forall a. [a] -> [a] -> [a] ++ [Char] ". Error: " forall a. [a] -> [a] -> [a] ++ [Char] -err) - Right GenoLine -recodedGenoLine -> forall (m :: * -> *) a. Monad m => a -> m a +err) + Right GenoLine +recodedGenoLine -> 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) forall a. Eq a => a -> a -> Bool +refA, a +altA) forall a. Eq a => a -> a -> Bool == (a -consRefA, a -consAltA) = forall (m :: * -> *) a. Monad m => a -> m a +consRefA, a +consAltA) = forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -genoLine -- simple concordance +genoLine -- simple concordance | (a -refA, a -altA) forall a. Eq a => a -> a -> Bool +refA, a +altA) forall a. Eq a => a -> a -> Bool == (a -consAltA, a -consRefA) = forall (m :: * -> *) a. Monad m => a -> m a +consAltA, a +consRefA) = forall (m :: * -> *) a. Monad m => a -> m a return (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 forall a. Eq a => a -> a -> Bool +refA forall a. Eq a => a -> a -> Bool == a -consRefA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +consRefA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b +checked GenoEntry HomRef forall a b. (a -> b) -> a -> b $ 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 forall a. Eq a => a -> a -> Bool +altA forall a. Eq a => a -> a -> Bool == a -consAltA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +consAltA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b +checked GenoEntry HomAlt forall a b. (a -> b) -> a -> b $ 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 forall a. Eq a => a -> a -> Bool +refA forall a. Eq a => a -> a -> Bool == a -consAltA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +consAltA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b +checked GenoEntry HomRef forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) a. Monad m => a -> m a return (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 forall a. Eq a => a -> a -> Bool +altA forall a. Eq a => a -> a -> Bool == a -consRefA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +consRefA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b +checked GenoEntry HomAlt forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) a. Monad m => a -> m a return (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 = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry Missing forall a b. (a -> b) -> a -> b $ 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 forall a. Eq a => a -> a -> Bool +refA forall a. Eq a => a -> a -> Bool == a -consRefA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +consRefA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b +checked GenoEntry HomRef forall a b. (a -> b) -> a -> b $ 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 forall a. Eq a => a -> a -> Bool +altA forall a. Eq a => a -> a -> Bool == a -consRefA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +consRefA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b +checked GenoEntry HomAlt forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) a. Monad m => a -> m a return (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 = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry Missing forall a b. (a -> b) -> a -> b $ 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 forall a. Eq a => a -> a -> Bool +refA forall a. Eq a => a -> a -> Bool == a -consAltA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +consAltA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b +checked GenoEntry HomRef forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) a. Monad m => a -> m a return (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 forall a. Eq a => a -> a -> Bool +altA forall a. Eq a => a -> a -> Bool == a -consAltA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +consAltA = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b +checked GenoEntry HomAlt forall a b. (a -> b) -> a -> b $ 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 = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +checked GenoEntry Missing forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) a. Monad m => a -> m a return GenoLine -genoLine - maybeFlipGenoLine4 :: Either [Char] GenoLine -maybeFlipGenoLine4 = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b -checked GenoEntry +genoLine + maybeFlipGenoLine4 :: Either [Char] GenoLine +maybeFlipGenoLine4 = forall {b}. GenoEntry -> Either [Char] b -> Either [Char] b +checked GenoEntry Missing forall a b. (a -> b) -> a -> b $ 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 forall a. (a -> Bool) -> Vector a -> Bool +genoLine + checked :: GenoEntry -> Either [Char] b -> Either [Char] b +checked GenoEntry +Missing Either [Char] b +action = if forall a. (a -> Bool) -> Vector a -> Bool V.any (forall a. Eq a => a -> a -> Bool /= GenoEntry Missing) GenoLine -genoLine then forall a b. a -> Either a b +genoLine then 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 forall a. (a -> Bool) -> Vector a -> Bool -V.any (\GenoEntry -g -> GenoEntry -g forall a. Eq a => a -> a -> Bool +action + checked GenoEntry +t Either [Char] b +action = if forall a. (a -> Bool) -> Vector a -> Bool +V.any (\GenoEntry +g -> GenoEntry +g forall a. Eq a => a -> a -> Bool /= GenoEntry Missing Bool -> Bool -> Bool && GenoEntry -g forall a. Eq a => a -> a -> Bool +g forall a. Eq a => a -> a -> Bool /= GenoEntry -t) GenoLine -genoLine then forall a b. a -> Either a b +t) GenoLine +genoLine then forall a b. a -> Either a b Left ([Char] "requiring all genotypes missing or " forall a. [a] -> [a] -> [a] ++ 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +printSNPCopyProgress LogA +logA UTCTime +startTime = do + IORef Int +counterRef <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall a. a -> IO (IORef a) newIORef (Int @@ -1121,47 +1121,47 @@ -> (b -> Proxy x' x c' c m b') -> Proxy x' x c' c m a' for forall (m :: * -> *) a r. Functor m => Pipe a a m r cat forall a b. (a -> b) -> a -> b -$ \a -val -> do - Int -n <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +$ \a +val -> do + Int +n <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall a. IORef a -> IO a readIORef IORef Int -counterRef - UTCTime -currentTime <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +counterRef + UTCTime +currentTime <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO UTCTime getCurrentTime forall (m :: * -> *). MonadIO m => LogA -> ReaderT Env IO () -> m () logWithEnv LogA -logA forall a b. (a -> b) -> a -> b +logA 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) forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall a. IORef a -> (a -> a) -> IO () modifyIORef IORef Int -counterRef (forall a. Num a => a -> a -> a +counterRef (forall a. Num a => a -> a -> a +Int 1) 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 forall a. Integral a => a -> a -> a +c forall a. Integral a => a -> a -> a `rem` Int 10000 forall a. Eq a => a -> a -> Bool == Int @@ -1173,15 +1173,15 @@ padLeft Int 9 (forall a. Show a => a -> [Char] show Int -c) forall a. [a] -> [a] -> [a] +c) forall a. [a] -> [a] -> [a] ++ [Char] " " forall a. [a] -> [a] -> [a] ++ Int -> [Char] -prettyTime (forall a b. (RealFrac a, Integral b) => a -> b +prettyTime (forall a b. (RealFrac a, Integral b) => a -> b floor NominalDiffTime -t) +t) | Int -c forall a. Eq a => a -> a -> Bool +c forall a. Eq a => a -> a -> Bool == Int 1000 = [Char] -> ReaderT Env IO () logInfo forall a b. (a -> b) -> a -> b @@ -1190,70 +1190,70 @@ | Bool otherwise = 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 forall a. Ord a => a -> a -> Bool +t forall a. Ord a => a -> a -> Bool < Int 60 = forall a. Show a => a -> [Char] show Int -t forall a. [a] -> [a] -> [a] +t forall a. [a] -> [a] -> [a] ++ [Char] "s" | Int -t forall a. Ord a => a -> a -> Bool +t forall a. Ord a => a -> a -> Bool >= Int 60 Bool -> Bool -> Bool && Int -t forall a. Ord a => a -> a -> Bool +t forall a. Ord a => a -> a -> Bool < Int 3600 = do - let (Int -minutes, Int -rest) = Int -t forall a. Integral a => a -> a -> (a, a) + let (Int +minutes, Int +rest) = Int +t forall a. Integral a => a -> a -> (a, a) `quotRem` Int 60 forall a. Show a => a -> [Char] show Int -minutes forall a. [a] -> [a] -> [a] +minutes forall a. [a] -> [a] -> [a] ++ [Char] "m " forall a. [a] -> [a] -> [a] ++ Int -> [Char] -prettyTime Int -rest +prettyTime Int +rest | Bool otherwise = do - let (Int -hours, Int -rest) = Int -t forall a. Integral a => a -> a -> (a, a) + let (Int +hours, Int +rest) = Int +t forall a. Integral a => a -> a -> (a, a) `quotRem` Int 3600 forall a. Show a => a -> [Char] show Int -hours forall a. [a] -> [a] -> [a] +hours forall a. [a] -> [a] -> [a] ++ [Char] "h " 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, forall a. [a] -> Vector a +selectIndices [Int] +indices (EigenstratSnpEntry +snpEntry, GenoLine +genoLine) = (EigenstratSnpEntry +snpEntry, forall a. [a] -> Vector a V.fromList [GenoLine -genoLine forall a. Vector a -> Int -> a +genoLine 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 df94faa7..517da98c 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 #-}
@@ -89,7 +89,7 @@
 -- | A datatype for genetic sex
 newtype JannoSex = JannoSex { JannoSex -> Sex
 sfSex :: Sex }
-    deriving (JannoSex -> JannoSex -> Bool
+    deriving (JannoSex -> JannoSex -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: JannoSex -> JannoSex -> Bool
 $c/= :: JannoSex -> JannoSex -> Bool
@@ -97,8 +97,8 @@
 $c== :: JannoSex -> JannoSex -> Bool
 Eq)
 
-instance Show JannoSex where
-    show :: JannoSex -> String
+instance Show JannoSex where
+    show :: JannoSex -> String
 show (JannoSex Sex
 Female)  = String
 "F"
@@ -109,8 +109,8 @@
 Unknown) = String
 "U"
 
-instance Ord JannoSex where
-    compare :: JannoSex -> JannoSex -> Ordering
+instance Ord JannoSex where
+    compare :: JannoSex -> JannoSex -> Ordering
 compare (JannoSex Sex
 Female) (JannoSex Sex
 Male)    = Ordering
@@ -140,26 +140,26 @@
 _                                  = Ordering
 EQ
 
-makeJannoSex :: MonadFail m => String -> m JannoSex
+makeJannoSex :: MonadFail m => String -> m JannoSex
 makeJannoSex :: forall (m :: * -> *). MonadFail m => String -> m JannoSex
-makeJannoSex String
-x
+makeJannoSex String
+x
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "F"  = forall (f :: * -> *) a. Applicative f => a -> f a
 pure (Sex -> JannoSex
 JannoSex Sex
 Female)
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "M"  = forall (f :: * -> *) a. Applicative f => a -> f a
 pure (Sex -> JannoSex
 JannoSex Sex
 Male)
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "U"  = forall (f :: * -> *) a. Applicative f => a -> f a
 pure (Sex -> JannoSex
@@ -172,39 +172,39 @@
 "Sex " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not in [F, M, U]"
 
 instance Csv.ToField JannoSex where
-    toField :: JannoSex -> ByteString
-toField JannoSex
-x = forall a. ToField a => a -> ByteString
+    toField :: JannoSex -> ByteString
+toField JannoSex
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show JannoSex
-x
+x
 instance Csv.FromField JannoSex where
-    parseField :: ByteString -> Parser JannoSex
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser JannoSex
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m JannoSex
 makeJannoSex
-instance ToJSON JannoSex where
-    toJSON :: JannoSex -> Value
-toJSON JannoSex
-x  = Text -> Value
+instance ToJSON JannoSex where
+    toJSON :: JannoSex -> Value
+toJSON JannoSex
+x  = Text -> Value
 String forall a b. (a -> b) -> a -> b
 $ String -> Text
 T.pack forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show JannoSex
-x
-instance FromJSON JannoSex where
-    parseJSON :: Value -> Parser JannoSex
-parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
+x
+instance FromJSON JannoSex where
+    parseJSON :: Value -> Parser JannoSex
+parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
 withText String
 "JannoSex" (forall (m :: * -> *). MonadFail m => String -> m JannoSex
 makeJannoSex forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -212,15 +212,15 @@
 T.unpack)
 
 -- | A datatype for BC-AD ages
-newtype BCADAge =
+newtype BCADAge =
         BCADAge Int
-    deriving (BCADAge -> BCADAge -> Bool
+    deriving (BCADAge -> BCADAge -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: BCADAge -> BCADAge -> Bool
 $c/= :: BCADAge -> BCADAge -> Bool
 == :: BCADAge -> BCADAge -> Bool
 $c== :: BCADAge -> BCADAge -> Bool
-Eq, Eq BCADAge
+Eq, Eq BCADAge
 BCADAge -> BCADAge -> Bool
 BCADAge -> BCADAge -> Ordering
 BCADAge -> BCADAge -> BCADAge
@@ -256,36 +256,36 @@
 $cfrom :: forall x. BCADAge -> Rep BCADAge x
 Generic)
 
-instance Show BCADAge where
-    show :: BCADAge -> String
-show (BCADAge Int
-x) = forall a. Show a => a -> String
+instance Show BCADAge where
+    show :: BCADAge -> String
+show (BCADAge Int
+x) = forall a. Show a => a -> String
 show Int
-x
+x
 
-makeBCADAge :: MonadFail m => Int -> m BCADAge
+makeBCADAge :: MonadFail m => Int -> m BCADAge
 makeBCADAge :: forall (m :: * -> *). MonadFail m => Int -> m BCADAge
-makeBCADAge Int
-x =
-    let curYear :: Int
-curYear = Int
+makeBCADAge Int
+x =
+    let curYear :: Int
+curYear = Int
 2023 -- the current year
     in if Int
-x forall a. Ord a => a -> a -> Bool
+x forall a. Ord a => a -> a -> Bool
 >= Int
-curYear
+curYear
        then forall (m :: * -> *) a. MonadFail m => String -> m a
 fail forall a b. (a -> b) -> a -> b
 $ String
 "Age " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show Int
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " later than " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show Int
-curYear forall a. [a] -> [a] -> [a]
+curYear forall a. [a] -> [a] -> [a]
 ++ String
 ", which is impossible. " forall a. [a] -> [a] -> [a]
 ++
@@ -294,47 +294,47 @@
       else forall (f :: * -> *) a. Applicative f => a -> f a
 pure (Int -> BCADAge
 BCADAge Int
-x)
+x)
 
 instance Csv.ToField BCADAge where
-    toField :: BCADAge -> ByteString
-toField (BCADAge Int
-x) = forall a. ToField a => a -> ByteString
+    toField :: BCADAge -> ByteString
+toField (BCADAge Int
+x) = forall a. ToField a => a -> ByteString
 Csv.toField Int
-x
+x
 instance Csv.FromField BCADAge where
-    parseField :: ByteString -> Parser BCADAge
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser BCADAge
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => Int -> m BCADAge
 makeBCADAge
-instance ToJSON BCADAge where
-    toEncoding :: BCADAge -> Encoding
-toEncoding = forall a.
+instance ToJSON BCADAge where
+    toEncoding :: BCADAge -> Encoding
+toEncoding = forall a.
 (Generic a, GToJSON' Encoding Zero (Rep a)) =>
 Options -> a -> Encoding
 genericToEncoding Options
 defaultOptions
-instance FromJSON BCADAge-- where
+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 =
+data JannoDateType =
       C14
     | Contextual
     | Modern
-    deriving (JannoDateType -> JannoDateType -> Bool
+    deriving (JannoDateType -> JannoDateType -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: JannoDateType -> JannoDateType -> Bool
 $c/= :: JannoDateType -> JannoDateType -> Bool
 == :: JannoDateType -> JannoDateType -> Bool
 $c== :: JannoDateType -> JannoDateType -> Bool
-Eq, Eq JannoDateType
+Eq, Eq JannoDateType
 JannoDateType -> JannoDateType -> Bool
 JannoDateType -> JannoDateType -> Ordering
 JannoDateType -> JannoDateType -> JannoDateType
@@ -368,7 +368,7 @@
 (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
 $cto :: forall x. Rep JannoDateType x -> JannoDateType
 $cfrom :: forall x. JannoDateType -> Rep JannoDateType x
-Generic, Int -> JannoDateType
+Generic, Int -> JannoDateType
 JannoDateType -> Int
 JannoDateType -> [JannoDateType]
 JannoDateType -> JannoDateType
@@ -400,7 +400,7 @@
 $cpred :: JannoDateType -> JannoDateType
 succ :: JannoDateType -> JannoDateType
 $csucc :: JannoDateType -> JannoDateType
-Enum, JannoDateType
+Enum, JannoDateType
 forall a. a -> a -> Bounded a
 maxBound :: JannoDateType
 $cmaxBound :: JannoDateType
@@ -408,9 +408,9 @@
 $cminBound :: JannoDateType
 Bounded)
 
-instance Show JannoDateType where
-    show :: JannoDateType -> String
-show JannoDateType
+instance Show JannoDateType where
+    show :: JannoDateType -> String
+show JannoDateType
 C14        = String
 "C14"
     show JannoDateType
@@ -420,24 +420,24 @@
 Modern     = String
 "modern"
 
-makeJannoDateType :: MonadFail m => String -> m JannoDateType
+makeJannoDateType :: MonadFail m => String -> m JannoDateType
 makeJannoDateType :: forall (m :: * -> *). MonadFail m => String -> m JannoDateType
-makeJannoDateType String
-x
+makeJannoDateType String
+x
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "C14"        = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoDateType
 C14
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "contextual" = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoDateType
 Contextual
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "modern"     = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoDateType
@@ -449,39 +449,39 @@
 "Date_Type " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not in [C14, contextual, modern]"
 
 instance Csv.ToField JannoDateType where
-    toField :: JannoDateType -> ByteString
-toField JannoDateType
-x = forall a. ToField a => a -> ByteString
+    toField :: JannoDateType -> ByteString
+toField JannoDateType
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show JannoDateType
-x
+x
 instance Csv.FromField JannoDateType where
-    parseField :: ByteString -> Parser JannoDateType
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser JannoDateType
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m JannoDateType
 makeJannoDateType
-instance ToJSON JannoDateType where
-    toEncoding :: JannoDateType -> Encoding
-toEncoding = forall a.
+instance ToJSON JannoDateType where
+    toEncoding :: JannoDateType -> Encoding
+toEncoding = 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
+instance FromJSON JannoDateType-- where
     --parseJSON = withText "JannoDateType" (makeJannoDateType . T.unpack)
 
 -- |A datatype to represent Capture_Type in a janno file
-data JannoCaptureType =
+data JannoCaptureType =
       Shotgun
     | A1240K
     | ArborComplete
@@ -490,13 +490,13 @@
     | TwistAncientDNA
     | OtherCapture
     | ReferenceGenome
-    deriving (JannoCaptureType -> JannoCaptureType -> Bool
+    deriving (JannoCaptureType -> JannoCaptureType -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: JannoCaptureType -> JannoCaptureType -> Bool
 $c/= :: JannoCaptureType -> JannoCaptureType -> Bool
 == :: JannoCaptureType -> JannoCaptureType -> Bool
 $c== :: JannoCaptureType -> JannoCaptureType -> Bool
-Eq, Eq JannoCaptureType
+Eq, Eq JannoCaptureType
 JannoCaptureType -> JannoCaptureType -> Bool
 JannoCaptureType -> JannoCaptureType -> Ordering
 JannoCaptureType -> JannoCaptureType -> JannoCaptureType
@@ -530,7 +530,7 @@
 (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
 $cto :: forall x. Rep JannoCaptureType x -> JannoCaptureType
 $cfrom :: forall x. JannoCaptureType -> Rep JannoCaptureType x
-Generic, Int -> JannoCaptureType
+Generic, Int -> JannoCaptureType
 JannoCaptureType -> Int
 JannoCaptureType -> [JannoCaptureType]
 JannoCaptureType -> JannoCaptureType
@@ -565,7 +565,7 @@
 $cpred :: JannoCaptureType -> JannoCaptureType
 succ :: JannoCaptureType -> JannoCaptureType
 $csucc :: JannoCaptureType -> JannoCaptureType
-Enum, JannoCaptureType
+Enum, JannoCaptureType
 forall a. a -> a -> Bounded a
 maxBound :: JannoCaptureType
 $cmaxBound :: JannoCaptureType
@@ -573,9 +573,9 @@
 $cminBound :: JannoCaptureType
 Bounded)
 
-instance Show JannoCaptureType where
-    show :: JannoCaptureType -> String
-show JannoCaptureType
+instance Show JannoCaptureType where
+    show :: JannoCaptureType -> String
+show JannoCaptureType
 Shotgun            = String
 "Shotgun"
     show JannoCaptureType
@@ -600,54 +600,54 @@
 ReferenceGenome    = String
 "ReferenceGenome"
 
-makeJannoCaptureType :: MonadFail m => String -> m JannoCaptureType
+makeJannoCaptureType :: MonadFail m => String -> m JannoCaptureType
 makeJannoCaptureType :: forall (m :: * -> *). MonadFail m => String -> m JannoCaptureType
-makeJannoCaptureType String
-x
+makeJannoCaptureType String
+x
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "Shotgun"            = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoCaptureType
 Shotgun
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "1240K"              = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoCaptureType
 A1240K
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "ArborComplete"      = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoCaptureType
 ArborComplete
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "ArborPrimePlus"     = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoCaptureType
 ArborPrimePlus
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "ArborAncestralPlus" = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoCaptureType
 ArborAncestralPlus
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "TwistAncientDNA"    = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoCaptureType
 TwistAncientDNA
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "OtherCapture"       = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoCaptureType
 OtherCapture
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "ReferenceGenome"    = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoCaptureType
@@ -659,49 +659,49 @@
 "Capture_Type " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x 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 = forall a. ToField a => a -> ByteString
+    toField :: JannoCaptureType -> ByteString
+toField JannoCaptureType
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show JannoCaptureType
-x
+x
 instance Csv.FromField JannoCaptureType where
-    parseField :: ByteString -> Parser JannoCaptureType
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser JannoCaptureType
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m JannoCaptureType
 makeJannoCaptureType
-instance ToJSON JannoCaptureType where
-    toEncoding :: JannoCaptureType -> Encoding
-toEncoding = forall a.
+instance ToJSON JannoCaptureType where
+    toEncoding :: JannoCaptureType -> Encoding
+toEncoding = 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
+instance FromJSON JannoCaptureType-- where
     --parseJSON = withText "JannoCaptureType" (makeJannoCaptureType . T.unpack)
 
 -- |A datatype to represent Genotype_Ploidy in a janno file
-data JannoGenotypePloidy =
+data JannoGenotypePloidy =
       Diploid
     | Haploid
-    deriving (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
+    deriving (JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
 $c/= :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
 == :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
 $c== :: JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
-Eq, Eq JannoGenotypePloidy
+Eq, Eq JannoGenotypePloidy
 JannoGenotypePloidy -> JannoGenotypePloidy -> Bool
 JannoGenotypePloidy -> JannoGenotypePloidy -> Ordering
 JannoGenotypePloidy -> JannoGenotypePloidy -> JannoGenotypePloidy
@@ -735,7 +735,7 @@
 (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
 $cto :: forall x. Rep JannoGenotypePloidy x -> JannoGenotypePloidy
 $cfrom :: forall x. JannoGenotypePloidy -> Rep JannoGenotypePloidy x
-Generic, Int -> JannoGenotypePloidy
+Generic, Int -> JannoGenotypePloidy
 JannoGenotypePloidy -> Int
 JannoGenotypePloidy -> [JannoGenotypePloidy]
 JannoGenotypePloidy -> JannoGenotypePloidy
@@ -776,7 +776,7 @@
 $cpred :: JannoGenotypePloidy -> JannoGenotypePloidy
 succ :: JannoGenotypePloidy -> JannoGenotypePloidy
 $csucc :: JannoGenotypePloidy -> JannoGenotypePloidy
-Enum, JannoGenotypePloidy
+Enum, JannoGenotypePloidy
 forall a. a -> a -> Bounded a
 maxBound :: JannoGenotypePloidy
 $cmaxBound :: JannoGenotypePloidy
@@ -784,29 +784,29 @@
 $cminBound :: JannoGenotypePloidy
 Bounded)
 
-instance Show JannoGenotypePloidy where
-    show :: JannoGenotypePloidy -> String
-show JannoGenotypePloidy
+instance Show JannoGenotypePloidy where
+    show :: JannoGenotypePloidy -> String
+show JannoGenotypePloidy
 Diploid = String
 "diploid"
     show JannoGenotypePloidy
 Haploid = String
 "haploid"
 
-makeJannoGenotypePloidy :: MonadFail m => String -> m JannoGenotypePloidy
+makeJannoGenotypePloidy :: MonadFail m => String -> m JannoGenotypePloidy
 makeJannoGenotypePloidy :: forall (m :: * -> *).
 MonadFail m =>
 String -> m JannoGenotypePloidy
-makeJannoGenotypePloidy String
-x
+makeJannoGenotypePloidy String
+x
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "diploid" = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoGenotypePloidy
 Diploid
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "haploid" = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoGenotypePloidy
@@ -818,52 +818,52 @@
 "Genotype_Ploidy " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not in [diploid, haploid]"
 
 instance Csv.ToField JannoGenotypePloidy where
-    toField :: JannoGenotypePloidy -> ByteString
-toField JannoGenotypePloidy
-x = forall a. ToField a => a -> ByteString
+    toField :: JannoGenotypePloidy -> ByteString
+toField JannoGenotypePloidy
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show JannoGenotypePloidy
-x
+x
 instance Csv.FromField JannoGenotypePloidy where
-    parseField :: ByteString -> Parser JannoGenotypePloidy
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser JannoGenotypePloidy
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *).
 MonadFail m =>
 String -> m JannoGenotypePloidy
 makeJannoGenotypePloidy
-instance ToJSON JannoGenotypePloidy where
-    toEncoding :: JannoGenotypePloidy -> Encoding
-toEncoding = forall a.
+instance ToJSON JannoGenotypePloidy where
+    toEncoding :: JannoGenotypePloidy -> Encoding
+toEncoding = 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
+instance FromJSON JannoGenotypePloidy-- where
     --parseJSON = withText "JannoGenotypePloidy" (makeJannoGenotypePloidy . T.unpack)
 
 -- |A datatype to represent UDG in a janno file
-data JannoUDG =
+data JannoUDG =
       Minus
     | Half
     | Plus
     | Mixed
-    deriving (JannoUDG -> JannoUDG -> Bool
+    deriving (JannoUDG -> JannoUDG -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: JannoUDG -> JannoUDG -> Bool
 $c/= :: JannoUDG -> JannoUDG -> Bool
 == :: JannoUDG -> JannoUDG -> Bool
 $c== :: JannoUDG -> JannoUDG -> Bool
-Eq, Eq JannoUDG
+Eq, Eq JannoUDG
 JannoUDG -> JannoUDG -> Bool
 JannoUDG -> JannoUDG -> Ordering
 JannoUDG -> JannoUDG -> JannoUDG
@@ -897,7 +897,7 @@
 (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
 $cto :: forall x. Rep JannoUDG x -> JannoUDG
 $cfrom :: forall x. JannoUDG -> Rep JannoUDG x
-Generic, Int -> JannoUDG
+Generic, Int -> JannoUDG
 JannoUDG -> Int
 JannoUDG -> [JannoUDG]
 JannoUDG -> JannoUDG
@@ -929,7 +929,7 @@
 $cpred :: JannoUDG -> JannoUDG
 succ :: JannoUDG -> JannoUDG
 $csucc :: JannoUDG -> JannoUDG
-Enum, JannoUDG
+Enum, JannoUDG
 forall a. a -> a -> Bounded a
 maxBound :: JannoUDG
 $cmaxBound :: JannoUDG
@@ -937,9 +937,9 @@
 $cminBound :: JannoUDG
 Bounded)
 
-instance Show JannoUDG where
-    show :: JannoUDG -> String
-show JannoUDG
+instance Show JannoUDG where
+    show :: JannoUDG -> String
+show JannoUDG
 Minus = String
 "minus"
     show JannoUDG
@@ -952,30 +952,30 @@
 Mixed = String
 "mixed"
 
-makeJannoUDG :: MonadFail m => String -> m JannoUDG
+makeJannoUDG :: MonadFail m => String -> m JannoUDG
 makeJannoUDG :: forall (m :: * -> *). MonadFail m => String -> m JannoUDG
-makeJannoUDG String
-x
+makeJannoUDG String
+x
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "minus" = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoUDG
 Minus
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "half"  = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoUDG
 Half
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "plus"  = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoUDG
 Plus
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "mixed" = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoUDG
@@ -987,50 +987,50 @@
 "UDG " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not in [minus, half, plus, mixed]"
 
 instance Csv.ToField JannoUDG where
-    toField :: JannoUDG -> ByteString
-toField JannoUDG
-x = forall a. ToField a => a -> ByteString
+    toField :: JannoUDG -> ByteString
+toField JannoUDG
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show JannoUDG
-x
+x
 instance Csv.FromField JannoUDG where
-    parseField :: ByteString -> Parser JannoUDG
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser JannoUDG
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m JannoUDG
 makeJannoUDG
-instance ToJSON JannoUDG where
-    toEncoding :: JannoUDG -> Encoding
-toEncoding = forall a.
+instance ToJSON JannoUDG where
+    toEncoding :: JannoUDG -> Encoding
+toEncoding = 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
+instance FromJSON JannoUDG-- where
     --parseJSON = withText "JannoUDG" (makeJannoUDG . T.unpack)
 
 -- |A datatype to represent Library_Built in a janno file
-data JannoLibraryBuilt =
+data JannoLibraryBuilt =
       DS
     | SS
     | MixedSSDS
     | Other -- the "other" option is deprecated and should be removed at some point
-    deriving (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
+    deriving (JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
 $c/= :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
 == :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
 $c== :: JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
-Eq, Eq JannoLibraryBuilt
+Eq, Eq JannoLibraryBuilt
 JannoLibraryBuilt -> JannoLibraryBuilt -> Bool
 JannoLibraryBuilt -> JannoLibraryBuilt -> Ordering
 JannoLibraryBuilt -> JannoLibraryBuilt -> JannoLibraryBuilt
@@ -1064,7 +1064,7 @@
 (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
 $cto :: forall x. Rep JannoLibraryBuilt x -> JannoLibraryBuilt
 $cfrom :: forall x. JannoLibraryBuilt -> Rep JannoLibraryBuilt x
-Generic, Int -> JannoLibraryBuilt
+Generic, Int -> JannoLibraryBuilt
 JannoLibraryBuilt -> Int
 JannoLibraryBuilt -> [JannoLibraryBuilt]
 JannoLibraryBuilt -> JannoLibraryBuilt
@@ -1099,7 +1099,7 @@
 $cpred :: JannoLibraryBuilt -> JannoLibraryBuilt
 succ :: JannoLibraryBuilt -> JannoLibraryBuilt
 $csucc :: JannoLibraryBuilt -> JannoLibraryBuilt
-Enum, JannoLibraryBuilt
+Enum, JannoLibraryBuilt
 forall a. a -> a -> Bounded a
 maxBound :: JannoLibraryBuilt
 $cmaxBound :: JannoLibraryBuilt
@@ -1107,9 +1107,9 @@
 $cminBound :: JannoLibraryBuilt
 Bounded)
 
-instance Show JannoLibraryBuilt where
-    show :: JannoLibraryBuilt -> String
-show JannoLibraryBuilt
+instance Show JannoLibraryBuilt where
+    show :: JannoLibraryBuilt -> String
+show JannoLibraryBuilt
 DS        = String
 "ds"
     show JannoLibraryBuilt
@@ -1122,30 +1122,30 @@
 Other     = String
 "other"
 
-makeJannoLibraryBuilt :: MonadFail m => String -> m JannoLibraryBuilt
+makeJannoLibraryBuilt :: MonadFail m => String -> m JannoLibraryBuilt
 makeJannoLibraryBuilt :: forall (m :: * -> *). MonadFail m => String -> m JannoLibraryBuilt
-makeJannoLibraryBuilt String
-x
+makeJannoLibraryBuilt String
+x
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "ds"    = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoLibraryBuilt
 DS
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "ss"    = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoLibraryBuilt
 SS
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "mixed" = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoLibraryBuilt
 MixedSSDS
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "other" = forall (f :: * -> *) a. Applicative f => a -> f a
 pure JannoLibraryBuilt
@@ -1157,46 +1157,46 @@
 "Library_Built " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not in [ds, ss, mixed]"
 
 instance Csv.ToField JannoLibraryBuilt where
-    toField :: JannoLibraryBuilt -> ByteString
-toField JannoLibraryBuilt
-x = forall a. ToField a => a -> ByteString
+    toField :: JannoLibraryBuilt -> ByteString
+toField JannoLibraryBuilt
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show JannoLibraryBuilt
-x
+x
 instance Csv.FromField JannoLibraryBuilt where
-    parseField :: ByteString -> Parser JannoLibraryBuilt
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser JannoLibraryBuilt
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m JannoLibraryBuilt
 makeJannoLibraryBuilt
-instance ToJSON JannoLibraryBuilt where
-    toEncoding :: JannoLibraryBuilt -> Encoding
-toEncoding = forall a.
+instance ToJSON JannoLibraryBuilt where
+    toEncoding :: JannoLibraryBuilt -> Encoding
+toEncoding = 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
+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
+    deriving (JannoCountry -> JannoCountry -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: JannoCountry -> JannoCountry -> Bool
 $c/= :: JannoCountry -> JannoCountry -> Bool
 == :: JannoCountry -> JannoCountry -> Bool
 $c== :: JannoCountry -> JannoCountry -> Bool
-Eq, Eq JannoCountry
+Eq, Eq JannoCountry
 JannoCountry -> JannoCountry -> Bool
 JannoCountry -> JannoCountry -> Ordering
 JannoCountry -> JannoCountry -> JannoCountry
@@ -1226,103 +1226,103 @@
 $ccompare :: JannoCountry -> JannoCountry -> Ordering
 Ord)
 
-instance Show JannoCountry where
-    show :: JannoCountry -> String
-show (JannoCountry Country
-x) = Text -> String
+instance Show JannoCountry where
+    show :: JannoCountry -> String
+show (JannoCountry Country
+x) = Text -> String
 T.unpack forall a b. (a -> b) -> a -> b
 $ Country -> Text
 alphaTwoUpper Country
-x
+x
 
 makeJannoCountryEither :: String -> Either PoseidonException JannoCountry
 makeJannoCountryEither :: String -> Either PoseidonException JannoCountry
-makeJannoCountryEither String
-x =
+makeJannoCountryEither String
+x =
     case Text -> Maybe Country
 decodeAlphaTwo (String -> Text
 T.pack String
-x) of
-        Just Country
-c  -> forall a b. b -> Either a b
+x) of
+        Just Country
+c  -> forall a b. b -> Either a b
 Right forall a b. (a -> b) -> a -> b
 $ Country -> JannoCountry
 JannoCountry Country
-c
+c
         Maybe Country
 Nothing -> forall a b. a -> Either a b
 Left forall b c a. (b -> c) -> (a -> b) -> a -> c
 . String -> PoseidonException
 PoseidonGenericException forall a b. (a -> b) -> a -> b
 $ String
-x forall a. [a] -> [a] -> [a]
+x 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
+makeJannoCountryUnsafe String
+x = case String -> Either PoseidonException JannoCountry
 makeJannoCountryEither String
-x of
-    Left PoseidonException
-e  -> forall a. HasCallStack => String -> a
+x of
+    Left PoseidonException
+e  -> forall a. HasCallStack => String -> a
 error forall b c a. (b -> c) -> (a -> b) -> a -> c
 . forall a. Show a => a -> String
 show forall a b. (a -> b) -> a -> b
 $ PoseidonException
-e
-    Right JannoCountry
-r -> JannoCountry
-r
+e
+    Right JannoCountry
+r -> JannoCountry
+r
 
-makeJannoCountry :: (MonadFail m) => String -> m JannoCountry
+makeJannoCountry :: (MonadFail m) => String -> m JannoCountry
 makeJannoCountry :: forall (m :: * -> *). MonadFail m => String -> m JannoCountry
-makeJannoCountry String
-x = case String -> Either PoseidonException JannoCountry
+makeJannoCountry String
+x = case String -> Either PoseidonException JannoCountry
 makeJannoCountryEither String
-x of
-    Left PoseidonException
-e  -> forall (m :: * -> *) a. MonadFail m => String -> m a
+x of
+    Left PoseidonException
+e  -> forall (m :: * -> *) a. MonadFail m => String -> m a
 fail forall b c a. (b -> c) -> (a -> b) -> a -> c
 . forall a. Show a => a -> String
 show forall a b. (a -> b) -> a -> b
 $ PoseidonException
-e
-    Right JannoCountry
-r -> forall (m :: * -> *) a. Monad m => a -> m a
+e
+    Right JannoCountry
+r -> forall (m :: * -> *) a. Monad m => a -> m a
 return JannoCountry
-r
+r
 
 instance Csv.ToField JannoCountry where
-    toField :: JannoCountry -> ByteString
-toField JannoCountry
-x = forall a. ToField a => a -> ByteString
+    toField :: JannoCountry -> ByteString
+toField JannoCountry
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show JannoCountry
-x
+x
 instance Csv.FromField JannoCountry where
-    parseField :: ByteString -> Parser JannoCountry
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser JannoCountry
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m JannoCountry
 makeJannoCountry
-instance ToJSON JannoCountry where
-    toJSON :: JannoCountry -> Value
-toJSON JannoCountry
-x  = Text -> Value
+instance ToJSON JannoCountry where
+    toJSON :: JannoCountry -> Value
+toJSON JannoCountry
+x  = Text -> Value
 String forall a b. (a -> b) -> a -> b
 $ String -> Text
 T.pack forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show JannoCountry
-x
-instance FromJSON JannoCountry where
-    parseJSON :: Value -> Parser JannoCountry
-parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
+x
+instance FromJSON JannoCountry where
+    parseJSON :: Value -> Parser JannoCountry
+parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
 withText String
 "JannoCountry" (forall (m :: * -> *). MonadFail m => String -> m JannoCountry
 makeJannoCountry forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -1330,15 +1330,15 @@
 T.unpack)
 
 -- | A datatype for Latitudes
-newtype Latitude =
+newtype Latitude =
         Latitude Double
-    deriving (Latitude -> Latitude -> Bool
+    deriving (Latitude -> Latitude -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: Latitude -> Latitude -> Bool
 $c/= :: Latitude -> Latitude -> Bool
 == :: Latitude -> Latitude -> Bool
 $c== :: Latitude -> Latitude -> Bool
-Eq, Eq Latitude
+Eq, Eq Latitude
 Latitude -> Latitude -> Bool
 Latitude -> Latitude -> Ordering
 Latitude -> Latitude -> Latitude
@@ -1374,28 +1374,28 @@
 $cfrom :: forall x. Latitude -> Rep Latitude x
 Generic)
 
-instance Show Latitude where
-    show :: Latitude -> String
-show (Latitude Double
-x) = forall a. Show a => a -> String
+instance Show Latitude where
+    show :: Latitude -> String
+show (Latitude Double
+x) = forall a. Show a => a -> String
 show Double
-x
+x
 
-makeLatitude :: MonadFail m => Double -> m Latitude
+makeLatitude :: MonadFail m => Double -> m Latitude
 makeLatitude :: forall (m :: * -> *). MonadFail m => Double -> m Latitude
-makeLatitude Double
-x
+makeLatitude Double
+x
     | Double
-x forall a. Ord a => a -> a -> Bool
+x forall a. Ord a => a -> a -> Bool
 >= -Double
 90 Bool -> Bool -> Bool
 && Double
-x forall a. Ord a => a -> a -> Bool
+x forall a. Ord a => a -> a -> Bool
 <= Double
 90 = forall (f :: * -> *) a. Applicative f => a -> f a
 pure (Double -> Latitude
 Latitude Double
-x)
+x)
     | Bool
 otherwise           = forall (m :: * -> *) a. MonadFail m => String -> m a
 fail forall a b. (a -> b) -> a -> b
@@ -1403,44 +1403,44 @@
 "Latitude " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show Double
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not between -90 and 90"
 
 instance Csv.ToField Latitude where
-    toField :: Latitude -> ByteString
-toField (Latitude Double
-x) = forall a. ToField a => a -> ByteString
+    toField :: Latitude -> ByteString
+toField (Latitude Double
+x) = forall a. ToField a => a -> ByteString
 Csv.toField Double
-x
+x
 instance Csv.FromField Latitude where
-    parseField :: ByteString -> Parser Latitude
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser Latitude
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => Double -> m Latitude
 makeLatitude
-instance ToJSON Latitude where
-    toEncoding :: Latitude -> Encoding
-toEncoding = forall a.
+instance ToJSON Latitude where
+    toEncoding :: Latitude -> Encoding
+toEncoding = forall a.
 (Generic a, GToJSON' Encoding Zero (Rep a)) =>
 Options -> a -> Encoding
 genericToEncoding Options
 defaultOptions
-instance FromJSON Latitude-- where
+instance FromJSON Latitude-- where
     --parseJSON = withScientific "Latitude" $ \n -> (makeLatitude . toRealFloat) n
 
 -- | A datatype for Longitudes
-newtype Longitude =
+newtype Longitude =
         Longitude Double
-    deriving (Longitude -> Longitude -> Bool
+    deriving (Longitude -> Longitude -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: Longitude -> Longitude -> Bool
 $c/= :: Longitude -> Longitude -> Bool
 == :: Longitude -> Longitude -> Bool
 $c== :: Longitude -> Longitude -> Bool
-Eq, Eq Longitude
+Eq, Eq Longitude
 Longitude -> Longitude -> Bool
 Longitude -> Longitude -> Ordering
 Longitude -> Longitude -> Longitude
@@ -1476,28 +1476,28 @@
 $cfrom :: forall x. Longitude -> Rep Longitude x
 Generic)
 
-instance Show Longitude where
-    show :: Longitude -> String
-show (Longitude Double
-x) = forall a. Show a => a -> String
+instance Show Longitude where
+    show :: Longitude -> String
+show (Longitude Double
+x) = forall a. Show a => a -> String
 show Double
-x
+x
 
-makeLongitude :: MonadFail m => Double -> m Longitude
+makeLongitude :: MonadFail m => Double -> m Longitude
 makeLongitude :: forall (m :: * -> *). MonadFail m => Double -> m Longitude
-makeLongitude Double
-x
+makeLongitude Double
+x
     | Double
-x forall a. Ord a => a -> a -> Bool
+x forall a. Ord a => a -> a -> Bool
 >= -Double
 180 Bool -> Bool -> Bool
 && Double
-x forall a. Ord a => a -> a -> Bool
+x forall a. Ord a => a -> a -> Bool
 <= Double
 180 = forall (f :: * -> *) a. Applicative f => a -> f a
 pure (Double -> Longitude
 Longitude Double
-x)
+x)
     | Bool
 otherwise             = forall (m :: * -> *) a. MonadFail m => String -> m a
 fail forall a b. (a -> b) -> a -> b
@@ -1505,44 +1505,44 @@
 "Longitude " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show Double
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not between -180 and 180"
 
 instance Csv.ToField Longitude where
-    toField :: Longitude -> ByteString
-toField (Longitude Double
-x) = forall a. ToField a => a -> ByteString
+    toField :: Longitude -> ByteString
+toField (Longitude Double
+x) = forall a. ToField a => a -> ByteString
 Csv.toField Double
-x
+x
 instance Csv.FromField Longitude where
-    parseField :: ByteString -> Parser Longitude
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser Longitude
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => Double -> m Longitude
 makeLongitude
-instance ToJSON Longitude where
-    toEncoding :: Longitude -> Encoding
-toEncoding = forall a.
+instance ToJSON Longitude where
+    toEncoding :: Longitude -> Encoding
+toEncoding = forall a.
 (Generic a, GToJSON' Encoding Zero (Rep a)) =>
 Options -> a -> Encoding
 genericToEncoding Options
 defaultOptions
-instance FromJSON Longitude-- where
+instance FromJSON Longitude-- where
     --parseJSON = withScientific "Longitude" $ \n -> (makeLongitude . toRealFloat) n
 
 -- | A datatype for Percent values
-newtype Percent =
+newtype Percent =
         Percent Double
-    deriving (Percent -> Percent -> Bool
+    deriving (Percent -> Percent -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: Percent -> Percent -> Bool
 $c/= :: Percent -> Percent -> Bool
 == :: Percent -> Percent -> Bool
 $c== :: Percent -> Percent -> Bool
-Eq, Eq Percent
+Eq, Eq Percent
 Percent -> Percent -> Bool
 Percent -> Percent -> Ordering
 Percent -> Percent -> Percent
@@ -1578,28 +1578,28 @@
 $cfrom :: forall x. Percent -> Rep Percent x
 Generic)
 
-instance Show Percent where
-    show :: Percent -> String
-show (Percent Double
-x) = forall a. Show a => a -> String
+instance Show Percent where
+    show :: Percent -> String
+show (Percent Double
+x) = forall a. Show a => a -> String
 show Double
-x
+x
 
-makePercent :: MonadFail m => Double -> m Percent
+makePercent :: MonadFail m => Double -> m Percent
 makePercent :: forall (m :: * -> *). MonadFail m => Double -> m Percent
-makePercent Double
-x
+makePercent Double
+x
     | Double
-x forall a. Ord a => a -> a -> Bool
+x forall a. Ord a => a -> a -> Bool
 >= Double
 0 Bool -> Bool -> Bool
 && Double
-x forall a. Ord a => a -> a -> Bool
+x forall a. Ord a => a -> a -> Bool
 <= Double
 100 = forall (f :: * -> *) a. Applicative f => a -> f a
 pure (Double -> Percent
 Percent Double
-x)
+x)
     | Bool
 otherwise          = forall (m :: * -> *) a. MonadFail m => String -> m a
 fail forall a b. (a -> b) -> a -> b
@@ -1607,44 +1607,44 @@
 "Percentage " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show Double
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not between 0 and 100"
 
 instance Csv.ToField Percent where
-    toField :: Percent -> ByteString
-toField (Percent Double
-x) = forall a. ToField a => a -> ByteString
+    toField :: Percent -> ByteString
+toField (Percent Double
+x) = forall a. ToField a => a -> ByteString
 Csv.toField Double
-x
+x
 instance Csv.FromField Percent where
-    parseField :: ByteString -> Parser Percent
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser Percent
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => Double -> m Percent
 makePercent
-instance ToJSON Percent where
-    toEncoding :: Percent -> Encoding
-toEncoding = forall a.
+instance ToJSON Percent where
+    toEncoding :: Percent -> Encoding
+toEncoding = forall a.
 (Generic a, GToJSON' Encoding Zero (Rep a)) =>
 Options -> a -> Encoding
 genericToEncoding Options
 defaultOptions
-instance FromJSON Percent-- where
+instance FromJSON Percent-- where
     --parseJSON = withScientific "Percent" $ \n -> (makePercent . toRealFloat) n
 
 -- | A datatype to represent URIs in a janno file
-newtype JURI =
+newtype JURI =
         JURI String
-    deriving (JURI -> JURI -> Bool
+    deriving (JURI -> JURI -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: JURI -> JURI -> Bool
 $c/= :: JURI -> JURI -> Bool
 == :: JURI -> JURI -> Bool
 $c== :: JURI -> JURI -> Bool
-Eq, Eq JURI
+Eq, Eq JURI
 JURI -> JURI -> Bool
 JURI -> JURI -> Ordering
 JURI -> JURI -> JURI
@@ -1680,23 +1680,23 @@
 $cfrom :: forall x. JURI -> Rep JURI x
 Generic)
 
-instance Show JURI where
-    show :: JURI -> String
-show (JURI String
-x) = String
-x
+instance Show JURI where
+    show :: JURI -> String
+show (JURI String
+x) = String
+x
 
-makeJURI :: MonadFail m => String -> m JURI
+makeJURI :: MonadFail m => String -> m JURI
 makeJURI :: forall (m :: * -> *). MonadFail m => String -> m JURI
-makeJURI String
-x
+makeJURI String
+x
     | String -> Bool
 isURIReference String
-x   = forall (f :: * -> *) a. Applicative f => a -> f a
+x   = forall (f :: * -> *) a. Applicative f => a -> f a
 pure forall a b. (a -> b) -> a -> b
 $ String -> JURI
 JURI String
-x
+x
     | Bool
 otherwise          = forall (m :: * -> *) a. MonadFail m => String -> m a
 fail forall a b. (a -> b) -> a -> b
@@ -1704,41 +1704,41 @@
 "URI " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not well structured"
 
 instance Csv.ToField JURI where
-    toField :: JURI -> ByteString
-toField JURI
-x = forall a. ToField a => a -> ByteString
+    toField :: JURI -> ByteString
+toField JURI
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show JURI
-x
+x
 instance Csv.FromField JURI where
-    parseField :: ByteString -> Parser JURI
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser JURI
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m JURI
 makeJURI
-instance ToJSON JURI where
-    toEncoding :: JURI -> Encoding
-toEncoding = forall a.
+instance ToJSON JURI where
+    toEncoding :: JURI -> Encoding
+toEncoding = 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
+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 =
+data RelationDegree =
       Identical
     | First
     | Second
@@ -1746,13 +1746,13 @@
     | SixthToTenth
     | Unrelated
     | OtherDegree
-    deriving (RelationDegree -> RelationDegree -> Bool
+    deriving (RelationDegree -> RelationDegree -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: RelationDegree -> RelationDegree -> Bool
 $c/= :: RelationDegree -> RelationDegree -> Bool
 == :: RelationDegree -> RelationDegree -> Bool
 $c== :: RelationDegree -> RelationDegree -> Bool
-Eq, Eq RelationDegree
+Eq, Eq RelationDegree
 RelationDegree -> RelationDegree -> Bool
 RelationDegree -> RelationDegree -> Ordering
 RelationDegree -> RelationDegree -> RelationDegree
@@ -1786,7 +1786,7 @@
 (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
 $cto :: forall x. Rep RelationDegree x -> RelationDegree
 $cfrom :: forall x. RelationDegree -> Rep RelationDegree x
-Generic, Int -> RelationDegree
+Generic, Int -> RelationDegree
 RelationDegree -> Int
 RelationDegree -> [RelationDegree]
 RelationDegree -> RelationDegree
@@ -1821,7 +1821,7 @@
 $cpred :: RelationDegree -> RelationDegree
 succ :: RelationDegree -> RelationDegree
 $csucc :: RelationDegree -> RelationDegree
-Enum, RelationDegree
+Enum, RelationDegree
 forall a. a -> a -> Bounded a
 maxBound :: RelationDegree
 $cmaxBound :: RelationDegree
@@ -1829,9 +1829,9 @@
 $cminBound :: RelationDegree
 Bounded)
 
-instance Show RelationDegree where
-    show :: RelationDegree -> String
-show RelationDegree
+instance Show RelationDegree where
+    show :: RelationDegree -> String
+show RelationDegree
 Identical    = String
 "identical"
     show RelationDegree
@@ -1853,42 +1853,42 @@
 OtherDegree  = String
 "other"
 
-makeRelationDegree :: MonadFail m => String -> m RelationDegree
+makeRelationDegree :: MonadFail m => String -> m RelationDegree
 makeRelationDegree :: forall (m :: * -> *). MonadFail m => String -> m RelationDegree
-makeRelationDegree String
-x
+makeRelationDegree String
+x
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "identical"    = forall (f :: * -> *) a. Applicative f => a -> f a
 pure RelationDegree
 Identical
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "first"        = forall (f :: * -> *) a. Applicative f => a -> f a
 pure RelationDegree
 First
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "second"       = forall (f :: * -> *) a. Applicative f => a -> f a
 pure RelationDegree
 Second
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "thirdToFifth" = forall (f :: * -> *) a. Applicative f => a -> f a
 pure RelationDegree
 ThirdToFifth
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "sixthToTenth" = forall (f :: * -> *) a. Applicative f => a -> f a
 pure RelationDegree
 SixthToTenth
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "unrelated"    = forall (f :: * -> *) a. Applicative f => a -> f a
 pure RelationDegree
@@ -1896,7 +1896,7 @@
                                            -- relations of type "unrelated" don't have to be
                                            -- listed explicitly
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "other"        = forall (f :: * -> *) a. Applicative f => a -> f a
 pure RelationDegree
@@ -1908,40 +1908,40 @@
 "Relation degree " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x 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 = forall a. ToField a => a -> ByteString
+    toField :: RelationDegree -> ByteString
+toField RelationDegree
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show RelationDegree
-x
+x
 instance Csv.FromField RelationDegree where
-    parseField :: ByteString -> Parser RelationDegree
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser RelationDegree
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m RelationDegree
 makeRelationDegree
-instance ToJSON RelationDegree where
-    toEncoding :: RelationDegree -> Encoding
-toEncoding = forall a.
+instance ToJSON RelationDegree where
+    toEncoding :: RelationDegree -> Encoding
+toEncoding = 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
+instance FromJSON RelationDegree-- where
     --parseJSON = withText "RelationDegree" (makeRelationDegree . T.unpack)
 
 -- |A datatype to represent AccessionIDs in a janno file
-data AccessionID =
+data AccessionID =
       INSDCProject String
     | INSDCStudy String
     | INSDCBioSample String
@@ -1950,13 +1950,13 @@
     | INSDCRun String
     | INSDCAnalysis String
     | OtherID String
-    deriving (AccessionID -> AccessionID -> Bool
+    deriving (AccessionID -> AccessionID -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: AccessionID -> AccessionID -> Bool
 $c/= :: AccessionID -> AccessionID -> Bool
 == :: AccessionID -> AccessionID -> Bool
 $c== :: AccessionID -> AccessionID -> Bool
-Eq, Eq AccessionID
+Eq, Eq AccessionID
 AccessionID -> AccessionID -> Bool
 AccessionID -> AccessionID -> Ordering
 AccessionID -> AccessionID -> AccessionID
@@ -1992,41 +1992,41 @@
 $cfrom :: forall x. AccessionID -> Rep AccessionID x
 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
+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 :: MonadFail m => String -> m AccessionID
 makeAccessionID :: forall (m :: * -> *). MonadFail m => String -> m AccessionID
-makeAccessionID String
-x
+makeAccessionID String
+x
     | String
-x forall source source1 target.
+x forall source source1 target.
 (RegexMaker Regex CompOption ExecOption source,
  RegexContext Regex source1 target) =>
 source1 -> source -> target
@@ -2035,9 +2035,9 @@
 pure forall a b. (a -> b) -> a -> b
 $ String -> AccessionID
 INSDCProject String
-x
+x
     | String
-x forall source source1 target.
+x forall source source1 target.
 (RegexMaker Regex CompOption ExecOption source,
  RegexContext Regex source1 target) =>
 source1 -> source -> target
@@ -2046,9 +2046,9 @@
 pure forall a b. (a -> b) -> a -> b
 $ String -> AccessionID
 INSDCStudy String
-x
+x
     | String
-x forall source source1 target.
+x forall source source1 target.
 (RegexMaker Regex CompOption ExecOption source,
  RegexContext Regex source1 target) =>
 source1 -> source -> target
@@ -2057,9 +2057,9 @@
 pure forall a b. (a -> b) -> a -> b
 $ String -> AccessionID
 INSDCBioSample String
-x
+x
     | String
-x forall source source1 target.
+x forall source source1 target.
 (RegexMaker Regex CompOption ExecOption source,
  RegexContext Regex source1 target) =>
 source1 -> source -> target
@@ -2068,9 +2068,9 @@
 pure forall a b. (a -> b) -> a -> b
 $ String -> AccessionID
 INSDCSample String
-x
+x
     | String
-x forall source source1 target.
+x forall source source1 target.
 (RegexMaker Regex CompOption ExecOption source,
  RegexContext Regex source1 target) =>
 source1 -> source -> target
@@ -2079,9 +2079,9 @@
 pure forall a b. (a -> b) -> a -> b
 $ String -> AccessionID
 INSDCExperiment String
-x
+x
     | String
-x forall source source1 target.
+x forall source source1 target.
 (RegexMaker Regex CompOption ExecOption source,
  RegexContext Regex source1 target) =>
 source1 -> source -> target
@@ -2090,9 +2090,9 @@
 pure forall a b. (a -> b) -> a -> b
 $ String -> AccessionID
 INSDCRun String
-x
+x
     | String
-x forall source source1 target.
+x forall source source1 target.
 (RegexMaker Regex CompOption ExecOption source,
  RegexContext Regex source1 target) =>
 source1 -> source -> target
@@ -2101,52 +2101,52 @@
 pure forall a b. (a -> b) -> a -> b
 $ String -> AccessionID
 INSDCAnalysis String
-x
+x
     | Bool
 otherwise                                   = forall (f :: * -> *) a. Applicative f => a -> f a
 pure forall a b. (a -> b) -> a -> b
 $ String -> AccessionID
 OtherID String
-x
+x
 
 instance Csv.ToField AccessionID where
-    toField :: AccessionID -> ByteString
-toField AccessionID
-x = forall a. ToField a => a -> ByteString
+    toField :: AccessionID -> ByteString
+toField AccessionID
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show AccessionID
-x
+x
 instance Csv.FromField AccessionID where
-    parseField :: ByteString -> Parser AccessionID
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser AccessionID
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m AccessionID
 makeAccessionID
-instance ToJSON AccessionID where
-    toEncoding :: AccessionID -> Encoding
-toEncoding = forall a.
+instance ToJSON AccessionID where
+    toEncoding :: AccessionID -> Encoding
+toEncoding = 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
+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
+newtype JannoList a = JannoList {forall a. JannoList a -> [a]
+getJannoList :: [a]}
+    deriving (JannoList a -> JannoList a -> Bool
 forall a. Eq a => JannoList a -> JannoList a -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: JannoList a -> JannoList a -> Bool
 $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
-Eq, JannoList a -> JannoList a -> Bool
+Eq, JannoList a -> JannoList a -> Bool
 JannoList a -> JannoList a -> Ordering
 JannoList a -> JannoList a -> JannoList a
 forall a.
@@ -2183,7 +2183,7 @@
 forall a x. JannoList a -> Rep (JannoList a) x
 $cto :: forall a x. Rep (JannoList a) x -> JannoList a
 $cfrom :: forall a x. JannoList a -> Rep (JannoList a) x
-Generic, Int -> JannoList a -> ShowS
+Generic, Int -> JannoList a -> ShowS
 forall a. Show a => Int -> JannoList a -> ShowS
 forall a. Show a => [JannoList a] -> ShowS
 forall a. Show a => JannoList a -> String
@@ -2197,22 +2197,22 @@
 $cshowsPrec :: forall a. Show a => Int -> JannoList a -> ShowS
 Show)
 
-getMaybeJannoList :: Maybe (JannoList a) -> [a]
+getMaybeJannoList :: Maybe (JannoList a) -> [a]
 getMaybeJannoList :: forall a. Maybe (JannoList a) -> [a]
 getMaybeJannoList Maybe (JannoList a)
 Nothing  = []
-getMaybeJannoList (Just JannoList a
-x) = forall a. JannoList a -> [a]
+getMaybeJannoList (Just JannoList a
+x) = forall a. JannoList a -> [a]
 getJannoList JannoList a
-x
+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
+instance (Csv.ToField a, Show a) => Csv.ToField (JannoList a) where
+    toField :: JannoList a -> ByteString
+toField JannoList a
+x = ByteString -> [ByteString] -> ByteString
 Bchs.intercalate ByteString
 ";" forall a b. (a -> b) -> a -> b
 $ forall a b. (a -> b) -> [a] -> [b]
@@ -2220,11 +2220,11 @@
 Csv.toField forall a b. (a -> b) -> a -> b
 $ 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 = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
+x
+instance (Csv.FromField a) => Csv.FromField (JannoList a) where
+    parseField :: ByteString -> Parser (JannoList a)
+parseField ByteString
+x = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 fmap forall a. [a] -> JannoList a
 JannoList forall b c a. (b -> c) -> (a -> b) -> a -> c
 . forall (t :: * -> *) (m :: * -> *) a b.
@@ -2236,47 +2236,47 @@
 Bchs.splitWith (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) = forall a. ToJSON a => a -> Encoding
+x
+instance (ToJSON a) => ToJSON (JannoList a) where
+    toEncoding :: JannoList a -> Encoding
+toEncoding (JannoList [a]
+x) = forall a. ToJSON a => a -> Encoding
 toEncoding [a]
-x
-instance (FromJSON a) => FromJSON (JannoList a) where
-    parseJSON :: Value -> Parser (JannoList a)
-parseJSON Value
-x
+x
+instance (FromJSON a) => FromJSON (JannoList a) where
+    parseJSON :: Value -> Parser (JannoList a)
+parseJSON Value
+x
         | Value -> Bool
-isAesonString Value
-x = forall a. [a] -> JannoList a
+isAesonString Value
+x = forall a. [a] -> JannoList a
 JannoList forall b c a. (b -> c) -> (a -> b) -> a -> c
 . forall {a}. a -> [a]
-singleton forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
+singleton forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> forall a. FromJSON a => Value -> Parser a
 parseJSON Value
-x
+x
         | Bool
 otherwise = forall a. [a] -> JannoList a
 JannoList forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> forall a. FromJSON a => Value -> Parser a
 parseJSON Value
-x
+x
         where
-            isAesonString :: Value -> Bool
-isAesonString (String Text
+            isAesonString :: Value -> Bool
+isAesonString (String Text
 _) = Bool
 True
-            isAesonString Value
+            isAesonString Value
 _          = Bool
 False
-            singleton :: a -> [a]
-singleton a
-a = [a
-a]
+            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
+newtype CsvNamedRecord = CsvNamedRecord Csv.NamedRecord deriving (Int -> CsvNamedRecord -> ShowS
 [CsvNamedRecord] -> ShowS
 CsvNamedRecord -> String
 forall a.
@@ -2287,7 +2287,7 @@
 $cshow :: CsvNamedRecord -> String
 showsPrec :: Int -> CsvNamedRecord -> ShowS
 $cshowsPrec :: Int -> CsvNamedRecord -> ShowS
-Show, CsvNamedRecord -> CsvNamedRecord -> Bool
+Show, CsvNamedRecord -> CsvNamedRecord -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: CsvNamedRecord -> CsvNamedRecord -> Bool
 $c/= :: CsvNamedRecord -> CsvNamedRecord -> Bool
@@ -2303,38 +2303,38 @@
 
 getCsvNR :: CsvNamedRecord -> Csv.NamedRecord
 getCsvNR :: CsvNamedRecord -> NamedRecord
-getCsvNR (CsvNamedRecord NamedRecord
-x) = NamedRecord
-x
+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 = forall k v. HashMap k v -> [(k, v)]
+instance ToJSON CsvNamedRecord where
+    toJSON :: CsvNamedRecord -> Value
+toJSON (CsvNamedRecord NamedRecord
+x) =
+        let listOfBSTuples :: [(ByteString, ByteString)]
+listOfBSTuples = forall k v. HashMap k v -> [(k, v)]
 HM.toList NamedRecord
-x
-            listOfTextTuples :: [(Text, Text)]
-listOfTextTuples = forall a b. (a -> b) -> [a] -> [b]
-map (\(ByteString
-a,ByteString
-b) -> (ByteString -> Text
+x
+            listOfTextTuples :: [(Text, Text)]
+listOfTextTuples = forall a b. (a -> b) -> [a] -> [b]
+map (\(ByteString
+a,ByteString
+b) -> (ByteString -> Text
 T.decodeUtf8 ByteString
-a, ByteString -> Text
+a, ByteString -> Text
 T.decodeUtf8 ByteString
-b)) [(ByteString, ByteString)]
-listOfBSTuples
+b)) [(ByteString, ByteString)]
+listOfBSTuples
         in forall a. ToJSON a => a -> Value
 toJSON [(Text, Text)]
-listOfTextTuples
-instance FromJSON CsvNamedRecord where
-    parseJSON :: Value -> Parser CsvNamedRecord
-parseJSON Value
-x
+listOfTextTuples
+instance FromJSON CsvNamedRecord where
+    parseJSON :: Value -> Parser CsvNamedRecord
+parseJSON Value
+x
         | Value
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == Value
 emptyObject = forall (f :: * -> *) a. Applicative f => a -> f a
 pure forall a b. (a -> b) -> a -> b
@@ -2344,31 +2344,31 @@
 HM.fromList []
         | Bool
 otherwise = do
-            [(Text, Text)]
-listOfTextTuples <- forall a. FromJSON a => Value -> Parser a
+            [(Text, Text)]
+listOfTextTuples <- forall a. FromJSON a => Value -> Parser a
 parseJSON Value
-x -- :: [(T.Text, T.Text)]
-            let listOfBSTuples :: [(ByteString, ByteString)]
-listOfBSTuples = forall a b. (a -> b) -> [a] -> [b]
-map (\(Text
-a,Text
-b) -> (Text -> ByteString
+x -- :: [(T.Text, T.Text)]
+            let listOfBSTuples :: [(ByteString, ByteString)]
+listOfBSTuples = forall a b. (a -> b) -> [a] -> [b]
+map (\(Text
+a,Text
+b) -> (Text -> ByteString
 T.encodeUtf8 Text
-a, Text -> ByteString
+a, Text -> ByteString
 T.encodeUtf8 Text
-b)) [(Text, Text)]
-listOfTextTuples
+b)) [(Text, Text)]
+listOfTextTuples
             forall (f :: * -> *) a. Applicative f => a -> f a
 pure forall a b. (a -> b) -> a -> b
 $ NamedRecord -> CsvNamedRecord
 CsvNamedRecord forall a b. (a -> b) -> a -> b
 $ forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
 HM.fromList [(ByteString, ByteString)]
-listOfBSTuples
+listOfBSTuples
 
 -- | A  data type to represent a janno file
-newtype JannoRows = JannoRows [JannoRow]
-    deriving (Int -> JannoRows -> ShowS
+newtype JannoRows = JannoRows [JannoRow]
+    deriving (Int -> JannoRows -> ShowS
 [JannoRows] -> ShowS
 JannoRows -> String
 forall a.
@@ -2379,7 +2379,7 @@
 $cshow :: JannoRows -> String
 showsPrec :: Int -> JannoRows -> ShowS
 $cshowsPrec :: Int -> JannoRows -> ShowS
-Show, JannoRows -> JannoRows -> Bool
+Show, JannoRows -> JannoRows -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: JannoRows -> JannoRows -> Bool
 $c/= :: JannoRows -> JannoRows -> Bool
@@ -2393,85 +2393,85 @@
 $cfrom :: forall x. JannoRows -> Rep JannoRows x
 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 forall a b. (a -> b) -> a -> b
 $ [JannoRow]
-j1 [JannoRow] -> [JannoRow] -> [JannoRow]
-`combineTwoJannos` [JannoRow]
-j2
+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 forall a. [a] -> [a] -> [a]
+        combineTwoJannos :: [JannoRow] -> [JannoRow] -> [JannoRow]
+        combineTwoJannos :: [JannoRow] -> [JannoRow] -> [JannoRow]
+combineTwoJannos [JannoRow]
+janno1 [JannoRow]
+janno2 =
+            let simpleJannoSum :: [JannoRow]
+simpleJannoSum = [JannoRow]
+janno1 forall a. [a] -> [a] -> [a]
 ++ [JannoRow]
-janno2
-                toAddColNames :: [ByteString]
-toAddColNames = forall k v. HashMap k v -> [k]
+janno2
+                toAddColNames :: [ByteString]
+toAddColNames = forall k v. HashMap k v -> [k]
 HM.keys (forall k v. (Eq k, Hashable k) => [HashMap k v] -> HashMap k v
 HM.unions (forall a b. (a -> b) -> [a] -> [b]
 map (CsvNamedRecord -> NamedRecord
 getCsvNR forall b c a. (b -> c) -> (a -> b) -> a -> c
 . JannoRow -> CsvNamedRecord
 jAdditionalColumns) [JannoRow]
-simpleJannoSum))
-                toAddEmptyCols :: NamedRecord
-toAddEmptyCols = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
+simpleJannoSum))
+                toAddEmptyCols :: NamedRecord
+toAddEmptyCols = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
 HM.fromList (forall a b. (a -> b) -> [a] -> [b]
-map (\ByteString
-k -> (ByteString
-k, ByteString
+map (\ByteString
+k -> (ByteString
+k, ByteString
 "n/a")) [ByteString]
-toAddColNames)
+toAddColNames)
             in 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 =
+addEmptyAddColsToJannoRow NamedRecord
+toAddEmptyCols) [JannoRow]
+simpleJannoSum
+        addEmptyAddColsToJannoRow :: Csv.NamedRecord -> JannoRow -> JannoRow
+        addEmptyAddColsToJannoRow :: NamedRecord -> JannoRow -> JannoRow
+addEmptyAddColsToJannoRow NamedRecord
+toAdd JannoRow
+x =
             JannoRow
-x { jAdditionalColumns :: CsvNamedRecord
+x { jAdditionalColumns :: CsvNamedRecord
 jAdditionalColumns = NamedRecord -> CsvNamedRecord
 CsvNamedRecord forall a b. (a -> b) -> a -> b
 $ NamedRecord -> NamedRecord -> NamedRecord
-fillAddCols NamedRecord
-toAdd (CsvNamedRecord -> NamedRecord
+fillAddCols NamedRecord
+toAdd (CsvNamedRecord -> NamedRecord
 getCsvNR 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 = forall k v.
+x) }
+        fillAddCols :: Csv.NamedRecord -> Csv.NamedRecord -> Csv.NamedRecord
+        fillAddCols :: NamedRecord -> NamedRecord -> NamedRecord
+fillAddCols NamedRecord
+toAdd NamedRecord
+cur = forall k v.
 (Eq k, Hashable k) =>
 HashMap k v -> HashMap k v -> HashMap k v
 HM.union NamedRecord
-cur (NamedRecord
-toAdd forall k v w.
+cur (NamedRecord
+toAdd forall k v w.
 (Eq k, Hashable k) =>
 HashMap k v -> HashMap k w -> HashMap k v
 `HM.difference` NamedRecord
-cur)
+cur)
 
-instance Monoid JannoRows where
-    mempty :: JannoRows
+instance Monoid JannoRows where
+    mempty :: JannoRows
 mempty = [JannoRow] -> JannoRows
 JannoRows []
-    mconcat :: [JannoRows] -> JannoRows
+    mconcat :: [JannoRows] -> JannoRows
 mconcat = forall (t :: * -> *) b a.
 Foldable t =>
 (b -> a -> b) -> b -> t a -> b
@@ -2479,19 +2479,19 @@
 mappend forall a. Monoid a => a
 mempty
 
-instance ToJSON JannoRows where
-    toEncoding :: JannoRows -> Encoding
-toEncoding = forall a.
+instance ToJSON JannoRows where
+    toEncoding :: JannoRows -> Encoding
+toEncoding = forall a.
 (Generic a, GToJSON' Encoding Zero (Rep a)) =>
 Options -> a -> Encoding
 genericToEncoding Options
 defaultOptions
-instance FromJSON JannoRows
+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
+data JannoRow = JannoRow
     { JannoRow -> String
 jPoseidonID                 :: String
     , JannoRow -> JannoSex
@@ -2587,7 +2587,7 @@
     , JannoRow -> CsvNamedRecord
 jAdditionalColumns          :: CsvNamedRecord
     }
-    deriving (Int -> JannoRow -> ShowS
+    deriving (Int -> JannoRow -> ShowS
 [JannoRow] -> ShowS
 JannoRow -> String
 forall a.
@@ -2598,7 +2598,7 @@
 $cshow :: JannoRow -> String
 showsPrec :: Int -> JannoRow -> ShowS
 $cshowsPrec :: Int -> JannoRow -> ShowS
-Show, JannoRow -> JannoRow -> Bool
+Show, JannoRow -> JannoRow -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: JannoRow -> JannoRow -> Bool
 $c/= :: JannoRow -> JannoRow -> Bool
@@ -2711,7 +2711,7 @@
     ]
 
 instance Csv.DefaultOrdered JannoRow where
-    headerOrder :: JannoRow -> Header
+    headerOrder :: JannoRow -> Header
 headerOrder JannoRow
 _ = [ByteString] -> Header
 Csv.header [ByteString]
@@ -2730,27 +2730,27 @@
 jannoRefHashMap = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
 HM.fromList forall a b. (a -> b) -> a -> b
 $ 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 = forall a.
+instance ToJSON JannoRow where
+    toEncoding :: JannoRow -> Encoding
+toEncoding = forall a.
 (Generic a, GToJSON' Encoding Zero (Rep a)) =>
 Options -> a -> Encoding
 genericToEncoding (Options
 defaultOptions {omitNothingFields :: Bool
-omitNothingFields = Bool
+omitNothingFields = Bool
 True})
 
-instance FromJSON JannoRow
+instance FromJSON JannoRow
 
 instance Csv.FromNamedRecord JannoRow where
-    parseNamedRecord :: NamedRecord -> Parser JannoRow
-parseNamedRecord NamedRecord
-m = String
+    parseNamedRecord :: NamedRecord -> Parser JannoRow
+parseNamedRecord NamedRecord
+m = String
 -> JannoSex
 -> JannoStringList
 -> Maybe JannoStringList
@@ -2802,318 +2802,318 @@
         forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> forall a. FromField a => NamedRecord -> ByteString -> Parser a
 filterLookup         NamedRecord
-m ByteString
+m ByteString
 "Poseidon_ID"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a. FromField a => NamedRecord -> ByteString -> Parser a
 filterLookup         NamedRecord
-m ByteString
+m ByteString
 "Genetic_Sex"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a. FromField a => NamedRecord -> ByteString -> Parser a
 filterLookup         NamedRecord
-m ByteString
+m ByteString
 "Group_Name"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Alternative_IDs"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Relation_To"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Relation_Degree"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Relation_Type"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Relation_Note"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Collection_ID"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Country"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Country_ISO"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Location"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Site"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Latitude"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Longitude"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_Type"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_C14_Labnr"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_C14_Uncal_BP"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_C14_Uncal_BP_Err"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_BC_AD_Start"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_BC_AD_Median"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_BC_AD_Stop"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Date_Note"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "MT_Haplogroup"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Y_Haplogroup"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Source_Tissue"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Nr_Libraries"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Library_Names"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Capture_Type"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "UDG"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Library_Built"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Genotype_Ploidy"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Data_Preparation_Pipeline_URL"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Endogenous"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Nr_SNPs"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Coverage_on_Target_SNPs"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Damage"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Contamination"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Contamination_Err"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Contamination_Meas"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Contamination_Note"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Genetic_Source_Accession_IDs"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Primary_Contact"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Publication"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 NamedRecord -> ByteString -> Parser (Maybe a)
 filterLookupOptional NamedRecord
-m ByteString
+m ByteString
 "Note"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> 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
@@ -3121,17 +3121,17 @@
 <*> forall (f :: * -> *) a. Applicative f => a -> f a
 pure (NamedRecord -> CsvNamedRecord
 CsvNamedRecord (NamedRecord
-m forall k v w.
+m 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 :: Csv.FromField a => Csv.NamedRecord -> Bchs.ByteString -> Csv.Parser a
 filterLookup :: forall a. FromField a => NamedRecord -> ByteString -> Parser a
-filterLookup NamedRecord
-m ByteString
-name = forall b a. b -> (a -> b) -> Maybe a -> b
+filterLookup NamedRecord
+m ByteString
+name = forall b a. b -> (a -> b) -> Maybe a -> b
 maybe forall (f :: * -> *) a. Alternative f => f a
 empty forall a. FromField a => ByteString -> Parser a
 Csv.parseField forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -3139,16 +3139,16 @@
 cleanInput forall a b. (a -> b) -> a -> b
 $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v
 HM.lookup ByteString
-name NamedRecord
-m
+name NamedRecord
+m
 
-filterLookupOptional :: Csv.FromField a => Csv.NamedRecord -> Bchs.ByteString -> Csv.Parser (Maybe a)
+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 = forall b a. b -> (a -> b) -> Maybe a -> b
+filterLookupOptional NamedRecord
+m ByteString
+name = forall b a. b -> (a -> b) -> Maybe a -> b
 maybe (forall (f :: * -> *) a. Applicative f => a -> f a
 pure forall a. Maybe a
 Nothing) forall a. FromField a => ByteString -> Parser a
@@ -3157,58 +3157,58 @@
 cleanInput forall a b. (a -> b) -> a -> b
 $ forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v
 HM.lookup ByteString
-name NamedRecord
-m
+name NamedRecord
+m
 
 cleanInput :: Maybe Bchs.ByteString -> Maybe Bchs.ByteString
 cleanInput :: Maybe ByteString -> Maybe ByteString
 cleanInput Maybe ByteString
 Nothing           = forall a. Maybe a
 Nothing
-cleanInput (Just ByteString
-rawInputBS) = ByteString -> Maybe ByteString
-transNA forall a b. (a -> b) -> a -> b
+cleanInput (Just ByteString
+rawInputBS) = ByteString -> Maybe ByteString
+transNA forall a b. (a -> b) -> a -> b
 $ ByteString -> ByteString
-trimWS forall b c a. (b -> c) -> (a -> b) -> a -> c
+trimWS forall b c a. (b -> c) -> (a -> b) -> a -> c
 . ByteString -> ByteString
-removeNoBreakSpace forall a b. (a -> b) -> a -> b
+removeNoBreakSpace forall a b. (a -> b) -> a -> b
 $ ByteString
-rawInputBS
+rawInputBS
     where
-        trimWS :: Bchs.ByteString -> Bchs.ByteString
-        trimWS :: ByteString -> ByteString
-trimWS = (Char -> Bool) -> ByteString -> ByteString
+        trimWS :: Bchs.ByteString -> Bchs.ByteString
+        trimWS :: ByteString -> ByteString
+trimWS = (Char -> Bool) -> ByteString -> ByteString
 Bchs.dropWhile Char -> Bool
 isSpace forall b c a. (b -> c) -> (a -> b) -> a -> c
 . (Char -> Bool) -> ByteString -> ByteString
 Bchs.dropWhileEnd Char -> Bool
 isSpace
-        removeNoBreakSpace :: Bchs.ByteString -> Bchs.ByteString
-        removeNoBreakSpace :: ByteString -> ByteString
-removeNoBreakSpace ByteString
-x
+        removeNoBreakSpace :: Bchs.ByteString -> Bchs.ByteString
+        removeNoBreakSpace :: ByteString -> ByteString
+removeNoBreakSpace ByteString
+x
             | Bool -> Bool
 not forall a b. (a -> b) -> a -> b
 $ ByteString -> ByteString -> Bool
 Bchs.isInfixOf ByteString
 "\194\160" ByteString
-x = ByteString
-x
+x = ByteString
+x
             | Bool
 otherwise = ByteString -> ByteString
-removeNoBreakSpace forall a b. (a -> b) -> a -> b
-$ (\(ByteString
-a,ByteString
-b) -> ByteString
-a forall a. Semigroup a => a -> a -> a
+removeNoBreakSpace forall a b. (a -> b) -> a -> b
+$ (\(ByteString
+a,ByteString
+b) -> ByteString
+a forall a. Semigroup a => a -> a -> a
 <> Int -> ByteString -> ByteString
 Bchs.drop Int
 2 ByteString
-b) forall a b. (a -> b) -> a -> b
+b) forall a b. (a -> b) -> a -> b
 $ ByteString -> ByteString -> (ByteString, ByteString)
 Bchs.breakSubstring ByteString
 "\194\160" ByteString
-x
+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
@@ -3226,254 +3226,254 @@
             --    b = ...
             --    !c = unsafePerformIO $ putStrLn $ show b
             --in b
-        transNA :: Bchs.ByteString -> Maybe Bchs.ByteString
-        transNA :: ByteString -> Maybe ByteString
-transNA ByteString
+        transNA :: Bchs.ByteString -> Maybe Bchs.ByteString
+        transNA :: ByteString -> Maybe ByteString
+transNA ByteString
 ""    = forall a. Maybe a
 Nothing
-        transNA ByteString
+        transNA ByteString
 "n/a" = forall a. Maybe a
 Nothing
-        transNA ByteString
-x     = forall a. a -> Maybe a
+        transNA ByteString
+x     = forall a. a -> Maybe a
 Just ByteString
-x
+x
 
 instance Csv.ToNamedRecord JannoRow where
-    toNamedRecord :: JannoRow -> NamedRecord
-toNamedRecord JannoRow
-j = [(ByteString, ByteString)] -> NamedRecord
+    toNamedRecord :: JannoRow -> NamedRecord
+toNamedRecord JannoRow
+j = [(ByteString, ByteString)] -> NamedRecord
 Csv.namedRecord [
           ByteString
 "Poseidon_ID"                     forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> String
 jPoseidonID JannoRow
-j
+j
         , ByteString
 "Genetic_Sex"                     forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> JannoSex
 jGeneticSex JannoRow
-j
+j
         , ByteString
 "Group_Name"                      forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> JannoStringList
 jGroupName JannoRow
-j
+j
         , ByteString
 "Alternative_IDs"                 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoStringList
 jAlternativeIDs JannoRow
-j
+j
         , ByteString
 "Relation_To"                     forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoStringList
 jRelationTo JannoRow
-j
+j
         , ByteString
 "Relation_Degree"                 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoRelationDegreeList
 jRelationDegree JannoRow
-j
+j
         , ByteString
 "Relation_Type"                   forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoStringList
 jRelationType JannoRow
-j
+j
         , ByteString
 "Relation_Note"                   forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe String
 jRelationNote JannoRow
-j
+j
         , ByteString
 "Collection_ID"                   forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe String
 jCollectionID JannoRow
-j
+j
         , ByteString
 "Country"                         forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe String
 jCountry JannoRow
-j
+j
         , ByteString
 "Country_ISO"                     forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoCountry
 jCountryISO JannoRow
-j
+j
         , ByteString
 "Location"                        forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe String
 jLocation JannoRow
-j
+j
         , ByteString
 "Site"                            forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe String
 jSite JannoRow
-j
+j
         , ByteString
 "Latitude"                        forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe Latitude
 jLatitude JannoRow
-j
+j
         , ByteString
 "Longitude"                       forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe Longitude
 jLongitude JannoRow
-j
+j
         , ByteString
 "Date_Type"                       forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoDateType
 jDateType JannoRow
-j
+j
         , ByteString
 "Date_C14_Labnr"                  forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoStringList
 jDateC14Labnr JannoRow
-j
+j
         , ByteString
 "Date_C14_Uncal_BP"               forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoIntList
 jDateC14UncalBP JannoRow
-j
+j
         , ByteString
 "Date_C14_Uncal_BP_Err"           forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoIntList
 jDateC14UncalBPErr JannoRow
-j
+j
         , ByteString
 "Date_BC_AD_Start"                forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe BCADAge
 jDateBCADStart JannoRow
-j
+j
         , ByteString
 "Date_BC_AD_Median"               forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe BCADAge
 jDateBCADMedian JannoRow
-j
+j
         , ByteString
 "Date_BC_AD_Stop"                 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe BCADAge
 jDateBCADStop JannoRow
-j
+j
         , ByteString
 "Date_Note"                       forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe String
 jDateNote JannoRow
-j
+j
         , ByteString
 "MT_Haplogroup"                   forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe String
 jMTHaplogroup JannoRow
-j
+j
         , ByteString
 "Y_Haplogroup"                    forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe String
 jYHaplogroup JannoRow
-j
+j
         , ByteString
 "Source_Tissue"                   forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoStringList
 jSourceTissue JannoRow
-j
+j
         , ByteString
 "Nr_Libraries"                    forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe Int
 jNrLibraries JannoRow
-j
+j
         , ByteString
 "Library_Names"                   forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoStringList
 jLibraryNames JannoRow
-j
+j
         , ByteString
 "Capture_Type"                    forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe (JannoList JannoCaptureType)
 jCaptureType JannoRow
-j
+j
         , ByteString
 "UDG"                             forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoUDG
 jUDG JannoRow
-j
+j
         , ByteString
 "Library_Built"                   forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoLibraryBuilt
 jLibraryBuilt JannoRow
-j
+j
         , ByteString
 "Genotype_Ploidy"                 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoGenotypePloidy
 jGenotypePloidy JannoRow
-j
+j
         , ByteString
 "Data_Preparation_Pipeline_URL"   forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JURI
 jDataPreparationPipelineURL JannoRow
-j
+j
         , ByteString
 "Endogenous"                      forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe Percent
 jEndogenous JannoRow
-j
+j
         , ByteString
 "Nr_SNPs"                         forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe Int
 jNrSNPs JannoRow
-j
+j
         , ByteString
 "Coverage_on_Target_SNPs"         forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe Double
 jCoverageOnTargets JannoRow
-j
+j
         , ByteString
 "Damage"                          forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe Percent
 jDamage JannoRow
-j
+j
         , ByteString
 "Contamination"                   forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoStringList
 jContamination JannoRow
-j
+j
         , ByteString
 "Contamination_Err"               forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoStringList
 jContaminationErr JannoRow
-j
+j
         , ByteString
 "Contamination_Meas"              forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoStringList
 jContaminationMeas JannoRow
-j
+j
         , ByteString
 "Contamination_Note"              forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe String
 jContaminationNote JannoRow
-j
+j
         , ByteString
 "Genetic_Source_Accession_IDs"    forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe (JannoList AccessionID)
 jGeneticSourceAccessionIDs JannoRow
-j
+j
         , ByteString
 "Primary_Contact"                 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe String
 jPrimaryContact JannoRow
-j
+j
         , ByteString
 "Publication"                     forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoStringList
 jPublication JannoRow
-j
+j
         , ByteString
 "Note"                            forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe String
 jComments JannoRow
-j
+j
         , ByteString
 "Keywords"                        forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= JannoRow -> Maybe JannoStringList
 jKeywords JannoRow
-j
+j
         -- beyond that add what is in the hashmap of additional columns
         ] forall k v.
 (Eq k, Hashable k) =>
@@ -3482,40 +3482,40 @@
 getCsvNR forall a b. (a -> b) -> a -> b
 $ JannoRow -> CsvNamedRecord
 jAdditionalColumns JannoRow
-j)
+j)
 
 -- | A function to create empty janno rows for a set of individuals
 createMinimalJanno :: [EigenstratIndEntry] -> JannoRows
 createMinimalJanno :: [EigenstratIndEntry] -> JannoRows
 createMinimalJanno [] = forall a. Monoid a => a
 mempty
-createMinimalJanno [EigenstratIndEntry]
-xs = [JannoRow] -> JannoRows
+createMinimalJanno [EigenstratIndEntry]
+xs = [JannoRow] -> JannoRows
 JannoRows forall a b. (a -> b) -> a -> b
 $ forall a b. (a -> b) -> [a] -> [b]
 map EigenstratIndEntry -> JannoRow
 createMinimalSample [EigenstratIndEntry]
-xs
+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) =
+createMinimalSample (EigenstratIndEntry String
+id_ Sex
+sex String
+pop) =
     JannoRow {
           jPoseidonID :: String
 jPoseidonID                   = String
-id_
+id_
         , jGeneticSex :: JannoSex
 jGeneticSex                   = Sex -> JannoSex
 JannoSex Sex
-sex
+sex
         , jGroupName :: JannoStringList
 jGroupName                    = forall a. [a] -> JannoList a
 JannoList [String
-pop]
+pop]
         , jAlternativeIDs :: Maybe JannoStringList
 jAlternativeIDs               = forall a. Maybe a
 Nothing
@@ -3657,29 +3657,29 @@
 
 writeJannoFile :: FilePath -> JannoRows -> IO ()
 writeJannoFile :: String -> JannoRows -> IO ()
-writeJannoFile String
-path (JannoRows [JannoRow]
-rows) = do
-    let jannoAsBytestring :: ByteString
-jannoAsBytestring = forall a.
+writeJannoFile String
+path (JannoRows [JannoRow]
+rows) = do
+    let jannoAsBytestring :: ByteString
+jannoAsBytestring = 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
+jannoAsBytestring
     String -> ByteString -> IO ()
 Bch.writeFile String
-path ByteString
-jannoAsBytestringwithNA
+path ByteString
+jannoAsBytestringwithNA
     where
-        makeHeaderWithAdditionalColumns :: Csv.Header
-        makeHeaderWithAdditionalColumns :: Header
-makeHeaderWithAdditionalColumns =
+        makeHeaderWithAdditionalColumns :: Csv.Header
+        makeHeaderWithAdditionalColumns :: Header
+makeHeaderWithAdditionalColumns =
             forall a. [a] -> Vector a
 V.fromList forall a b. (a -> b) -> a -> b
 $ [ByteString]
@@ -3692,7 +3692,7 @@
 getCsvNR forall b c a. (b -> c) -> (a -> b) -> a -> c
 . JannoRow -> CsvNamedRecord
 jAdditionalColumns) [JannoRow]
-rows)))
+rows)))
 
 encodingOptions :: Csv.EncodeOptions
 encodingOptions :: EncodeOptions
@@ -3717,28 +3717,28 @@
 -- | A function to load one janno file
 readJannoFile :: FilePath -> PoseidonIO JannoRows
 readJannoFile :: String -> PoseidonIO JannoRows
-readJannoFile String
-jannoPath = do
+readJannoFile String
+jannoPath = do
     String -> PoseidonIO ()
 logDebug forall a b. (a -> b) -> a -> b
 $ String
 "Reading: " forall a. [a] -> [a] -> [a]
 ++ String
-jannoPath
-    ByteString
-jannoFile <- forall (m :: * -> *) a. MonadIO m => IO a -> m a
+jannoPath
+    ByteString
+jannoFile <- forall (m :: * -> *) a. MonadIO m => IO a -> m a
 liftIO 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
+jannoFile
     forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
 when (forall (t :: * -> *) a. Foldable t => t a -> Int
 length [ByteString]
-jannoFileRows forall a. Ord a => a -> a -> Bool
+jannoFileRows forall a. Ord a => a -> a -> Bool
 < Int
 2) forall a b. (a -> b) -> a -> b
 $ forall (m :: * -> *) a. MonadIO m => IO a -> m a
@@ -3747,89 +3747,89 @@
 throwIO forall a b. (a -> b) -> a -> b
 $ String -> String -> PoseidonException
 PoseidonFileConsistencyException String
-jannoPath String
+jannoPath String
 "File has less than two lines"
     String -> PoseidonIO ()
 logDebug forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show (forall (t :: * -> *) a. Foldable t => t a -> Int
 length [ByteString]
-jannoFileRows forall a. Num a => a -> a -> a
+jannoFileRows forall a. Num a => a -> a -> a
 - Int
 1) forall a. [a] -> [a] -> [a]
 ++ String
 " samples in this file"
     -- tupel with row number and row bytestring
-    let jannoFileRowsWithNumber :: [(Int, ByteString)]
-jannoFileRowsWithNumber = forall a b. [a] -> [b] -> [(a, b)]
+    let jannoFileRowsWithNumber :: [(Int, ByteString)]
+jannoFileRowsWithNumber = forall a b. [a] -> [b] -> [(a, b)]
 zip [Int
 1..(forall (t :: * -> *) a. Foldable t => t a -> Int
 length [ByteString]
-jannoFileRows)] [ByteString]
-jannoFileRows
+jannoFileRows)] [ByteString]
+jannoFileRows
     -- filter out empty lines
-        jannoFileRowsWithNumberFiltered :: [(Int, ByteString)]
-jannoFileRowsWithNumberFiltered = forall a. (a -> Bool) -> [a] -> [a]
+        jannoFileRowsWithNumberFiltered :: [(Int, ByteString)]
+jannoFileRowsWithNumberFiltered = forall a. (a -> Bool) -> [a] -> [a]
 filter (\(Int
-_, ByteString
-y) -> ByteString
-y forall a. Eq a => a -> a -> Bool
+_, ByteString
+y) -> ByteString
+y forall a. Eq a => a -> a -> Bool
 /= ByteString
 Bch.empty) [(Int, ByteString)]
-jannoFileRowsWithNumber
+jannoFileRowsWithNumber
     -- create header + individual line combination
-        headerOnlyPotentiallyWithQuotes :: ByteString
-headerOnlyPotentiallyWithQuotes = forall a b. (a, b) -> b
+        headerOnlyPotentiallyWithQuotes :: ByteString
+headerOnlyPotentiallyWithQuotes = forall a b. (a, b) -> b
 snd forall a b. (a -> b) -> a -> b
 $ forall a. [a] -> a
 head [(Int, ByteString)]
-jannoFileRowsWithNumberFiltered
+jannoFileRowsWithNumberFiltered
         -- removing the quotes like this might cause issues in edge cases
-        headerOnly :: ByteString
-headerOnly = (Char -> Bool) -> ByteString -> ByteString
+        headerOnly :: ByteString
+headerOnly = (Char -> Bool) -> ByteString -> ByteString
 Bch.filter (forall a. Eq a => a -> a -> Bool
 /= Char
 '"') ByteString
-headerOnlyPotentiallyWithQuotes
-        rowsOnly :: [(Int, ByteString)]
-rowsOnly = forall a. [a] -> [a]
+headerOnlyPotentiallyWithQuotes
+        rowsOnly :: [(Int, ByteString)]
+rowsOnly = forall a. [a] -> [a]
 tail [(Int, ByteString)]
-jannoFileRowsWithNumberFiltered
-        jannoFileRowsWithHeader :: [(Int, ByteString)]
-jannoFileRowsWithHeader = forall a b. (a -> b) -> [a] -> [b]
+jannoFileRowsWithNumberFiltered
+        jannoFileRowsWithHeader :: [(Int, ByteString)]
+jannoFileRowsWithHeader = forall a b. (a -> b) -> [a] -> [b]
 map (forall (p :: * -> * -> *) b c a.
 Bifunctor p =>
 (b -> c) -> p a b -> p a c
-second (\ByteString
-x -> ByteString
-headerOnly forall a. Semigroup a => a -> a -> a
+second (\ByteString
+x -> ByteString
+headerOnly forall a. Semigroup a => a -> a -> a
 <> ByteString
 "\n" forall a. Semigroup a => a -> a -> a
 <> ByteString
-x)) [(Int, ByteString)]
-rowsOnly
+x)) [(Int, ByteString)]
+rowsOnly
     -- report missing or additional columns
-    let jannoColNames :: [ByteString]
-jannoColNames = forall a b. (a -> b) -> [a] -> [b]
+    let jannoColNames :: [ByteString]
+jannoColNames = forall a b. (a -> b) -> [a] -> [b]
 map ByteString -> ByteString
 Bch.toStrict (Char -> ByteString -> [ByteString]
 Bch.split Char
 '\t' ByteString
-headerOnly)
-        missing_columns :: [String]
-missing_columns = forall a b. (a -> b) -> [a] -> [b]
+headerOnly)
+        missing_columns :: [String]
+missing_columns = forall a b. (a -> b) -> [a] -> [b]
 map ByteString -> String
 Bchs.unpack forall a b. (a -> b) -> a -> b
 $ [ByteString]
 jannoHeader forall a. Eq a => [a] -> [a] -> [a]
 \\ [ByteString]
-jannoColNames
-        additional_columns :: [String]
-additional_columns = forall a b. (a -> b) -> [a] -> [b]
+jannoColNames
+        additional_columns :: [String]
+additional_columns = forall a b. (a -> b) -> [a] -> [b]
 map ByteString -> String
 Bchs.unpack forall a b. (a -> b) -> a -> b
 $ [ByteString]
-jannoColNames forall a. Eq a => [a] -> [a] -> [a]
+jannoColNames forall a. Eq a => [a] -> [a] -> [a]
 \\ [ByteString]
 jannoHeader
     --unless (null missing_columns) $ do
@@ -3837,7 +3837,7 @@
     forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
 unless (forall (t :: * -> *) a. Foldable t => t a -> Bool
 null [String]
-additional_columns) forall a b. (a -> b) -> a -> b
+additional_columns) forall a b. (a -> b) -> a -> b
 $ do
         String -> PoseidonIO ()
 logDebug (String
@@ -3847,38 +3847,38 @@
             forall a. [a] -> [[a]] -> [a]
 intercalate String
 ", " (forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
-zipWith (\String
-x String
-y -> String
-x forall a. [a] -> [a] -> [a]
+zipWith (\String
+x String
+y -> String
+x forall a. [a] -> [a] -> [a]
 ++ String
 " (" forall a. [a] -> [a] -> [a]
 ++ String
-y forall a. [a] -> [a] -> [a]
+y forall a. [a] -> [a] -> [a]
 ++ String
 "?)")
             [String]
-additional_columns ([String] -> [String] -> [String]
+additional_columns ([String] -> [String] -> [String]
 findSimilarNames [String]
-missing_columns [String]
-additional_columns)))
+missing_columns [String]
+additional_columns)))
     -- load janno by rows
-    [Either PoseidonException JannoRow]
-jannoRepresentation <- forall (t :: * -> *) (m :: * -> *) a b.
+    [Either PoseidonException JannoRow]
+jannoRepresentation <- forall (t :: * -> *) (m :: * -> *) a b.
 (Traversable t, Monad m) =>
 (a -> m b) -> t a -> m (t b)
 mapM (String
 -> (Int, ByteString)
 -> PoseidonIO (Either PoseidonException JannoRow)
 readJannoFileRow String
-jannoPath) [(Int, ByteString)]
-jannoFileRowsWithHeader
+jannoPath) [(Int, ByteString)]
+jannoFileRowsWithHeader
     -- error case management
     if Bool -> Bool
 not (forall (t :: * -> *) a. Foldable t => t a -> Bool
 null (forall a b. [Either a b] -> [a]
 lefts [Either PoseidonException JannoRow]
-jannoRepresentation))
+jannoRepresentation))
     then do
         forall (t :: * -> *) (m :: * -> *) a b.
 (Foldable t, Monad m) =>
@@ -3892,127 +3892,127 @@
 5 forall a b. (a -> b) -> a -> b
 $ forall a b. [Either a b] -> [a]
 lefts [Either PoseidonException JannoRow]
-jannoRepresentation
+jannoRepresentation
         forall (m :: * -> *) a. MonadIO m => IO a -> m a
 liftIO forall a b. (a -> b) -> a -> b
 $ forall e a. Exception e => e -> IO a
 throwIO 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
+        let consistentJanno :: Either PoseidonException JannoRows
+consistentJanno = String -> JannoRows -> Either PoseidonException JannoRows
 checkJannoConsistency String
-jannoPath forall a b. (a -> b) -> a -> b
+jannoPath forall a b. (a -> b) -> a -> b
 $ [JannoRow] -> JannoRows
 JannoRows forall a b. (a -> b) -> a -> b
 $ forall a b. [Either a b] -> [b]
 rights [Either PoseidonException JannoRow]
-jannoRepresentation
+jannoRepresentation
         case Either PoseidonException JannoRows
-consistentJanno of
-            Left PoseidonException
-e -> do forall (m :: * -> *) a. MonadIO m => IO a -> m a
+consistentJanno of
+            Left PoseidonException
+e -> do forall (m :: * -> *) a. MonadIO m => IO a -> m a
 liftIO forall a b. (a -> b) -> a -> b
 $ forall e a. Exception e => e -> IO a
 throwIO PoseidonException
-e
-            Right JannoRows
-x -> do
+e
+            Right JannoRows
+x -> do
                 -- putStrLn ""
                 -- putStrLn $ show $ map jSourceTissue x
                 -- putStrLn $ show $ map jLongitude x
                 -- putStrLn $ show $ map jUDG x
                 forall (m :: * -> *) a. Monad m => a -> m a
 return JannoRows
-x
+x
 
 findSimilarNames :: [String] -> [String] -> [String]
 findSimilarNames :: [String] -> [String] -> [String]
-findSimilarNames [String]
-reference = forall a b. (a -> b) -> [a] -> [b]
+findSimilarNames [String]
+reference = forall a b. (a -> b) -> [a] -> [b]
 map ([String] -> ShowS
-findSimilar [String]
-reference)
+findSimilar [String]
+reference)
     where
-        findSimilar ::  [String] -> String -> String
-        findSimilar :: [String] -> ShowS
-findSimilar [] String
+        findSimilar ::  [String] -> String -> String
+        findSimilar :: [String] -> ShowS
+findSimilar [] String
 _  = []
-        findSimilar [String]
-ref String
-x =
-            let dists :: [Int]
-dists = forall a b. (a -> b) -> [a] -> [b]
-map (\String
-y -> String
-x forall a. Eq a => [a] -> [a] -> Int
+        findSimilar [String]
+ref String
+x =
+            let dists :: [Int]
+dists = forall a b. (a -> b) -> [a] -> [b]
+map (\String
+y -> String
+x forall a. Eq a => [a] -> [a] -> Int
 `editDistance` String
-y) [String]
-ref
+y) [String]
+ref
             in [String]
-ref forall a. [a] -> Int -> a
+ref forall a. [a] -> Int -> a
 !! forall a. HasCallStack => Maybe a -> a
 fromJust (forall a. Eq a => a -> [a] -> Maybe Int
 elemIndex (forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a
 minimum [Int]
-dists) [Int]
-dists)
+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)
 -> PoseidonIO (Either PoseidonException JannoRow)
-readJannoFileRow String
-jannoPath (Int
-lineNumber, ByteString
-row) = do
+readJannoFileRow String
+jannoPath (Int
+lineNumber, ByteString
+row) = do
     case forall a.
 FromNamedRecord a =>
 DecodeOptions -> ByteString -> Either String (Header, Vector a)
 Csv.decodeByNameWith DecodeOptions
 decodingOptions ByteString
-row of
-        Left String
-e -> do
+row of
+        Left String
+e -> do
             forall (m :: * -> *) a. Monad m => a -> m a
 return forall a b. (a -> b) -> a -> b
 $ forall a b. a -> Either a b
 Left forall a b. (a -> b) -> a -> b
 $ String -> Int -> String -> PoseidonException
 PoseidonFileRowException String
-jannoPath Int
-lineNumber forall a b. (a -> b) -> a -> b
+jannoPath Int
+lineNumber forall a b. (a -> b) -> a -> b
 $ ShowS
 removeUselessSuffix String
-e
+e
         Right (Header
-_, Vector JannoRow
-jannoRow :: V.Vector JannoRow) -> do
+_, Vector JannoRow
+jannoRow :: V.Vector JannoRow) -> do
             case String -> Int -> JannoRow -> Either PoseidonException JannoRow
 checkJannoRowConsistency String
-jannoPath Int
-lineNumber forall a b. (a -> b) -> a -> b
+jannoPath Int
+lineNumber forall a b. (a -> b) -> a -> b
 $ forall a. Vector a -> a
 V.head Vector JannoRow
-jannoRow of
-                Left PoseidonException
-e -> do
+jannoRow of
+                Left PoseidonException
+e -> do
                     forall (m :: * -> *) a. Monad m => a -> m a
 return forall a b. (a -> b) -> a -> b
 $ forall a b. a -> Either a b
 Left PoseidonException
-e
-                Right (JannoRow
-pS :: JannoRow) -> do
+e
+                Right (JannoRow
+pS :: JannoRow) -> do
                     forall (m :: * -> *) a. Monad m => a -> m a
 return forall a b. (a -> b) -> a -> b
 $ forall a b. b -> Either a b
 Right JannoRow
-pS
+pS
 
 decodingOptions :: Csv.DecodeOptions
 decodingOptions :: DecodeOptions
@@ -4046,149 +4046,149 @@
 
 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 ByteString
+from ByteString
+to ByteString
+tsv =
+    let tsvRows :: [ByteString]
+tsvRows = ByteString -> [ByteString]
 Bch.lines ByteString
-tsv
-        tsvCells :: [[ByteString]]
-tsvCells = forall a b. (a -> b) -> [a] -> [b]
+tsv
+        tsvCells :: [[ByteString]]
+tsvCells = forall a b. (a -> b) -> [a] -> [b]
 map ((Char -> Bool) -> ByteString -> [ByteString]
 Bch.splitWith (forall a. Eq a => a -> a -> Bool
 ==Char
 '\t')) [ByteString]
-tsvRows
-        tsvCellsUpdated :: [[ByteString]]
-tsvCellsUpdated = forall a b. (a -> b) -> [a] -> [b]
+tsvRows
+        tsvCellsUpdated :: [[ByteString]]
+tsvCellsUpdated = forall a b. (a -> b) -> [a] -> [b]
 map (forall a b. (a -> b) -> [a] -> [b]
-map (\ByteString
-y -> if ByteString
-y forall a. Eq a => a -> a -> Bool
+map (\ByteString
+y -> if ByteString
+y forall a. Eq a => a -> a -> Bool
 == ByteString
-from Bool -> Bool -> Bool
+from Bool -> Bool -> Bool
 || ByteString
-y forall a. Eq a => a -> a -> Bool
+y 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 = forall a b. (a -> b) -> [a] -> [b]
+to else ByteString
+y)) [[ByteString]]
+tsvCells
+        tsvRowsUpdated :: [ByteString]
+tsvRowsUpdated = forall a b. (a -> b) -> [a] -> [b]
 map (ByteString -> [ByteString] -> ByteString
 Bch.intercalate (String -> ByteString
 Bch.pack String
 "\t")) [[ByteString]]
-tsvCellsUpdated
+tsvCellsUpdated
    in [ByteString] -> ByteString
 Bch.unlines [ByteString]
-tsvRowsUpdated
+tsvRowsUpdated
 
 -- Janno consistency checks
 
 checkJannoConsistency :: FilePath -> JannoRows -> Either PoseidonException JannoRows
 checkJannoConsistency :: String -> JannoRows -> Either PoseidonException JannoRows
-checkJannoConsistency String
-jannoPath JannoRows
-xs
+checkJannoConsistency String
+jannoPath JannoRows
+xs
     | Bool -> Bool
 not forall a b. (a -> b) -> a -> b
 $ JannoRows -> Bool
 checkIndividualUnique JannoRows
-xs = forall a b. a -> Either a b
+xs = forall a b. a -> Either a b
 Left forall a b. (a -> b) -> a -> b
 $ String -> String -> PoseidonException
 PoseidonFileConsistencyException String
-jannoPath
+jannoPath
         String
 "The Poseidon_IDs are not unique"
     | Bool
 otherwise = forall a b. b -> Either a b
 Right JannoRows
-xs
+xs
 
 checkIndividualUnique :: JannoRows -> Bool
 checkIndividualUnique :: JannoRows -> Bool
-checkIndividualUnique (JannoRows [JannoRow]
-rows) = forall (t :: * -> *) a. Foldable t => t a -> Int
+checkIndividualUnique (JannoRows [JannoRow]
+rows) = forall (t :: * -> *) a. Foldable t => t a -> Int
 length [JannoRow]
-rows forall a. Eq a => a -> a -> Bool
+rows forall a. Eq a => a -> a -> Bool
 == forall (t :: * -> *) a. Foldable t => t a -> Int
 length (forall a. Eq a => [a] -> [a]
 nub forall a b. (a -> b) -> a -> b
 $ forall a b. (a -> b) -> [a] -> [b]
 map JannoRow -> String
 jPoseidonID [JannoRow]
-rows)
+rows)
 
 checkJannoRowConsistency :: FilePath -> Int -> JannoRow -> Either PoseidonException JannoRow
 checkJannoRowConsistency :: String -> Int -> JannoRow -> Either PoseidonException JannoRow
-checkJannoRowConsistency String
-jannoPath Int
-row JannoRow
-x
+checkJannoRowConsistency String
+jannoPath Int
+row JannoRow
+x
     | Bool -> Bool
 not forall a b. (a -> b) -> a -> b
 $ JannoRow -> Bool
 checkMandatoryStringNotEmpty JannoRow
-x = forall a b. a -> Either a b
+x = forall a b. a -> Either a b
 Left forall a b. (a -> b) -> a -> b
 $ String -> Int -> String -> PoseidonException
 PoseidonFileRowException String
-jannoPath Int
-row
+jannoPath Int
+row
           String
 "The mandatory columns Poseidon_ID and Group_Name contain empty values"
     | Bool -> Bool
 not forall a b. (a -> b) -> a -> b
 $ JannoRow -> Bool
 checkC14ColsConsistent JannoRow
-x = forall a b. a -> Either a b
+x = forall a b. a -> Either a b
 Left forall a b. (a -> b) -> a -> b
 $ String -> Int -> String -> PoseidonException
 PoseidonFileRowException String
-jannoPath Int
-row
+jannoPath Int
+row
           String
 "The Date_* columns are not consistent"
     | Bool -> Bool
 not forall a b. (a -> b) -> a -> b
 $ JannoRow -> Bool
 checkContamColsConsistent JannoRow
-x = forall a b. a -> Either a b
+x = forall a b. a -> Either a b
 Left forall a b. (a -> b) -> a -> b
 $ String -> Int -> String -> PoseidonException
 PoseidonFileRowException String
-jannoPath Int
-row
+jannoPath Int
+row
           String
 "The Contamination_* columns are not consistent"
     | Bool -> Bool
 not forall a b. (a -> b) -> a -> b
 $ JannoRow -> Bool
 checkRelationColsConsistent JannoRow
-x = forall a b. a -> Either a b
+x = forall a b. a -> Either a b
 Left forall a b. (a -> b) -> a -> b
 $ String -> Int -> String -> PoseidonException
 PoseidonFileRowException String
-jannoPath Int
-row
+jannoPath Int
+row
           String
 "The Relation_* columns are not consistent"
     | Bool
 otherwise = forall a b. b -> Either a b
 Right JannoRow
-x
+x
 
 checkMandatoryStringNotEmpty :: JannoRow -> Bool
 checkMandatoryStringNotEmpty :: JannoRow -> Bool
-checkMandatoryStringNotEmpty JannoRow
-x =
+checkMandatoryStringNotEmpty JannoRow
+x =
     (Bool -> Bool
 not forall b c a. (b -> c) -> (a -> b) -> a -> c
 . forall (t :: * -> *) a. Foldable t => t a -> Bool
@@ -4196,7 +4196,7 @@
 . JannoRow -> String
 jPoseidonID forall a b. (a -> b) -> a -> b
 $ JannoRow
-x)
+x)
     Bool -> Bool -> Bool
 && (Bool -> Bool
 not forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -4207,7 +4207,7 @@
 . JannoRow -> JannoStringList
 jGroupName forall a b. (a -> b) -> a -> b
 $ JannoRow
-x)
+x)
     Bool -> Bool -> Bool
 && (Bool -> Bool
 not forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -4220,9 +4220,9 @@
 . JannoRow -> JannoStringList
 jGroupName forall a b. (a -> b) -> a -> b
 $ JannoRow
-x)
+x)
 
-getCellLength :: Maybe (JannoList a) -> Int
+getCellLength :: Maybe (JannoList a) -> Int
 getCellLength :: forall a. Maybe (JannoList a) -> Int
 getCellLength = forall b a. b -> (a -> b) -> Maybe a -> b
 maybe Int
@@ -4231,155 +4231,155 @@
 . forall a. JannoList a -> [a]
 getJannoList)
 
-allEqual :: Eq a => [a] -> Bool
+allEqual :: Eq a => [a] -> Bool
 allEqual :: forall a. Eq a => [a] -> Bool
 allEqual [] = Bool
 True
-allEqual [a]
-x  = forall (t :: * -> *) a. Foldable t => t a -> Int
+allEqual [a]
+x  = forall (t :: * -> *) a. Foldable t => t a -> Int
 length (forall a. Eq a => [a] -> [a]
 nub [a]
-x) forall a. Eq a => a -> a -> Bool
+x) forall a. Eq a => a -> a -> Bool
 == Int
 1
 
 checkC14ColsConsistent :: JannoRow -> Bool
 checkC14ColsConsistent :: JannoRow -> Bool
-checkC14ColsConsistent JannoRow
-x =
-    let lLabnr :: Int
-lLabnr          = forall a. Maybe (JannoList a) -> Int
+checkC14ColsConsistent JannoRow
+x =
+    let lLabnr :: Int
+lLabnr          = forall a. Maybe (JannoList a) -> Int
 getCellLength forall a b. (a -> b) -> a -> b
 $ JannoRow -> Maybe JannoStringList
 jDateC14Labnr JannoRow
-x
-        lUncalBP :: Int
-lUncalBP        = forall a. Maybe (JannoList a) -> Int
+x
+        lUncalBP :: Int
+lUncalBP        = forall a. Maybe (JannoList a) -> Int
 getCellLength forall a b. (a -> b) -> a -> b
 $ JannoRow -> Maybe JannoIntList
 jDateC14UncalBP JannoRow
-x
-        lUncalBPErr :: Int
-lUncalBPErr     = forall a. Maybe (JannoList a) -> Int
+x
+        lUncalBPErr :: Int
+lUncalBPErr     = forall a. Maybe (JannoList a) -> Int
 getCellLength forall a b. (a -> b) -> a -> b
 $ JannoRow -> Maybe JannoIntList
 jDateC14UncalBPErr JannoRow
-x
-        shouldBeTypeC14 :: Bool
-shouldBeTypeC14 = Int
-lUncalBP forall a. Ord a => a -> a -> Bool
+x
+        shouldBeTypeC14 :: Bool
+shouldBeTypeC14 = Int
+lUncalBP forall a. Ord a => a -> a -> Bool
 > Int
 0
-        isTypeC14 :: Bool
-isTypeC14       = JannoRow -> Maybe JannoDateType
+        isTypeC14 :: Bool
+isTypeC14       = JannoRow -> Maybe JannoDateType
 jDateType JannoRow
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == forall a. a -> Maybe a
 Just JannoDateType
 C14
     in
         (Int
-lLabnr forall a. Eq a => a -> a -> Bool
+lLabnr forall a. Eq a => a -> a -> Bool
 == Int
 0 Bool -> Bool -> Bool
 || Int
-lUncalBP forall a. Eq a => a -> a -> Bool
+lUncalBP forall a. Eq a => a -> a -> Bool
 == Int
 0 Bool -> Bool -> Bool
 || Int
-lLabnr forall a. Eq a => a -> a -> Bool
+lLabnr forall a. Eq a => a -> a -> Bool
 == Int
-lUncalBP)
+lUncalBP)
         Bool -> Bool -> Bool
 && (Int
-lLabnr forall a. Eq a => a -> a -> Bool
+lLabnr forall a. Eq a => a -> a -> Bool
 == Int
 0 Bool -> Bool -> Bool
 || Int
-lUncalBPErr forall a. Eq a => a -> a -> Bool
+lUncalBPErr forall a. Eq a => a -> a -> Bool
 == Int
 0 Bool -> Bool -> Bool
 || Int
-lLabnr forall a. Eq a => a -> a -> Bool
+lLabnr forall a. Eq a => a -> a -> Bool
 == Int
-lUncalBPErr)
+lUncalBPErr)
         Bool -> Bool -> Bool
 && Int
-lUncalBP forall a. Eq a => a -> a -> Bool
+lUncalBP forall a. Eq a => a -> a -> Bool
 == Int
-lUncalBPErr
+lUncalBPErr
         Bool -> Bool -> Bool
 && (Bool -> Bool
 not Bool
-shouldBeTypeC14 Bool -> Bool -> Bool
+shouldBeTypeC14 Bool -> Bool -> Bool
 || Bool
-isTypeC14)
+isTypeC14)
 
 checkContamColsConsistent :: JannoRow -> Bool
 checkContamColsConsistent :: JannoRow -> Bool
-checkContamColsConsistent JannoRow
-x =
-  let lContamination :: Int
-lContamination      = forall a. Maybe (JannoList a) -> Int
+checkContamColsConsistent JannoRow
+x =
+  let lContamination :: Int
+lContamination      = forall a. Maybe (JannoList a) -> Int
 getCellLength forall a b. (a -> b) -> a -> b
 $ JannoRow -> Maybe JannoStringList
 jContamination JannoRow
-x
-      lContaminationErr :: Int
-lContaminationErr   = forall a. Maybe (JannoList a) -> Int
+x
+      lContaminationErr :: Int
+lContaminationErr   = forall a. Maybe (JannoList a) -> Int
 getCellLength forall a b. (a -> b) -> a -> b
 $ JannoRow -> Maybe JannoStringList
 jContaminationErr JannoRow
-x
-      lContaminationMeas :: Int
-lContaminationMeas  = forall a. Maybe (JannoList a) -> Int
+x
+      lContaminationMeas :: Int
+lContaminationMeas  = forall a. Maybe (JannoList a) -> Int
 getCellLength forall a b. (a -> b) -> a -> b
 $ JannoRow -> Maybe JannoStringList
 jContaminationMeas JannoRow
-x
+x
   in forall a. Eq a => [a] -> Bool
 allEqual [Int
-lContamination, Int
-lContaminationErr, Int
-lContaminationMeas]
+lContamination, Int
+lContaminationErr, Int
+lContaminationMeas]
 
 checkRelationColsConsistent :: JannoRow -> Bool
 checkRelationColsConsistent :: JannoRow -> Bool
-checkRelationColsConsistent JannoRow
-x =
-  let lRelationTo :: Int
-lRelationTo     = forall a. Maybe (JannoList a) -> Int
+checkRelationColsConsistent JannoRow
+x =
+  let lRelationTo :: Int
+lRelationTo     = forall a. Maybe (JannoList a) -> Int
 getCellLength forall a b. (a -> b) -> a -> b
 $ JannoRow -> Maybe JannoStringList
 jRelationTo JannoRow
-x
-      lRelationDegree :: Int
-lRelationDegree = forall a. Maybe (JannoList a) -> Int
+x
+      lRelationDegree :: Int
+lRelationDegree = forall a. Maybe (JannoList a) -> Int
 getCellLength forall a b. (a -> b) -> a -> b
 $ JannoRow -> Maybe JannoRelationDegreeList
 jRelationDegree JannoRow
-x
-      lRelationType :: Int
-lRelationType   = forall a. Maybe (JannoList a) -> Int
+x
+      lRelationType :: Int
+lRelationType   = forall a. Maybe (JannoList a) -> Int
 getCellLength forall a b. (a -> b) -> a -> b
 $ JannoRow -> Maybe JannoStringList
 jRelationType JannoRow
-x
+x
   in forall a. Eq a => [a] -> Bool
 allEqual [Int
-lRelationTo, Int
-lRelationType, Int
-lRelationDegree]
+lRelationTo, Int
+lRelationType, Int
+lRelationDegree]
      Bool -> Bool -> Bool
 || (forall a. Eq a => [a] -> Bool
 allEqual [Int
-lRelationTo, Int
-lRelationDegree] Bool -> Bool -> Bool
+lRelationTo, Int
+lRelationDegree] Bool -> Bool -> Bool
 && forall a. Maybe a -> Bool
 isNothing (JannoRow -> Maybe JannoStringList
 jRelationType JannoRow
-x))
+x))
 
 -- deriving with TemplateHaskell necessary for the generics magic in the Survey module
-deriveGeneric ''JannoRow
+deriveGeneric ''JannoRow
 
\ No newline at end of file diff --git a/src/Poseidon.MathHelpers.html b/src/Poseidon.MathHelpers.html index a7817a4d..d952e375 100644 --- a/src/Poseidon.MathHelpers.html +++ b/src/Poseidon.MathHelpers.html @@ -6,47 +6,47 @@
-- | 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_ = forall (t :: * -> *) b a. +avg [Double] +xs = let sum_ :: Double +sum_ = forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl' forall a. Num a => a -> a -> a (+) Double 0 [Double] -xs +xs in Double -sum_ forall a. Fractional a => a -> a -> a +sum_ forall a. Fractional a => a -> a -> a / forall a b. (Integral a, Num b) => a -> b fromIntegral (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 = forall a b. (Integral a, Num b) => a -> b +roundTo Int +n Double +x = forall a b. (Integral a, Num b) => a -> b fromIntegral Int -val forall a. Fractional a => a -> a -> a +val forall a. Fractional a => a -> a -> a / Double -t +t where - val :: Int -val = forall a b. (RealFrac a, Integral b) => a -> b + val :: Int +val = forall a b. (RealFrac a, Integral b) => a -> b round (Double -x forall a. Num a => a -> a -> a +x forall a. Num a => a -> a -> a * Double -t) :: Int - t :: Double -t = Double +t) :: Int + t :: Double +t = Double 10forall 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 = forall r. PrintfType r => String -> r printf String @@ -55,50 +55,50 @@ -- | A helper function to calculate the standard deviation of a list of doubles stdev :: [Double] -> Double stdev :: [Double] -> Double -stdev [Double] -xs = forall a. Floating a => a -> a +stdev [Double] +xs = forall a. Floating a => a -> a sqrt forall b c a. (b -> c) -> (a -> b) -> a -> c . [Double] -> Double avg forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] map (forall {a}. Num a => a -> a -sq forall b c a. (b -> c) -> (a -> b) -> a -> c +sq forall b c a. (b -> c) -> (a -> b) -> a -> c . (-) ([Double] -> Double avg [Double] -xs)) forall a b. (a -> b) -> a -> b +xs)) forall a b. (a -> b) -> a -> b $ [Double] -xs +xs where - sq :: a -> a -sq a -x = a -x forall a. Num a => a -> a -> a + sq :: a -> a +sq a +x = a +x 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 = forall a. Show a => a -> String +meanAndSdRoundTo Int +n [Double] +xs = forall a. Show a => a -> String show (Int -> Double -> Double roundTo Int -n forall a b. (a -> b) -> a -> b +n forall a b. (a -> b) -> a -> b $ [Double] -> Double avg [Double] -xs) forall a. [a] -> [a] -> [a] +xs) forall a. [a] -> [a] -> [a] ++ String " ± " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show (Int -> Double -> Double roundTo Int -n forall a b. (a -> b) -> a -> b +n 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) @@ -106,26 +106,26 @@ meanAndSdInteger :: [Double] -> String meanAndSdInteger [] = String "no values" -meanAndSdInteger [Double] -xs = forall a. Show a => a -> String +meanAndSdInteger [Double] +xs = forall a. Show a => a -> String show Int -a forall a. [a] -> [a] -> [a] +a forall a. [a] -> [a] -> [a] ++ String " ± " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show Int -s +s where - a :: Int -a = (forall a b. (RealFrac a, Integral b) => a -> b + a :: Int +a = (forall a b. (RealFrac a, Integral b) => a -> b round forall a b. (a -> b) -> a -> b $ [Double] -> Double avg [Double] -xs) :: Int - s :: Int -s = (forall a b. (RealFrac a, Integral b) => a -> b +xs) :: Int + s :: Int +s = (forall a b. (RealFrac a, Integral b) => a -> b round 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 4cb17dfa..3a0ae1c0 100644 --- a/src/Poseidon.Package.html +++ b/src/Poseidon.Package.html @@ -38,112 +38,110 @@ PacNameAndVersion (..), determineRelevantPackages, isLatestInCollection, - makePacNameAndVersion, - renderNameWithVersion) -import Poseidon.GenotypeData (GenotypeDataSpec (..), joinEntries, - loadGenotypeData, loadIndividuals, - printSNPCopyProgress) -import Poseidon.Janno (JannoGenotypePloidy (..), - JannoLibraryBuilt (..), - JannoList (..), JannoRow (..), - JannoRows (..), JannoSex (..), - JannoUDG (..), createMinimalJanno, - getMaybeJannoList, readJannoFile) -import Poseidon.PoseidonVersion (asVersion, latestPoseidonVersion, - showPoseidonVersion, - validPoseidonVersions) -import Poseidon.SequencingSource (SSFLibraryBuilt (..), SSFUDG (..), - SeqSourceRow (..), - SeqSourceRows (..), - readSeqSourceFile) -import Poseidon.ServerClient (ExtendedIndividualInfo (..), - GroupInfo (..), PackageInfo (..)) -import Poseidon.Utils (LogA, PoseidonException (..), - PoseidonIO, checkFile, - 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 + makePacNameAndVersion) +import Poseidon.GenotypeData (GenotypeDataSpec (..), joinEntries, + loadGenotypeData, loadIndividuals, + printSNPCopyProgress) +import Poseidon.Janno (JannoLibraryBuilt (..), + JannoList (..), JannoRow (..), + JannoRows (..), JannoSex (..), + JannoUDG (..), createMinimalJanno, + getMaybeJannoList, readJannoFile) +import Poseidon.PoseidonVersion (asVersion, latestPoseidonVersion, + showPoseidonVersion, + validPoseidonVersions) +import Poseidon.SequencingSource (SSFLibraryBuilt (..), SSFUDG (..), + SeqSourceRow (..), + SeqSourceRows (..), + readSeqSourceFile) +import Poseidon.ServerClient (ExtendedIndividualInfo (..), + GroupInfo (..), PackageInfo (..)) +import Poseidon.Utils (LogA, PoseidonException (..), + PoseidonIO, checkFile, + 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 forall a. @@ -154,7 +152,7 @@ $cshow :: PoseidonYamlStruct -> FilePath showsPrec :: Int -> PoseidonYamlStruct -> ShowS $cshowsPrec :: Int -> PoseidonYamlStruct -> ShowS -Show, PoseidonYamlStruct -> PoseidonYamlStruct -> Bool +Show, PoseidonYamlStruct -> PoseidonYamlStruct -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: PoseidonYamlStruct -> PoseidonYamlStruct -> Bool $c/= :: PoseidonYamlStruct -> PoseidonYamlStruct -> Bool @@ -167,65 +165,65 @@ $cto :: forall x. Rep PoseidonYamlStruct x -> PoseidonYamlStruct $cfrom :: forall x. PoseidonYamlStruct -> Rep PoseidonYamlStruct x 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 </>) 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 </>) 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 </>) 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 </>) 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 </>) 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 -parseJSON = forall a. FilePath -> (Object -> Parser a) -> Value -> Parser a +yml + +instance FromJSON PoseidonYamlStruct where + parseJSON :: Value -> Parser PoseidonYamlStruct +parseJSON = forall a. FilePath -> (Object -> Parser a) -> Value -> Parser a withObject FilePath "PoseidonYamlStruct" forall a b. (a -> b) -> a -> b -$ \Object -v -> Version +$ \Object +v -> Version -> FilePath -> Maybe FilePath -> [ContributorSpec] @@ -242,231 +240,231 @@ -> Maybe FilePath -> PoseidonYamlStruct PoseidonYamlStruct - forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "poseidonVersion" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "title" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "description" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "contributor" forall a. Parser (Maybe a) -> a -> Parser a .!= [] - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "packageVersion" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "lastModified" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "genotypeData" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "jannoFile" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "jannoFileChkSum" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "sequencingSourceFile" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "sequencingSourceFileChkSum" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "bibFile" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "bibFileChkSum" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "readmeFile" - forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b + forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser (Maybe a) +v 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 forall a b. (a -> b) -> a -> b $ [ - Key + Key "poseidonVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Version _posYamlPoseidonVersion PoseidonYamlStruct -x, - Key +x, + Key "title" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> FilePath _posYamlTitle PoseidonYamlStruct -x, - Key +x, + Key "description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlDescription PoseidonYamlStruct -x] forall a. [a] -> [a] -> [a] +x] forall a. [a] -> [a] -> [a] ++ - (if Bool -> Bool + (if Bool -> Bool not forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t a -> Bool null (PoseidonYamlStruct -> [ContributorSpec] _posYamlContributor PoseidonYamlStruct -x) then [Key +x) then [Key "contributor" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> [ContributorSpec] _posYamlContributor PoseidonYamlStruct -x] else []) forall a. [a] -> [a] -> [a] +x] else []) forall a. [a] -> [a] -> [a] ++ - [Key + [Key "packageVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe Version _posYamlPackageVersion PoseidonYamlStruct -x, - Key +x, + Key "lastModified" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe Day _posYamlLastModified PoseidonYamlStruct -x, - Key +x, + Key "genotypeData" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> GenotypeDataSpec _posYamlGenotypeData PoseidonYamlStruct -x, - Key +x, + Key "jannoFile" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlJannoFile PoseidonYamlStruct -x, - Key +x, + Key "jannoFileChkSum" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlJannoFileChkSum PoseidonYamlStruct -x, - Key +x, + Key "sequencingSourceFile" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlSeqSourceFile PoseidonYamlStruct -x, - Key +x, + Key "sequencingSourceFileChkSum" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlSeqSourceFileChkSum PoseidonYamlStruct -x, - Key +x, + Key "bibFile" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlBibFile PoseidonYamlStruct -x, - Key +x, + Key "bibFileChkSum" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlBibFileChkSum PoseidonYamlStruct -x, - Key +x, + Key "readmeFile" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlReadmeFile PoseidonYamlStruct -x, - Key +x, + Key "changelogFile" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= PoseidonYamlStruct -> Maybe FilePath _posYamlChangelogFile PoseidonYamlStruct -x - ] - --- | A data type to represent a Poseidon Package -data PoseidonPackage = PoseidonPackage - { PoseidonPackage -> FilePath +x + ] + +-- | 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 forall a. @@ -477,7 +475,7 @@ $cshow :: PoseidonPackage -> FilePath showsPrec :: Int -> PoseidonPackage -> ShowS $cshowsPrec :: Int -> PoseidonPackage -> ShowS -Show, PoseidonPackage -> PoseidonPackage -> Bool +Show, PoseidonPackage -> PoseidonPackage -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: PoseidonPackage -> PoseidonPackage -> Bool $c/= :: PoseidonPackage -> PoseidonPackage -> Bool @@ -490,123 +488,123 @@ $cto :: forall x. Rep PoseidonPackage x -> PoseidonPackage $cfrom :: forall x. PoseidonPackage -> Rep PoseidonPackage x Generic) - -instance Ord PoseidonPackage where - compare :: PoseidonPackage -> PoseidonPackage -> Ordering -compare PoseidonPackage -pacA PoseidonPackage -pacB = forall a. Ord a => a -> a -> Ordering + +instance Ord PoseidonPackage where + compare :: PoseidonPackage -> PoseidonPackage -> Ordering +compare PoseidonPackage +pacA PoseidonPackage +pacB = forall a. Ord a => a -> a -> Ordering compare (forall a. HasNameAndVersion a => a -> FilePath getPacName PoseidonPackage -pacA, forall a. HasNameAndVersion a => a -> Maybe Version +pacA, forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PoseidonPackage -pacA) (forall a. HasNameAndVersion a => a -> FilePath +pacA) (forall a. HasNameAndVersion a => a -> FilePath getPacName PoseidonPackage -pacB, forall a. HasNameAndVersion a => a -> Maybe Version +pacB, forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion PoseidonPackage -pacB) - -instance HasNameAndVersion PoseidonPackage where - getPacName :: PoseidonPackage -> FilePath -getPacName = forall a. HasNameAndVersion a => a -> FilePath +pacB) + +instance HasNameAndVersion PoseidonPackage where + getPacName :: PoseidonPackage -> FilePath +getPacName = forall a. HasNameAndVersion a => a -> FilePath getPacName forall b c a. (b -> c) -> (a -> b) -> a -> c . PoseidonPackage -> PacNameAndVersion posPacNameAndVersion - getPacVersion :: PoseidonPackage -> Maybe Version -getPacVersion = forall a. HasNameAndVersion a => a -> Maybe Version + getPacVersion :: PoseidonPackage -> Maybe Version +getPacVersion = forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion 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 = forall a b. (a, b) -> a + } + +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 = forall a b. (a, b) -> a fst forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> PackageReadOptions -> [FilePath] -> PoseidonIO ([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] -> PoseidonIO ([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 <- forall a. [Maybe a] -> [a] + [FilePath] +goodDirs <- forall a. [Maybe a] -> [a] catMaybes forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM FilePath -> PoseidonIO (Maybe FilePath) -checkIfBaseDirExists [FilePath] -baseDirs - FilePath -> PoseidonIO () +checkIfBaseDirExists [FilePath] +baseDirs + FilePath -> PoseidonIO () logInfo FilePath "Searching POSEIDON.yml files... " - [FilePath] -posFilesAllVersions <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + [FilePath] +posFilesAllVersions <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -615,152 +613,152 @@ (a -> m b) -> t a -> m (t b) mapM FilePath -> IO [FilePath] findAllPoseidonYmlFiles [FilePath] -goodDirs - FilePath -> PoseidonIO () +goodDirs + FilePath -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ forall a. Show a => a -> FilePath show (forall (t :: * -> *) a. Foldable t => t a -> Int length [FilePath] -posFilesAllVersions) forall a. [a] -> [a] -> [a] +posFilesAllVersions) forall a. [a] -> [a] -> [a] ++ FilePath " found" - [FilePath] -posFiles <- if PackageReadOptions -> Bool + [FilePath] +posFiles <- if PackageReadOptions -> Bool _readOptIgnorePosVersion PackageReadOptions -opts - then forall (m :: * -> *) a. Monad m => a -> m a +opts + then 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 <- forall (t :: * -> *) (m :: * -> *) a b. + [Either PoseidonException PoseidonPackage] +eitherPackages <- forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM (Integer, FilePath) -> PoseidonIO (Either PoseidonException PoseidonPackage) -tryDecodePoseidonPackage forall a b. (a -> b) -> a -> b +tryDecodePoseidonPackage forall a b. (a -> b) -> a -> b $ forall a b. [a] -> [b] -> [(a, b)] zip [Integer 1..] [FilePath] -posFiles - -- notifying the users of package problems - Bool -skipIndicator <- if (forall (t :: * -> *) a. Foldable t => t a -> Bool +posFiles + -- notifying the users of package problems + Bool +skipIndicator <- if (forall (t :: * -> *) a. Foldable t => t a -> Bool null forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. [Either a b] -> [a] lefts forall a b. (a -> b) -> a -> b $ [Either PoseidonException PoseidonPackage] -eitherPackages) then forall (m :: * -> *) a. Monad m => a -> m a +eitherPackages) then 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:" - forall (t :: * -> *) (m :: * -> *) a b. + forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ (forall a b. [a] -> [b] -> [(a, b)] zip [FilePath] -posFiles [Either PoseidonException PoseidonPackage] -eitherPackages) 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 () +posFiles [Either PoseidonException PoseidonPackage] +eitherPackages) 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 () logWarning forall a b. (a -> b) -> a -> b $ FilePath "In the package described in " forall a. [a] -> [a] -> [a] ++ FilePath -posF forall a. [a] -> [a] -> [a] +posF forall a. [a] -> [a] -> [a] ++ FilePath ":" - FilePath -> PoseidonIO () + FilePath -> PoseidonIO () logWarning forall a b. (a -> b) -> a -> b $ PoseidonException -> FilePath renderPoseidonException PoseidonException -e - Either PoseidonException PoseidonPackage +e + Either PoseidonException PoseidonPackage _ -> forall (m :: * -> *) a. Monad m => a -> m a return () - forall (m :: * -> *) a. Monad m => a -> m a + forall (m :: * -> *) a. Monad m => a -> m a return Bool True - let loadedPackages :: [PoseidonPackage] -loadedPackages = forall a b. [Either a b] -> [b] + let loadedPackages :: [PoseidonPackage] +loadedPackages = 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 forall (m :: * -> *) a. +opts + then forall (m :: * -> *) a. Applicative m => (a -> m Bool) -> [a] -> m [a] filterM (forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [PoseidonPackage] -loadedPackages) [PoseidonPackage] -loadedPackages - else forall (f :: * -> *) a. Applicative f => a -> f a +loadedPackages) [PoseidonPackage] +loadedPackages + else forall (f :: * -> *) a. Applicative f => a -> f a pure forall a b. (a -> b) -> a -> b $ [PoseidonPackage] -loadedPackages - -- check if any packages appear more than once - let duplicateGroups :: [[PoseidonPackage]] -duplicateGroups = forall a. (a -> Bool) -> [a] -> [a] +loadedPackages + -- check if any packages appear more than once + let duplicateGroups :: [[PoseidonPackage]] +duplicateGroups = forall a. (a -> Bool) -> [a] -> [a] filter ((forall a. Ord a => a -> a -> Bool >Int 1) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) a. Foldable t => t a -> Int length) - forall b c a. (b -> c) -> (a -> b) -> a -> c + forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. (a -> a -> Bool) -> [a] -> [[a]] -groupBy (\PoseidonPackage -a PoseidonPackage -b -> forall a. HasNameAndVersion a => a -> PacNameAndVersion +groupBy (\PoseidonPackage +a PoseidonPackage +b -> forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion PoseidonPackage -a forall a. Eq a => a -> a -> Bool +a forall a. Eq a => a -> a -> Bool == forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion PoseidonPackage -b) - forall b c a. (b -> c) -> (a -> b) -> a -> c +b) + forall b c a. (b -> c) -> (a -> b) -> a -> c . forall b a. Ord b => (a -> b) -> [a] -> [a] sortOn forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion forall a b. (a -> b) -> a -> b $ [PoseidonPackage] -filteredPackageList - forall (f :: * -> *). Applicative f => Bool -> f () -> f () +filteredPackageList + forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (forall (t :: * -> *) a. Foldable t => t a -> Bool null [[PoseidonPackage]] -duplicateGroups) forall a b. (a -> b) -> a -> b +duplicateGroups) forall a b. (a -> b) -> a -> b $ do - FilePath -> PoseidonIO () + FilePath -> PoseidonIO () logError FilePath "There are duplicated packages in this package collection:" - forall (t :: * -> *) (m :: * -> *) a b. + forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [[PoseidonPackage]] -duplicateGroups forall a b. (a -> b) -> a -> b -$ \[PoseidonPackage] -xs -> do - FilePath -> PoseidonIO () +duplicateGroups forall a b. (a -> b) -> a -> b +$ \[PoseidonPackage] +xs -> do + FilePath -> PoseidonIO () logError forall a b. (a -> b) -> a -> b $ FilePath "Duplicate package " forall a. [a] -> [a] -> [a] @@ -769,35 +767,35 @@ posPacNameAndVersion forall a b. (a -> b) -> a -> b $ forall a. [a] -> a head [PoseidonPackage] -xs) forall a. [a] -> [a] -> [a] +xs) forall a. [a] -> [a] -> [a] ++ FilePath " found at" - forall (t :: * -> *) (m :: * -> *) a b. + forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => t a -> (a -> m b) -> m () forM_ [PoseidonPackage] -xs forall a b. (a -> b) -> a -> b -$ \PoseidonPackage -x -> do - FilePath -> PoseidonIO () +xs forall a b. (a -> b) -> a -> b +$ \PoseidonPackage +x -> do + FilePath -> PoseidonIO () logError forall a b. (a -> b) -> a -> b $ FilePath " " forall a. [a] -> [a] -> [a] ++ PoseidonPackage -> FilePath posPacBaseDir PoseidonPackage -x - forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a +x + forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall b c a. (b -> c) -> (a -> b) -> a -> c . FilePath -> PoseidonException PoseidonCollectionException forall a b. (a -> b) -> a -> b $ FilePath "Detected duplicate packages." - -- report number of valid packages - let finalPackageList :: [PoseidonPackage] -finalPackageList = forall a. Ord a => [a] -> [a] + -- report number of valid packages + let finalPackageList :: [PoseidonPackage] +finalPackageList = forall a. Ord a => [a] -> [a] sort [PoseidonPackage] -filteredPackageList - FilePath -> PoseidonIO () +filteredPackageList + FilePath -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ FilePath "Packages loaded: " forall a. [a] -> [a] -> [a] @@ -806,56 +804,56 @@ . forall (t :: * -> *) a. Foldable t => t a -> Int length forall a b. (a -> b) -> a -> b $ [PoseidonPackage] -finalPackageList) - -- return package list - forall (m :: * -> *) a. Monad m => a -> m a +finalPackageList) + -- return package list + forall (m :: * -> *) a. Monad m => a -> m a return ([PoseidonPackage] -finalPackageList, Bool -skipIndicator) - where - checkIfBaseDirExists :: FilePath -> PoseidonIO (Maybe FilePath) - checkIfBaseDirExists :: FilePath -> PoseidonIO (Maybe FilePath) -checkIfBaseDirExists FilePath -p = do - Bool -exists <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +finalPackageList, Bool +skipIndicator) + where + checkIfBaseDirExists :: FilePath -> PoseidonIO (Maybe FilePath) + checkIfBaseDirExists :: FilePath -> PoseidonIO (Maybe FilePath) +checkIfBaseDirExists FilePath +p = do + Bool +exists <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ FilePath -> IO Bool doesDirectoryExist FilePath -p - if Bool -exists - then forall (m :: * -> *) a. Monad m => a -> m a +p + if Bool +exists + then forall (m :: * -> *) a. Monad m => a -> m a return (forall a. a -> Maybe a Just FilePath -p) - else do - FilePath -> PoseidonIO () +p) + else do + FilePath -> PoseidonIO () logWarning forall a b. (a -> b) -> a -> b $ FilePath "Base directory (-d) " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> FilePath show FilePath -p forall a. [a] -> [a] -> [a] +p forall a. [a] -> [a] -> [a] ++ FilePath " does not exist" - forall (m :: * -> *) a. Monad m => a -> m a + forall (m :: * -> *) a. Monad m => a -> m a return forall a. Maybe a Nothing - filterByPoseidonVersion :: [FilePath] -> PoseidonIO [FilePath] - filterByPoseidonVersion :: [FilePath] -> ReaderT Env IO [FilePath] -filterByPoseidonVersion [FilePath] -posFiles = do - [Either PoseidonException FilePath] -eitherPaths <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + filterByPoseidonVersion :: [FilePath] -> PoseidonIO [FilePath] + filterByPoseidonVersion :: [FilePath] -> ReaderT Env IO [FilePath] +filterByPoseidonVersion [FilePath] +posFiles = do + [Either PoseidonException FilePath] +eitherPaths <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM FilePath -> IO (Either PoseidonException FilePath) -isInVersionRange [FilePath] -posFiles - forall (t :: * -> *) (m :: * -> *) a b. +isInVersionRange [FilePath] +posFiles + forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ (FilePath -> PoseidonIO () @@ -864,53 +862,53 @@ renderPoseidonException) forall a b. (a -> b) -> a -> b $ forall a b. [Either a b] -> [a] lefts [Either PoseidonException FilePath] -eitherPaths - forall (m :: * -> *) a. Monad m => a -> m a +eitherPaths + forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ 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 forall a. Eq a => a -> [a] -> 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 forall a. Eq a => a -> [a] -> Maybe Int elemIndex FilePath "poseidonVersion:" (forall a b. (a -> b) -> [a] -> [b] map (forall a. Int -> [a] -> [a] take Int 16) [FilePath] -posLines) of - Maybe Int +posLines) of + Maybe Int Nothing -> forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a b. a -> Either a b Left forall a b. (a -> b) -> a -> b $ FilePath -> PoseidonException PoseidonPackageMissingVersionException FilePath -posFile - Just Int -n -> do - let versionLine :: FilePath -versionLine = [FilePath] -posLines forall a. [a] -> Int -> a +posFile + Just Int +n -> do + let versionLine :: FilePath +versionLine = [FilePath] +posLines forall a. [a] -> Int -> a !! Int -n - versionString :: FilePath -versionString = forall a. (a -> Bool) -> [a] -> [a] +n + versionString :: FilePath +versionString = forall a. (a -> Bool) -> [a] -> [a] filter (Bool -> Bool not forall b c a. (b -> c) -> (a -> b) -> a -> c . Char -> Bool @@ -918,229 +916,229 @@ $ forall a. Int -> [a] -> [a] drop Int 16 FilePath -versionLine - if FilePath -versionString forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +versionLine + if FilePath +versionString forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` forall a b. (a -> b) -> [a] -> [b] map PoseidonVersion -> FilePath showPoseidonVersion [PoseidonVersion] validPoseidonVersions - then forall (m :: * -> *) a. Monad m => a -> m a + then forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a b. b -> Either a b Right FilePath -posFile - else forall (m :: * -> *) a. Monad m => a -> m a +posFile + else forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a b. a -> Either a b Left 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 = forall r. FilePath -> IOMode -> (Handle -> IO r) -> IO r +posFile FilePath +versionString + readFile' :: FilePath -> IO String + readFile' :: FilePath -> IO FilePath +readFile' FilePath +filename = forall r. FilePath -> IOMode -> (Handle -> IO r) -> IO r withFile FilePath -filename IOMode +filename IOMode ReadMode 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 - forall (t :: * -> *) (m :: * -> *) a b. +handle + forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) mapM 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) -> PoseidonIO (Either PoseidonException PoseidonPackage) -tryDecodePoseidonPackage (Integer -numberPackage, FilePath -path) = do - FilePath -> PoseidonIO () +tryDecodePoseidonPackage (Integer +numberPackage, FilePath +path) = do + FilePath -> PoseidonIO () logDebug forall a b. (a -> b) -> a -> b $ FilePath "Package " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> FilePath show Integer -numberPackage forall a. [a] -> [a] -> [a] +numberPackage forall a. [a] -> [a] -> [a] ++ FilePath ": " forall a. [a] -> [a] -> [a] ++ FilePath -path - forall (m :: * -> *) e a. +path + forall (m :: * -> *) e a. (MonadCatch m, Exception e) => m a -> m (Either e a) try forall b c a. (b -> c) -> (a -> b) -> a -> c . PackageReadOptions -> FilePath -> PoseidonIO PoseidonPackage readPoseidonPackage PackageReadOptions -opts forall a b. (a -> b) -> a -> b +opts 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 -> PoseidonIO 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 -> PoseidonIO PoseidonPackage +readPoseidonPackage PackageReadOptions +opts FilePath +ymlPath = do + let baseDir :: FilePath +baseDir = ShowS takeDirectory FilePath -ymlPath - ByteString -bs <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +ymlPath + ByteString +bs <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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 forall a. FromJSON a => ByteString -> Either ParseException a +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 forall a. FromJSON a => ByteString -> Either ParseException a decodeEither' ByteString -bs of - Left ParseException -err -> forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a +bs of + Left ParseException +err -> forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b $ FilePath -> ParseException -> PoseidonException PoseidonYamlParseException FilePath -ymlPath ParseException -err - Right PoseidonYamlStruct -pac -> forall (m :: * -> *) a. Monad m => a -> m a +ymlPath ParseException +err + Right PoseidonYamlStruct +pac -> forall (m :: * -> *) a. Monad m => a -> m a return PoseidonYamlStruct -pac - - -- file existence and checksum test - forall (m :: * -> *) a. MonadIO m => IO a -> m a +pac + + -- file existence and checksum test + forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO 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 - forall (m :: * -> *) a. Monad m => a -> m a + forall (m :: * -> *) a. Monad m => a -> m a return 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 - forall (m :: * -> *) a. MonadIO m => IO a -> m a +p + forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ FilePath -> JannoRows -> [EigenstratIndEntry] -> IO () checkJannoIndConsistency FilePath -tit JannoRows -loadedJanno [EigenstratIndEntry] -indEntries - forall (m :: * -> *) a. Monad m => a -> m a +tit JannoRows +loadedJanno [EigenstratIndEntry] +indEntries + 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 -> forall (m :: * -> *) a. Monad m => a -> m a return 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 -> forall (m :: * -> *) a. Monad m => a -> m a return ([] :: BibTeX) - Just FilePath -p -> forall (m :: * -> *) a. MonadIO m => IO a -> m a + Just FilePath +p -> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ FilePath -> IO BibTeX readBibTeXFile FilePath -p - forall (m :: * -> *) a. MonadIO m => IO a -> m a +p + forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ FilePath -> JannoRows -> BibTeX -> IO () checkJannoBibConsistency FilePath -tit JannoRows -janno BibTeX -bib - - forall (f :: * -> *). Applicative f => Bool -> f () -> f () +tit JannoRows +janno BibTeX +bib + + forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (PackageReadOptions -> Bool _readOptFullGeno PackageReadOptions -opts) forall a b. (a -> b) -> a -> b +opts) forall a b. (a -> b) -> a -> b $ do - FilePath -> PoseidonIO () + FilePath -> PoseidonIO () logInfo forall a b. (a -> b) -> a -> b $ FilePath "Trying to parse genotype data for package: " 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 @@ -1160,87 +1158,76 @@ -> 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 - forall (f :: * -> *). Applicative f => Bool -> f () -> f () +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 + 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) forall a b. (a -> b) -> a -> b +opts) 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 - forall (m :: * -> *) a. Monad m => a -> m a +opts) + + -- return complete, valid package + forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -pac - -validateGeno :: PoseidonPackage -> Bool -> PoseidonIO () -validateGeno :: PoseidonPackage -> Bool -> PoseidonIO () -validateGeno PoseidonPackage -pac Bool -checkFullGeno = do - LogA -logA <- PoseidonIO LogA +pac + +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 - let jannoRows :: [JannoRow] -jannoRows = PoseidonPackage -> [JannoRow] -getJannoRowsFromPac PoseidonPackage -pac - let ploidyList :: [Maybe JannoGenotypePloidy] -ploidyList = forall a b. (a -> b) -> [a] -> [b] -map JannoRow -> Maybe JannoGenotypePloidy -jGenotypePloidy [JannoRow] -jannoRows - let indivNames :: [FilePath] -indivNames = forall a b. (a -> b) -> [a] -> [b] -map JannoRow -> FilePath -jPoseidonID [JannoRow] -jannoRows - forall (m :: * -> *) a. MonadIO m => IO a -> m a + --let jannoRows = getJannoRowsFromPac pac + --let ploidyList = map jGenotypePloidy jannoRows + --let indivNames = map jPoseidonID jannoRows + forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall e a. Exception e => IO a -> (e -> IO a) -> IO a catch ( - forall (m :: * -> *) r. + forall (m :: * -> *) r. (MonadMask m, MonadIO m) => SafeT m r -> m r runSafeT 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) <- forall (m :: * -> *). + -- 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) <- forall (m :: * -> *). MonadSafe m => LogA -> Bool @@ -1250,52 +1237,42 @@ -> m ([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ()) getJointGenotypeData LogA -logA Bool +logA Bool False PlinkPopNameMode -plinkMode [PoseidonPackage -pac] forall a. Maybe a +plinkMode [PoseidonPackage +pac] forall a. Maybe a Nothing - -- check all or only the first 100 SNPs - if Bool -checkFullGeno - then do - UTCTime -currentTime <- forall (m :: * -> *) a. MonadIO m => IO a -> m a + -- check all or only the first 100 SNPs + if Bool +checkFullGeno + then do + UTCTime +currentTime <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO IO UTCTime getCurrentTime - forall (m :: * -> *) r. Monad m => Effect m r -> m r + --runEffect $ eigenstratProd >-> checkPloidy logA ploidyList indivNames >-> printSNPCopyProgress logA currentTime >-> P.drain + forall (m :: * -> *) r. Monad m => Effect m r -> m r runEffect forall a b. (a -> b) -> a -> b $ Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -eigenstratProd 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 ->-> forall {m :: * -> *} {a} {c'} {c} {a'}. -MonadIO m => -LogA --> [Maybe JannoGenotypePloidy] --> [FilePath] --> Proxy () (a, GenoLine) c' c m a' -checkPloidy LogA -logA [Maybe JannoGenotypePloidy] -ploidyList [FilePath] -indivNames forall (m :: * -> *) a' a b r c' c. +eigenstratProd 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 >-> forall (m :: * -> *) a. MonadIO m => LogA -> UTCTime -> Pipe a a m () printSNPCopyProgress LogA -logA UTCTime -currentTime forall (m :: * -> *) a' a b r c' c. +logA UTCTime +currentTime 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 >-> forall (m :: * -> *) a r. Functor m => Consumer' a m r P.drain - else + else + --runEffect $ eigenstratProd >-> P.take 100 >-> checkPloidy logA ploidyList indivNames >-> P.drain forall (m :: * -> *) r. Monad m => Effect m r -> m r runEffect forall a b. (a -> b) -> a -> b $ Producer (EigenstratSnpEntry, GenoLine) (SafeT IO) () -eigenstratProd forall (m :: * -> *) a' a b r c' c. +eigenstratProd 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 >-> forall (m :: * -> *) a. Functor m => Int -> Pipe a a m () @@ -1303,356 +1280,273 @@ 100 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 ->-> forall {m :: * -> *} {a} {c'} {c} {a'}. -MonadIO m => -LogA --> [Maybe JannoGenotypePloidy] --> [FilePath] --> Proxy () (a, GenoLine) c' c m a' -checkPloidy LogA -logA [Maybe JannoGenotypePloidy] -ploidyList [FilePath] -indivNames 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 >-> forall (m :: * -> *) a r. Functor m => Consumer' a m r P.drain ) (forall e a. Exception e => e -> IO a throwIO forall b c a. (b -> c) -> (a -> b) -> a -> c . SomeException -> PoseidonException PoseidonGenotypeExceptionForward) - where - checkPloidy :: LogA --> [Maybe JannoGenotypePloidy] --> [FilePath] --> Proxy () (a, GenoLine) c' c m a' -checkPloidy LogA -logA [Maybe JannoGenotypePloidy] -ploidyList [FilePath] -indivNames = forall (m :: * -> *) x' x b' b a' c' c. -Functor m => -Proxy x' x b' b m a' --> (b -> Proxy x' x c' c m b') -> Proxy x' x c' c m a' -for forall (m :: * -> *) a r. Functor m => Pipe a a m r -cat forall a b. (a -> b) -> a -> b -$ \(a -_, GenoLine -genoLine) -> do - let illegals :: [FilePath] -illegals = - forall a b. (a -> b) -> [a] -> [b] -map (\(Maybe JannoGenotypePloidy -_, FilePath -ind, GenoEntry -_) -> forall a. HasNameAndVersion a => a -> FilePath -renderNameWithVersion PoseidonPackage -pac forall a. [a] -> [a] -> [a] -++ FilePath -": " forall a. [a] -> [a] -> [a] -++ FilePath -ind) forall b c a. (b -> c) -> (a -> b) -> a -> c -. - forall a. (a -> Bool) -> [a] -> [a] -filter (\(Maybe JannoGenotypePloidy -ploidy, FilePath -_, GenoEntry -geno) -> Maybe JannoGenotypePloidy -ploidy forall a. Eq a => a -> a -> Bool -== forall a. a -> Maybe a -Just JannoGenotypePloidy -Haploid Bool -> Bool -> Bool -&& GenoEntry -geno forall a. Eq a => a -> a -> Bool -== GenoEntry -Het) forall b c a. (b -> c) -> (a -> b) -> a -> c -. - forall a b c. [a] -> [b] -> [c] -> [(a, b, c)] -zip3 [Maybe JannoGenotypePloidy] -ploidyList [FilePath] -indivNames forall b c a. (b -> c) -> (a -> b) -> a -> c -. forall a. Vector a -> [a] -V.toList forall a b. (a -> b) -> a -> b -$ GenoLine -genoLine - forall (f :: * -> *). Applicative f => Bool -> f () -> f () -unless (forall (t :: * -> *) a. Foldable t => t a -> Bool -null [FilePath] -illegals) forall a b. (a -> b) -> a -> b -$ do - forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () -logWithEnv LogA -logA forall b c a. (b -> c) -> (a -> b) -> a -> c -. FilePath -> PoseidonIO () -logDebug forall a b. (a -> b) -> a -> b -$ FilePath -"The following samples have heterozygote genotypes despite being annotated as \"haploid\" in the Janno file:" - forall (t :: * -> *) (m :: * -> *) a b. -(Foldable t, Monad m) => -(a -> m b) -> t a -> m () -mapM_ (forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () -logWithEnv LogA -logA forall b c a. (b -> c) -> (a -> b) -> a -> c -. FilePath -> PoseidonIO () -logDebug) [FilePath] -illegals - forall (m :: * -> *) a. MonadIO m => IO a -> m a -liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c -. forall e a. Exception e => e -> IO a -throwIO forall a b. (a -> b) -> a -> b -$ FilePath -> PoseidonException -PoseidonGenotypeException FilePath -"Illegal heterozygote genotypes for individuals marked as 'haploid' in the Janno file. Choose --logMode VerboseLog to output more" + -- 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 +checkFiles FilePath +baseDir Bool +ignoreChecksums Bool +ignoreGenotypeFilesMissing PoseidonYamlStruct +yml = do -- Check README File case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonReadmeFilePath FilePath -baseDir PoseidonYamlStruct -yml of +baseDir PoseidonYamlStruct +yml of Maybe FilePath Nothing -> 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 forall a. Maybe a +fn forall a. Maybe a Nothing -- Check CHANGELOG File case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonChangelogFilePath FilePath -baseDir PoseidonYamlStruct -yml of +baseDir PoseidonYamlStruct +yml of Maybe FilePath Nothing -> 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 forall a. Maybe a +fn forall a. Maybe a Nothing -- Check Bib File case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonBibFilePath FilePath -baseDir PoseidonYamlStruct -yml of +baseDir PoseidonYamlStruct +yml of Maybe FilePath Nothing -> forall (m :: * -> *) a. Monad m => a -> m a return () - Just FilePath -fn -> if Bool -ignoreChecksums + Just FilePath +fn -> if Bool +ignoreChecksums then FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn forall a. Maybe a +fn forall a. Maybe a Nothing else FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn forall a b. (a -> b) -> a -> b +fn forall a b. (a -> b) -> a -> b $ PoseidonYamlStruct -> Maybe FilePath _posYamlBibFileChkSum PoseidonYamlStruct -yml +yml -- Check Janno File case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonJannoFilePath FilePath -baseDir PoseidonYamlStruct -yml of +baseDir PoseidonYamlStruct +yml of Maybe FilePath Nothing -> forall (m :: * -> *) a. Monad m => a -> m a return () - Just FilePath -fn -> if Bool -ignoreChecksums + Just FilePath +fn -> if Bool +ignoreChecksums then FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn forall a. Maybe a +fn forall a. Maybe a Nothing else FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn forall a b. (a -> b) -> a -> b +fn forall a b. (a -> b) -> a -> b $ PoseidonYamlStruct -> Maybe FilePath _posYamlJannoFileChkSum PoseidonYamlStruct -yml +yml -- Check SeqSource File case FilePath -> PoseidonYamlStruct -> Maybe FilePath poseidonSeqSourceFilePath FilePath -baseDir PoseidonYamlStruct -yml of +baseDir PoseidonYamlStruct +yml of Maybe FilePath Nothing -> forall (m :: * -> *) a. Monad m => a -> m a return () - Just FilePath -fn -> if Bool -ignoreChecksums + Just FilePath +fn -> if Bool +ignoreChecksums then FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn forall a. Maybe a +fn forall a. Maybe a Nothing else FilePath -> Maybe FilePath -> IO () checkFile FilePath -fn forall a b. (a -> b) -> a -> b +fn forall a b. (a -> b) -> a -> b $ PoseidonYamlStruct -> Maybe FilePath _posYamlSeqSourceFileChkSum PoseidonYamlStruct -yml +yml -- Check Genotype files forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -ignoreGenotypeFilesMissing forall a b. (a -> b) -> a -> b +ignoreGenotypeFilesMissing 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 +yml + d :: FilePath +d = FilePath +baseDir if Bool -ignoreChecksums +ignoreChecksums then do FilePath -> Maybe FilePath -> IO () checkFile (FilePath -d FilePath -> ShowS +d FilePath -> ShowS </> GenotypeDataSpec -> FilePath genoFile GenotypeDataSpec -gd) forall a. Maybe a +gd) forall a. Maybe a Nothing FilePath -> Maybe FilePath -> IO () checkFile (FilePath -d FilePath -> ShowS +d FilePath -> ShowS </> GenotypeDataSpec -> FilePath snpFile GenotypeDataSpec -gd) forall a. Maybe a +gd) forall a. Maybe a Nothing FilePath -> Maybe FilePath -> IO () checkFile (FilePath -d FilePath -> ShowS +d FilePath -> ShowS </> GenotypeDataSpec -> FilePath indFile GenotypeDataSpec -gd) forall a. Maybe a +gd) forall a. Maybe a Nothing else do FilePath -> Maybe FilePath -> IO () checkFile (FilePath -d FilePath -> ShowS +d FilePath -> ShowS </> GenotypeDataSpec -> FilePath genoFile GenotypeDataSpec -gd) forall a b. (a -> b) -> a -> b +gd) forall a b. (a -> b) -> a -> b $ GenotypeDataSpec -> Maybe FilePath genoFileChkSum GenotypeDataSpec -gd +gd FilePath -> Maybe FilePath -> IO () checkFile (FilePath -d FilePath -> ShowS +d FilePath -> ShowS </> GenotypeDataSpec -> FilePath snpFile GenotypeDataSpec -gd) forall a b. (a -> b) -> a -> b +gd) forall a b. (a -> b) -> a -> b $ GenotypeDataSpec -> Maybe FilePath snpFileChkSum GenotypeDataSpec -gd +gd FilePath -> Maybe FilePath -> IO () checkFile (FilePath -d FilePath -> ShowS +d FilePath -> ShowS </> GenotypeDataSpec -> FilePath indFile GenotypeDataSpec -gd) forall a b. (a -> b) -> a -> b +gd) forall a b. (a -> b) -> a -> b $ GenotypeDataSpec -> Maybe FilePath indFileChkSum GenotypeDataSpec -gd +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 +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 = forall a b. (a -> b) -> [a] -> [b] +_ FilePath +x <- [EigenstratIndEntry] +indEntries] + let jannoIDs :: [FilePath] +jannoIDs = forall a b. (a -> b) -> [a] -> [b] map JannoRow -> FilePath jPoseidonID [JannoRow] -rows - jannoSexs :: [Sex] -jannoSexs = forall a b. (a -> b) -> [a] -> [b] +rows + jannoSexs :: [Sex] +jannoSexs = forall a b. (a -> b) -> [a] -> [b] map (JannoSex -> Sex sfSex forall b c a. (b -> c) -> (a -> b) -> a -> c . JannoRow -> JannoSex jGeneticSex) [JannoRow] -rows - jannoGroups :: [FilePath] -jannoGroups = forall a b. (a -> b) -> [a] -> [b] +rows + jannoGroups :: [FilePath] +jannoGroups = forall a b. (a -> b) -> [a] -> [b] map (forall a. [a] -> a head forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. JannoList a -> [a] getJannoList forall b c a. (b -> c) -> (a -> b) -> a -> c . JannoRow -> JannoStringList jGroupName) [JannoRow] -rows - let idMis :: Bool -idMis = [FilePath] -genoIDs forall a. Eq a => a -> a -> Bool +rows + let idMis :: Bool +idMis = [FilePath] +genoIDs forall a. Eq a => a -> a -> Bool /= [FilePath] -jannoIDs - sexMis :: Bool -sexMis = [Sex] -genoSexs forall a. Eq a => a -> a -> Bool +jannoIDs + sexMis :: Bool +sexMis = [Sex] +genoSexs forall a. Eq a => a -> a -> Bool /= [Sex] -jannoSexs - groupMis :: Bool -groupMis = [FilePath] -genoGroups forall a. Eq a => a -> a -> Bool +jannoSexs + groupMis :: Bool +groupMis = [FilePath] +genoGroups forall a. Eq a => a -> a -> Bool /= [FilePath] -jannoGroups +jannoGroups forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -idMis forall a b. (a -> b) -> a -> b +idMis forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonCrossFileConsistencyException FilePath -pacName forall a b. (a -> b) -> a -> b +pacName forall a b. (a -> b) -> a -> b $ FilePath "Individual ID mismatch between genotype data (left) and .janno files (right): " forall a. [a] -> [a] -> [a] ++ [FilePath] -> [FilePath] -> FilePath renderMismatch [FilePath] -genoIDs [FilePath] -jannoIDs +genoIDs [FilePath] +jannoIDs forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -sexMis forall a b. (a -> b) -> a -> b +sexMis forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonCrossFileConsistencyException FilePath -pacName forall a b. (a -> b) -> a -> b +pacName forall a b. (a -> b) -> a -> b $ FilePath "Individual Sex mismatch between genotype data (left) and .janno files (right): " forall a. [a] -> [a] -> [a] @@ -1661,18 +1555,18 @@ renderMismatch (forall a b. (a -> b) -> [a] -> [b] map forall a. Show a => a -> FilePath show [Sex] -genoSexs) (forall a b. (a -> b) -> [a] -> [b] +genoSexs) (forall a b. (a -> b) -> [a] -> [b] map forall a. Show a => a -> FilePath show [Sex] -jannoSexs) +jannoSexs) forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool -groupMis forall a b. (a -> b) -> a -> b +groupMis forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonCrossFileConsistencyException FilePath -pacName forall a b. (a -> b) -> a -> b +pacName forall a b. (a -> b) -> a -> b $ FilePath "Individual GroupID mismatch between genotype data (left) and .janno files (right). Note \ @@ -1681,26 +1575,26 @@ ++ [FilePath] -> [FilePath] -> FilePath renderMismatch [FilePath] -genoGroups [FilePath] -jannoGroups +genoGroups [FilePath] +jannoGroups renderMismatch :: [String] -> [String] -> String renderMismatch :: [FilePath] -> [FilePath] -> FilePath -renderMismatch [FilePath] -a [FilePath] -b = - let misMatchList :: [FilePath] -misMatchList = forall a b. (a -> b) -> [a] -> [b] -map (\ (FilePath -x, FilePath -y) -> FilePath +renderMismatch [FilePath] +a [FilePath] +b = + let misMatchList :: [FilePath] +misMatchList = forall a b. (a -> b) -> [a] -> [b] +map (\ (FilePath +x, FilePath +y) -> FilePath "(" forall a. [a] -> [a] -> [a] ++ FilePath -x forall a. [a] -> [a] -> [a] +x forall a. [a] -> [a] -> [a] ++ FilePath " = " forall a. [a] -> [a] -> [a] ++ FilePath -y forall a. [a] -> [a] -> [a] +y forall a. [a] -> [a] -> [a] ++ FilePath ")") (forall a. (a -> Bool) -> [a] -> [a] @@ -1711,11 +1605,11 @@ zipWithPadding FilePath "?" FilePath "?" [FilePath] -a [FilePath] -b) +a [FilePath] +b) in if forall (t :: * -> *) a. Foldable t => t a -> Int length [FilePath] -misMatchList forall a. Ord a => a -> a -> Bool +misMatchList forall a. Ord a => a -> a -> Bool > Int 5 then forall a. [a] -> [[a]] -> [a] @@ -1723,188 +1617,188 @@ ", " (forall a. Int -> [a] -> [a] take Int 5 [FilePath] -misMatchList) forall a. [a] -> [a] -> [a] +misMatchList) forall a. [a] -> [a] -> [a] ++ FilePath ", ..." else forall a. [a] -> [[a]] -> [a] intercalate FilePath ", " [FilePath] -misMatchList +misMatchList -zipWithPadding :: a -> b -> [a] -> [b] -> [(a,b)] +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) forall a. a -> [a] -> [a] +zipWithPadding a +a b +b (a +x:[a] +xs) (b +y:[b] +ys) = (a +x,b +y) forall a. a -> [a] -> [a] : forall a b. a -> b -> [a] -> [b] -> [(a, b)] zipWithPadding a -a b -b [a] -xs [b] -ys -zipWithPadding a -a b -_ [] [b] -ys = forall a b. [a] -> [b] -> [(a, b)] +a b +b [a] +xs [b] +ys +zipWithPadding a +a b +_ [] [b] +ys = forall a b. [a] -> [b] -> [(a, b)] zip (forall a. a -> [a] repeat a -a) [b] -ys +a) [b] +ys zipWithPadding a -_ b -b [a] -xs [] = forall a b. [a] -> [b] -> [(a, b)] +_ b +b [a] +xs [] = forall a b. [a] -> [b] -> [(a, b)] zip [a] -xs (forall a. a -> [a] +xs (forall a. a -> [a] repeat b -b) +b) checkSeqSourceJannoConsistency :: String -> SeqSourceRows -> JannoRows -> PoseidonIO () checkSeqSourceJannoConsistency :: FilePath -> SeqSourceRows -> JannoRows -> PoseidonIO () -checkSeqSourceJannoConsistency FilePath -pacName (SeqSourceRows [SeqSourceRow] -sRows) (JannoRows [JannoRow] -jRows) = do +checkSeqSourceJannoConsistency FilePath +pacName (SeqSourceRows [SeqSourceRow] +sRows) (JannoRows [JannoRow] +jRows) = do PoseidonIO () -checkPoseidonIDOverlap +checkPoseidonIDOverlap PoseidonIO () -checkUDGandLibraryBuiltOverlap +checkUDGandLibraryBuiltOverlap where - js :: [(FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)] -js = forall a b. (a -> b) -> [a] -> [b] -map (\JannoRow -r -> (JannoRow -> FilePath + js :: [(FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)] +js = forall a b. (a -> b) -> [a] -> [b] +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 = forall a b. (a -> b) -> [a] -> [b] -map (\SeqSourceRow -r -> (forall a. Maybe (JannoList a) -> [a] +r)) [JannoRow] +jRows + ss :: [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] +ss = forall a b. (a -> b) -> [a] -> [b] +map (\SeqSourceRow +r -> (forall a. Maybe (JannoList a) -> [a] getMaybeJannoList forall a b. (a -> b) -> a -> b $ SeqSourceRow -> Maybe JannoStringList 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 = forall a. Eq a => [a] -> [a] +r)) [SeqSourceRow] +sRows + checkPoseidonIDOverlap :: PoseidonIO () + checkPoseidonIDOverlap :: PoseidonIO () +checkPoseidonIDOverlap = do + let flatSeqSourceIDs :: [FilePath] +flatSeqSourceIDs = forall a. Eq a => [a] -> [a] nub forall a b. (a -> b) -> a -> b $ forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat 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 forall a. Eq a => [a] -> [a] -> [a] +ss] + misMatch :: [FilePath] +misMatch = [FilePath] +flatSeqSourceIDs 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] +js] forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (forall (t :: * -> *) a. Foldable t => t a -> Bool null [FilePath] -misMatch) forall a b. (a -> b) -> a -> b +misMatch) forall a b. (a -> b) -> a -> b $ do FilePath -> PoseidonIO () logWarning forall a b. (a -> b) -> a -> b $ FilePath "The .ssf file in the package " forall a. [a] -> [a] -> [a] ++ FilePath -pacName forall a. [a] -> [a] -> [a] +pacName forall a. [a] -> [a] -> [a] ++ FilePath " features Poseidon_IDs that are not in the package: " forall a. [a] -> [a] -> [a] ++ forall a. [a] -> [[a]] -> [a] intercalate FilePath ", " [FilePath] -misMatch - checkUDGandLibraryBuiltOverlap :: PoseidonIO () - checkUDGandLibraryBuiltOverlap :: PoseidonIO () -checkUDGandLibraryBuiltOverlap = do +misMatch + checkUDGandLibraryBuiltOverlap :: PoseidonIO () + checkUDGandLibraryBuiltOverlap :: PoseidonIO () +checkUDGandLibraryBuiltOverlap = do forall (t :: * -> *) (m :: * -> *) a b. (Foldable t, Monad m) => (a -> m b) -> t a -> m () mapM_ (FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt) -> PoseidonIO () -checkOneIndividual [(FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)] -js +checkOneIndividual [(FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt)] +js where - checkOneIndividual :: (String, Maybe JannoUDG, Maybe JannoLibraryBuilt) -> PoseidonIO () - checkOneIndividual :: (FilePath, Maybe JannoUDG, Maybe JannoLibraryBuilt) + 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 = forall a. (a -> Bool) -> [a] -> [a] -filter (\([FilePath] -seqSourcePoseidonID,Maybe SSFUDG +checkOneIndividual (FilePath +jannoPoseidonID, Maybe JannoUDG +jannoUDG, Maybe JannoLibraryBuilt +jannoLibraryBuilt) = do + let relevantSeqSourceRows :: [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] +relevantSeqSourceRows = forall a. (a -> Bool) -> [a] -> [a] +filter (\([FilePath] +seqSourcePoseidonID,Maybe SSFUDG _,Maybe SSFLibraryBuilt _) -> FilePath -jannoPoseidonID forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +jannoPoseidonID forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [FilePath] -seqSourcePoseidonID) [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] -ss - allSeqSourceUDGs :: [SSFUDG] -allSeqSourceUDGs = forall a. [Maybe a] -> [a] +seqSourcePoseidonID) [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] +ss + allSeqSourceUDGs :: [SSFUDG] +allSeqSourceUDGs = forall a. [Maybe a] -> [a] catMaybes 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 = forall a. [Maybe a] -> [a] +relevantSeqSourceRows] + allSeqSourceLibraryBuilts :: [SSFLibraryBuilt] +allSeqSourceLibraryBuilts = forall a. [Maybe a] -> [a] catMaybes forall a b. (a -> b) -> a -> b $ [Maybe SSFLibraryBuilt -c | ([FilePath] +c | ([FilePath] _,Maybe SSFUDG -_,Maybe SSFLibraryBuilt -c) <- [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] -relevantSeqSourceRows] +_,Maybe SSFLibraryBuilt +c) <- [([FilePath], Maybe SSFUDG, Maybe SSFLibraryBuilt)] +relevantSeqSourceRows] case Maybe JannoUDG -jannoUDG of +jannoUDG of Maybe JannoUDG Nothing -> forall (m :: * -> *) a. Monad m => a -> m a return () - Just JannoUDG -j -> forall (f :: * -> *). Applicative f => Bool -> f () -> f () + Just JannoUDG +j -> forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool all (JannoUDG -> SSFUDG -> Bool -compareU JannoUDG -j) [SSFUDG] -allSeqSourceUDGs) forall a b. (a -> b) -> a -> b +compareU JannoUDG +j) [SSFUDG] +allSeqSourceUDGs) forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonCrossFileConsistencyException FilePath -pacName forall a b. (a -> b) -> a -> b +pacName forall a b. (a -> b) -> a -> b $ FilePath "The information on UDG treatment in .janno and .ssf do not match" forall a. [a] -> [a] -> [a] @@ -1912,37 +1806,37 @@ FilePath " for the individual: " forall a. [a] -> [a] -> [a] ++ FilePath -jannoPoseidonID forall a. [a] -> [a] -> [a] +jannoPoseidonID forall a. [a] -> [a] -> [a] ++ FilePath " (" forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> FilePath show JannoUDG -j forall a. [a] -> [a] -> [a] +j forall a. [a] -> [a] -> [a] ++ FilePath " <> " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> FilePath show [SSFUDG] -allSeqSourceUDGs forall a. [a] -> [a] -> [a] +allSeqSourceUDGs forall a. [a] -> [a] -> [a] ++ FilePath ")" case Maybe JannoLibraryBuilt -jannoLibraryBuilt of +jannoLibraryBuilt of Maybe JannoLibraryBuilt Nothing -> forall (m :: * -> *) a. Monad m => a -> m a return () - Just JannoLibraryBuilt -j -> forall (f :: * -> *). Applicative f => Bool -> f () -> f () + Just JannoLibraryBuilt +j -> forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool all (JannoLibraryBuilt -> SSFLibraryBuilt -> Bool -compareL JannoLibraryBuilt -j) [SSFLibraryBuilt] -allSeqSourceLibraryBuilts) forall a b. (a -> b) -> a -> b +compareL JannoLibraryBuilt +j) [SSFLibraryBuilt] +allSeqSourceLibraryBuilts) forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonCrossFileConsistencyException FilePath -pacName forall a b. (a -> b) -> a -> b +pacName forall a b. (a -> b) -> a -> b $ FilePath "The information on library strandedness in .janno and .ssf do not match" forall a. [a] -> [a] -> [a] @@ -1950,69 +1844,69 @@ FilePath " for the individual: " forall a. [a] -> [a] -> [a] ++ FilePath -jannoPoseidonID forall a. [a] -> [a] -> [a] +jannoPoseidonID forall a. [a] -> [a] -> [a] ++ FilePath " (" forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> FilePath show JannoLibraryBuilt -j forall a. [a] -> [a] -> [a] +j forall a. [a] -> [a] -> [a] ++ FilePath " <> " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> FilePath show [SSFLibraryBuilt] -allSeqSourceLibraryBuilts forall a. [a] -> [a] -> [a] +allSeqSourceLibraryBuilts forall a. [a] -> [a] -> [a] ++ FilePath ")" - compareU :: JannoUDG -> SSFUDG -> Bool - compareU :: JannoUDG -> SSFUDG -> Bool -compareU JannoUDG + compareU :: JannoUDG -> SSFUDG -> Bool + compareU :: JannoUDG -> SSFUDG -> Bool +compareU JannoUDG Mixed SSFUDG _ = Bool True - compareU JannoUDG + compareU JannoUDG Minus SSFUDG SSFMinus = Bool True - compareU JannoUDG + compareU JannoUDG Half SSFUDG SSFHalf = Bool True - compareU JannoUDG + compareU JannoUDG Plus SSFUDG SSFPlus = Bool True - compareU JannoUDG + compareU JannoUDG _ SSFUDG _ = Bool False - compareL :: JannoLibraryBuilt -> SSFLibraryBuilt -> Bool - compareL :: JannoLibraryBuilt -> SSFLibraryBuilt -> Bool -compareL JannoLibraryBuilt + compareL :: JannoLibraryBuilt -> SSFLibraryBuilt -> Bool + compareL :: JannoLibraryBuilt -> SSFLibraryBuilt -> Bool +compareL JannoLibraryBuilt MixedSSDS SSFLibraryBuilt _ = Bool True - compareL JannoLibraryBuilt + compareL JannoLibraryBuilt DS SSFLibraryBuilt SSFDS = Bool True - compareL JannoLibraryBuilt + 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 +checkJannoBibConsistency FilePath +pacName (JannoRows [JannoRow] +rows) BibTeX +bibtex = do -- Cross-file consistency - let literatureInJanno :: [FilePath] -literatureInJanno = forall a. Eq a => [a] -> [a] + let literatureInJanno :: [FilePath] +literatureInJanno = forall a. Eq a => [a] -> [a] nub forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap forall a. JannoList a -> [a] @@ -2021,28 +1915,28 @@ mapMaybe JannoRow -> Maybe JannoStringList jPublication forall a b. (a -> b) -> a -> b $ [JannoRow] -rows - literatureInBib :: [FilePath] -literatureInBib = forall a. Eq a => [a] -> [a] +rows + literatureInBib :: [FilePath] +literatureInBib = forall a. Eq a => [a] -> [a] nub forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map BibEntry -> FilePath bibEntryId BibTeX -bibtex - literatureNotInBibButInJanno :: [FilePath] -literatureNotInBibButInJanno = [FilePath] -literatureInJanno forall a. Eq a => [a] -> [a] -> [a] +bibtex + literatureNotInBibButInJanno :: [FilePath] +literatureNotInBibButInJanno = [FilePath] +literatureInJanno forall a. Eq a => [a] -> [a] -> [a] \\ [FilePath] -literatureInBib +literatureInBib forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (forall (t :: * -> *) a. Foldable t => t a -> Bool null [FilePath] -literatureNotInBibButInJanno) forall a b. (a -> b) -> a -> b +literatureNotInBibButInJanno) forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> PoseidonException PoseidonCrossFileConsistencyException FilePath -pacName forall a b. (a -> b) -> a -> b +pacName forall a b. (a -> b) -> a -> b $ FilePath "The following papers lack BibTeX entries: " forall a. [a] -> [a] -> [a] @@ -2050,20 +1944,20 @@ forall a. [a] -> [[a]] -> [a] intercalate FilePath ", " [FilePath] -literatureNotInBibButInJanno +literatureNotInBibButInJanno findAllPoseidonYmlFiles :: FilePath -> IO [FilePath] findAllPoseidonYmlFiles :: FilePath -> IO [FilePath] -findAllPoseidonYmlFiles FilePath -baseDir = do - [FilePath] -entries <- FilePath -> IO [FilePath] +findAllPoseidonYmlFiles FilePath +baseDir = do + [FilePath] +entries <- FilePath -> IO [FilePath] listDirectory FilePath -baseDir - let posFiles :: [FilePath] -posFiles = forall a b. (a -> b) -> [a] -> [b] +baseDir + let posFiles :: [FilePath] +posFiles = forall a b. (a -> b) -> [a] -> [b] map (FilePath -baseDir FilePath -> ShowS +baseDir FilePath -> ShowS </>) forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] filter (forall a. Eq a => a -> a -> Bool @@ -2072,21 +1966,21 @@ $ forall a b. (a -> b) -> [a] -> [b] map ShowS takeFileName [FilePath] -entries - [FilePath] -subDirs <- forall (m :: * -> *) a. +entries + [FilePath] +subDirs <- forall (m :: * -> *) a. Applicative m => (a -> m Bool) -> [a] -> m [a] filterM FilePath -> IO Bool doesDirectoryExist forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] map (FilePath -baseDir FilePath -> ShowS +baseDir FilePath -> ShowS </>) forall a b. (a -> b) -> a -> b $ [FilePath] -entries - [FilePath] -morePosFiles <- forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b +entries + [FilePath] +morePosFiles <- forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) (m :: * -> *) a b. @@ -2095,22 +1989,22 @@ mapM FilePath -> IO [FilePath] findAllPoseidonYmlFiles forall a b. (a -> b) -> a -> b $ [FilePath] -subDirs +subDirs forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ [FilePath] -posFiles forall a. [a] -> [a] -> [a] +posFiles forall a. [a] -> [a] -> [a] ++ [FilePath] -morePosFiles +morePosFiles -- | A function to read genotype data jointly from multiple packages -getJointGenotypeData :: MonadSafe m => +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 ()) + -> 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 => @@ -2121,15 +2015,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 <- forall (t :: * -> *) (m :: * -> *) a. +genotypeTuples <- forall (t :: * -> *) (m :: * -> *) a. (Traversable t, Monad m) => t (m a) -> m (t a) sequence [forall (m :: * -> *). @@ -2141,51 +2035,51 @@ 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 = forall a b. (a -> b) -> [a] -> [b] +pac) PlinkPopNameMode +popMode | PoseidonPackage +pac <- [PoseidonPackage] +pacs] + let indEntries :: [[EigenstratIndEntry]] +indEntries = forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> a fst [([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())] -genotypeTuples - jointIndEntries :: [EigenstratIndEntry] -jointIndEntries = forall (t :: * -> *) a. Foldable t => t [a] -> [a] +genotypeTuples + jointIndEntries :: [EigenstratIndEntry] +jointIndEntries = forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [[EigenstratIndEntry]] -indEntries - nrInds :: [Int] -nrInds = forall a b. (a -> b) -> [a] -> [b] +indEntries + nrInds :: [Int] +nrInds = forall a b. (a -> b) -> [a] -> [b] map forall (t :: * -> *) a. Foldable t => t a -> Int length [[EigenstratIndEntry]] -indEntries - pacNames :: [FilePath] -pacNames = forall a b. (a -> b) -> [a] -> [b] +indEntries + pacNames :: [FilePath] +pacNames = forall a b. (a -> b) -> [a] -> [b] map forall a. HasNameAndVersion a => a -> FilePath getPacName [PoseidonPackage] -pacs - prod :: Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] -prod = (forall (m :: * -> *) a r. +pacs + prod :: Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] +prod = (forall (m :: * -> *) a r. Monad m => (a -> a -> Ordering) -> [Producer a m r] -> Producer [Maybe a] m [r] orderedZipAll (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) -> Ordering -compFunc forall b c a. (b -> c) -> (a -> b) -> a -> c +compFunc forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> b snd) [([EigenstratIndEntry], Producer (EigenstratSnpEntry, GenoLine) m ())] -genotypeTuples forall (m :: * -> *) a' a b r c' c. +genotypeTuples 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 >-> forall (m :: * -> *) a r. Functor m => (a -> Bool) -> Pipe a a m r P.filter [Maybe (EigenstratSnpEntry, GenoLine)] -> Bool -filterUnionOrIntersection forall (m :: * -> *) a' a b r c' c. +filterUnionOrIntersection 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 >-> forall (m :: * -> *) r. @@ -2199,32 +2093,32 @@ m r joinEntryPipe LogA -logA [Int] -nrInds [FilePath] -pacNames - Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] -jointProducer <- case Maybe FilePath -maybeSnpFile of +logA [Int] +nrInds [FilePath] +pacNames + Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] +jointProducer <- case Maybe FilePath +maybeSnpFile of Maybe FilePath Nothing -> do 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 = forall (m :: * -> *). +prod + Just FilePath +fn -> do + let snpProd :: Proxy X () () EigenstratSnpEntry m () +snpProd = forall (m :: * -> *). MonadSafe m => FilePath -> Producer EigenstratSnpEntry m () loadBimOrSnpFile FilePath -fn forall (m :: * -> *) a' a b r c' c. +fn 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 >-> forall (m :: * -> *) a r. (MonadIO m, MonadSafe m, Show a) => (a -> a -> Ordering) -> Pipe a a m r orderCheckPipe EigenstratSnpEntry -> EigenstratSnpEntry -> Ordering -compFunc3 +compFunc3 forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ (forall (m :: * -> *) a b r1 r2. @@ -2234,9 +2128,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 forall (m :: * -> *) a b. Monad m => m a -> m b -> m b +compFunc2 Proxy X () () EigenstratSnpEntry m () +snpProd Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] +prod forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> forall (m :: * -> *) a. Monad m => a -> m a return [()]) forall (m :: * -> *) a' a b r c' c. Functor m => @@ -2249,92 +2143,92 @@ (EigenstratSnpEntry, GenoLine) m r -selectSnps (forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a +selectSnps (forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum [Int] -nrInds) +nrInds) forall (m :: * -> *) a. Monad m => a -> m a return ([EigenstratIndEntry] -jointIndEntries, forall (f :: * -> *) a. Functor f => f a -> f () +jointIndEntries, forall (f :: * -> *) a. Functor f => f a -> f () void Proxy X () () (EigenstratSnpEntry, GenoLine) m [()] -jointProducer) +jointProducer) where - compFunc :: (EigenstratSnpEntry, GenoLine) -> (EigenstratSnpEntry, GenoLine) -> Ordering - compFunc :: (EigenstratSnpEntry, GenoLine) + 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 _, GenoLine _) = 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 _, GenoLine _) = 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 _) = 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 (forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool any 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 @@ -2342,8 +2236,8 @@ (EigenstratSnpEntry, GenoLine) m r -selectSnps Int -n = forall (m :: * -> *) x' x b' b a' c' c. +selectSnps Int +n = forall (m :: * -> *) x' x b' b a' c' c. Functor m => Proxy x' x b' b m a' -> (b -> Proxy x' x c' c m b') -> Proxy x' x c' c m a' @@ -2351,22 +2245,22 @@ cat forall a b. (a -> b) -> a -> b $ \case (Just EigenstratSnpEntry -_, Just (EigenstratSnpEntry -es, GenoLine -gl)) -> forall (m :: * -> *) a x' x. Functor m => a -> Proxy x' x () a m () +_, Just (EigenstratSnpEntry +es, GenoLine +gl)) -> 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) -> forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless Bool -intersect forall a b. (a -> b) -> a -> b +intersect forall a b. (a -> b) -> a -> b $ forall (m :: * -> *) a x' x. Functor m => a -> Proxy x' x () a m () yield (EigenstratSnpEntry -snp, forall a. Int -> a -> Vector a +snp, forall a. Int -> a -> Vector a V.replicate Int -n GenoEntry +n GenoEntry Missing) (Maybe EigenstratSnpEntry, Maybe (EigenstratSnpEntry, GenoLine)) _ -> forall (m :: * -> *) a. Monad m => a -> m a @@ -2374,26 +2268,26 @@ getJointJanno :: [PoseidonPackage] -> JannoRows getJointJanno :: [PoseidonPackage] -> JannoRows -getJointJanno [PoseidonPackage] -pacs = forall a. Monoid a => [a] -> a +getJointJanno [PoseidonPackage] +pacs = forall a. Monoid a => [a] -> a mconcat forall a b. (a -> b) -> a -> b $ forall a b. (a -> b) -> [a] -> [b] map PoseidonPackage -> JannoRows posPacJanno [PoseidonPackage] -pacs +pacs getJannoRowsFromPac :: PoseidonPackage -> [JannoRow] getJannoRowsFromPac :: PoseidonPackage -> [JannoRow] -getJannoRowsFromPac PoseidonPackage -pac = let (JannoRows [JannoRow] -rows) = PoseidonPackage -> JannoRows +getJannoRowsFromPac PoseidonPackage +pac = let (JannoRows [JannoRow] +rows) = PoseidonPackage -> JannoRows posPacJanno PoseidonPackage -pac in [JannoRow] -rows +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 :: (MonadIO m) => LogA -> [Int] -> [String] -> Pipe [Maybe (EigenstratSnpEntry, GenoLine)] (EigenstratSnpEntry, GenoLine) m r joinEntryPipe :: forall (m :: * -> *) r. MonadIO m => LogA @@ -2404,19 +2298,19 @@ (EigenstratSnpEntry, GenoLine) m r -joinEntryPipe LogA -logA [Int] -nrInds [FilePath] -pacNames = forall (m :: * -> *) x' x b' b a' c' c. +joinEntryPipe LogA +logA [Int] +nrInds [FilePath] +pacNames = forall (m :: * -> *) x' x b' b a' c' c. Functor m => Proxy x' x b' b m a' -> (b -> Proxy x' x c' c m b') -> Proxy x' x c' c m a' for forall (m :: * -> *) a r. Functor m => Pipe a a m r cat forall a b. (a -> b) -> a -> b -$ \[Maybe (EigenstratSnpEntry, GenoLine)] -maybeEntries -> do - Either PoseidonException (EigenstratSnpEntry, GenoLine) -eitherJE <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +$ \[Maybe (EigenstratSnpEntry, GenoLine)] +maybeEntries -> do + Either PoseidonException (EigenstratSnpEntry, GenoLine) +eitherJE <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (m :: * -> *) e a. (MonadCatch m, Exception e) => @@ -2430,61 +2324,61 @@ -> [Maybe (EigenstratSnpEntry, GenoLine)] -> m (EigenstratSnpEntry, GenoLine) joinEntries LogA -logA [Int] -nrInds [FilePath] -pacNames [Maybe (EigenstratSnpEntry, GenoLine)] -maybeEntries +logA [Int] +nrInds [FilePath] +pacNames [Maybe (EigenstratSnpEntry, GenoLine)] +maybeEntries case Either PoseidonException (EigenstratSnpEntry, GenoLine) -eitherJE of - Left (PoseidonGenotypeException FilePath -err) -> +eitherJE of + Left (PoseidonGenotypeException FilePath +err) -> forall (m :: * -> *). MonadIO m => LogA -> PoseidonIO () -> m () logWithEnv LogA -logA forall b c a. (b -> c) -> (a -> b) -> a -> c +logA forall b c a. (b -> c) -> (a -> b) -> a -> c . FilePath -> PoseidonIO () logDebug forall a b. (a -> b) -> a -> b $ FilePath "Skipping SNP due to " forall a. [a] -> [a] -> [a] ++ FilePath -err - Left PoseidonException -e -> forall (m :: * -> *) a. MonadIO m => IO a -> m a +err + Left PoseidonException +e -> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c . forall e a. Exception e => e -> IO a throwIO forall a b. (a -> b) -> a -> b $ PoseidonException -e - Right (EigenstratSnpEntry -eigenstratSnpEntry, GenoLine -genoLine) -> forall (m :: * -> *) a x' x. Functor m => a -> Proxy x' x () a m () +e + Right (EigenstratSnpEntry +eigenstratSnpEntry, GenoLine +genoLine) -> forall (m :: * -> *) a x' x. Functor m => a -> Proxy x' x () a m () yield (EigenstratSnpEntry -eigenstratSnpEntry, GenoLine -genoLine) +eigenstratSnpEntry, GenoLine +genoLine) -loadBimOrSnpFile :: (MonadSafe m) => FilePath -> Producer EigenstratSnpEntry m () +loadBimOrSnpFile :: (MonadSafe m) => FilePath -> Producer EigenstratSnpEntry m () loadBimOrSnpFile :: forall (m :: * -> *). MonadSafe m => FilePath -> Producer EigenstratSnpEntry m () -loadBimOrSnpFile FilePath -fn +loadBimOrSnpFile FilePath +fn | ShowS takeExtension FilePath -fn forall a. Eq a => a -> a -> Bool +fn forall a. Eq a => a -> a -> Bool == FilePath ".snp" = forall (m :: * -> *). MonadSafe m => FilePath -> Producer EigenstratSnpEntry m () readEigenstratSnpFile FilePath -fn +fn | ShowS takeExtension FilePath -fn forall a. Eq a => a -> a -> Bool +fn forall a. Eq a => a -> a -> Bool == FilePath ".bim" = forall (m :: * -> *). MonadSafe m => FilePath -> Producer EigenstratSnpEntry m () readBimFile FilePath -fn +fn | Bool otherwise = forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM (FilePath -> PoseidonException @@ -2494,21 +2388,21 @@ -- | 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_) = +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 +baseDir , posPacPoseidonVersion :: Version posPacPoseidonVersion = PoseidonVersion -> Version asVersion PoseidonVersion @@ -2516,7 +2410,7 @@ , posPacNameAndVersion :: PacNameAndVersion posPacNameAndVersion = FilePath -> Maybe Version -> PacNameAndVersion PacNameAndVersion FilePath -name forall a. Maybe a +name forall a. Maybe a Nothing , posPacDescription :: Maybe FilePath posPacDescription = forall a. Maybe a @@ -2537,17 +2431,17 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -format_ (ShowS +format_ (ShowS takeFileName FilePath -geno) forall a. Maybe a +geno) forall a. Maybe a Nothing (ShowS takeFileName FilePath -snp) forall a. Maybe a +snp) forall a. Maybe a Nothing (ShowS takeFileName FilePath -ind) forall a. Maybe a +ind) forall a. Maybe a Nothing Maybe SNPSetSpec -snpSet_ +snpSet_ , posPacJannoFile :: Maybe FilePath posPacJannoFile = forall a. Maybe a Nothing @@ -2584,35 +2478,35 @@ makePseudoPackageFromGenotypeData :: GenotypeDataSpec -> PoseidonIO PoseidonPackage makePseudoPackageFromGenotypeData :: GenotypeDataSpec -> PoseidonIO 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 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 @@ -2622,23 +2516,23 @@ -> Maybe SNPSetSpec -> GenotypeDataSpec GenotypeDataSpec GenotypeFormatSpec -format_ FilePath -outGeno forall a. Maybe a +format_ FilePath +outGeno forall a. Maybe a Nothing FilePath -outSnp forall a. Maybe a +outSnp forall a. Maybe a Nothing FilePath -outInd forall a. Maybe a +outInd 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 +baseDir GenotypeDataSpec +genotypeData FilePath -> FilePath -> GenotypeDataSpec @@ -2647,49 +2541,49 @@ -> BibTeX -> PoseidonIO PoseidonPackage newPackageTemplate FilePath -baseDir FilePath -pacName GenotypeDataSpec -genotypeData (forall a. a -> Maybe a +baseDir FilePath +pacName GenotypeDataSpec +genotypeData (forall a. a -> Maybe a Just (forall a b. a -> Either a b Left [EigenstratIndEntry] -inds)) forall a. Monoid a => a +inds)) 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 + 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_ +indFile_ in if FilePath -baseDirGeno forall a. Eq a => a -> a -> Bool +baseDirGeno forall a. Eq a => a -> a -> Bool == FilePath -baseDirSnp Bool -> Bool -> Bool +baseDirSnp Bool -> Bool -> Bool && FilePath -baseDirSnp forall a. Eq a => a -> a -> Bool +baseDirSnp forall a. Eq a => a -> a -> Bool == FilePath -baseDirInd +baseDirInd then FilePath -baseDirGeno +baseDirGeno else forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a throwM forall a b. (a -> b) -> a -> b $ FilePath -> FilePath -> FilePath -> PoseidonException PoseidonUnequalBaseDirException FilePath -g FilePath -s FilePath -i +g FilePath +s FilePath +i dummyContributor :: ContributorSpec dummyContributor :: ContributorSpec @@ -2726,27 +2620,27 @@ -> SeqSourceRows -> BibTeX -> PoseidonIO 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 _) <- 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 { +baseDir FilePath +name GenotypeDataSpec +genoData + fluffedUpTemplate :: PoseidonPackage +fluffedUpTemplate = PoseidonPackage +minimalTemplate { posPacDescription :: Maybe FilePath posPacDescription = forall a. a -> Maybe a Just FilePath @@ -2757,7 +2651,7 @@ , posPacNameAndVersion :: PacNameAndVersion posPacNameAndVersion = FilePath -> Maybe Version -> PacNameAndVersion PacNameAndVersion FilePath -name (forall a. a -> Maybe a +name (forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ [Int] -> Version makeVersion [Int @@ -2767,145 +2661,145 @@ , posPacLastModified :: Maybe Day posPacLastModified = forall a. a -> Maybe a Just Day -today +today } - jannoFilledTemplate :: PoseidonPackage -jannoFilledTemplate = FilePath + 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 +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 forall (m :: * -> *) a. Monad m => a -> m a return PoseidonPackage -bibFilledTemplate +bibFilledTemplate where - completeJannoSpec :: FilePath + 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 = +Nothing PoseidonPackage +inTemplate = PoseidonPackage +inTemplate + completeJannoSpec FilePath +name_ (Just (Left [EigenstratIndEntry] +a)) PoseidonPackage +inTemplate = PoseidonPackage -inTemplate { +inTemplate { posPacJannoFile :: Maybe FilePath posPacJannoFile = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ FilePath -name_ forall a. [a] -> [a] -> [a] +name_ forall a. [a] -> [a] -> [a] ++ FilePath ".janno", posPacJanno :: JannoRows posPacJanno = [EigenstratIndEntry] -> JannoRows createMinimalJanno [EigenstratIndEntry] -a +a } - completeJannoSpec FilePath -name_ (Just (Right JannoRows -b)) PoseidonPackage -inTemplate = + completeJannoSpec FilePath +name_ (Just (Right JannoRows +b)) PoseidonPackage +inTemplate = PoseidonPackage -inTemplate { +inTemplate { posPacJannoFile :: Maybe FilePath posPacJannoFile = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ FilePath -name_ forall a. [a] -> [a] -> [a] +name_ forall a. [a] -> [a] -> [a] ++ FilePath ".janno", posPacJanno :: JannoRows posPacJanno = JannoRows -b +b } - completeSeqSourceSpec :: FilePath -> SeqSourceRows -> PoseidonPackage -> PoseidonPackage -completeSeqSourceSpec FilePath -_ (SeqSourceRows []) PoseidonPackage -inTemplate = PoseidonPackage -inTemplate - completeSeqSourceSpec FilePath -name_ SeqSourceRows -xs PoseidonPackage -inTemplate = + completeSeqSourceSpec :: FilePath -> SeqSourceRows -> PoseidonPackage -> PoseidonPackage +completeSeqSourceSpec FilePath +_ (SeqSourceRows []) PoseidonPackage +inTemplate = PoseidonPackage +inTemplate + completeSeqSourceSpec FilePath +name_ SeqSourceRows +xs PoseidonPackage +inTemplate = PoseidonPackage -inTemplate { +inTemplate { posPacSeqSourceFile :: Maybe FilePath posPacSeqSourceFile = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ FilePath -name_ forall a. [a] -> [a] -> [a] +name_ forall a. [a] -> [a] -> [a] ++ FilePath ".ssf", posPacSeqSource :: SeqSourceRows posPacSeqSource = SeqSourceRows -xs +xs } - completeBibSpec :: FilePath -> BibTeX -> PoseidonPackage -> PoseidonPackage -completeBibSpec FilePath -_ [] PoseidonPackage -inTemplate = PoseidonPackage -inTemplate - completeBibSpec FilePath -name_ BibTeX -xs PoseidonPackage -inTemplate = + completeBibSpec :: FilePath -> BibTeX -> PoseidonPackage -> PoseidonPackage +completeBibSpec FilePath +_ [] PoseidonPackage +inTemplate = PoseidonPackage +inTemplate + completeBibSpec FilePath +name_ BibTeX +xs PoseidonPackage +inTemplate = PoseidonPackage -inTemplate { +inTemplate { posPacBibFile :: Maybe FilePath posPacBibFile = forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ FilePath -name_ forall a. [a] -> [a] -> [a] +name_ forall a. [a] -> [a] -> [a] ++ FilePath ".bib", posPacBib :: BibTeX posPacBib = BibTeX -xs +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 +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] @@ -2922,58 +2816,58 @@ -> Maybe FilePath -> PoseidonYamlStruct PoseidonYamlStruct Version -ver (forall a. HasNameAndVersion a => a -> FilePath +ver (forall a. HasNameAndVersion a => a -> FilePath getPacName PacNameAndVersion -nameAndVer) Maybe FilePath -des [ContributorSpec] -con (forall a. HasNameAndVersion a => a -> Maybe Version +nameAndVer) Maybe FilePath +des [ContributorSpec] +con (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 () B.writeFile FilePath -outF forall a b. NFData a => (a -> b) -> a -> b +outF forall a b. NFData a => (a -> b) -> a -> b $!! forall a. ToJSON a => Config -> a -> ByteString encodePretty Config -opts PoseidonYamlStruct -yamlPac +opts PoseidonYamlStruct +yamlPac where - opts :: Config -opts = Bool -> Config -> Config + opts :: Config +opts = Bool -> Config -> Config setConfDropNull Bool True forall a b. (a -> b) -> a -> b $ (Text -> Text -> Ordering) -> Config -> Config setConfCompare (forall a. Ord a => a -> a -> Ordering compare 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 = forall a. a -> Maybe a -> a + fieldIndex :: Text -> Int +fieldIndex Text +s = forall a. a -> Maybe a -> a fromMaybe (forall (t :: * -> *) a. Foldable t => t a -> Int length [Text] -fields) forall a b. (a -> b) -> a -> b +fields) forall a b. (a -> b) -> a -> b $ Text -s forall a. Eq a => a -> [a] -> Maybe Int +s forall a. Eq a => a -> [a] -> Maybe Int `elemIndex` [Text] -fields - fields :: [Text] -fields = [ +fields + fields :: [Text] +fields = [ Text "poseidonVersion", Text @@ -3028,84 +2922,84 @@ "changelogFile" ] -packagesToPackageInfos :: (MonadThrow m) => [PoseidonPackage] -> m [PackageInfo] +packagesToPackageInfos :: (MonadThrow m) => [PoseidonPackage] -> m [PackageInfo] packagesToPackageInfos :: forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> m [PackageInfo] -packagesToPackageInfos [PoseidonPackage] -pacs = do +packagesToPackageInfos [PoseidonPackage] +pacs = do forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b) forM [PoseidonPackage] -pacs forall a b. (a -> b) -> a -> b -$ \PoseidonPackage -pac -> do - Bool -isLatest <- forall (m :: * -> *) a. +pacs forall a b. (a -> b) -> a -> b +$ \PoseidonPackage +pac -> do + Bool +isLatest <- forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [PoseidonPackage] -pacs PoseidonPackage -pac +pacs PoseidonPackage +pac forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ PackageInfo { pPac :: PacNameAndVersion pPac = PoseidonPackage -> PacNameAndVersion posPacNameAndVersion PoseidonPackage -pac, +pac, pIsLatest :: Bool pIsLatest = Bool -isLatest, +isLatest, pPosVersion :: Version pPosVersion = PoseidonPackage -> Version posPacPoseidonVersion PoseidonPackage -pac, +pac, pDescription :: Maybe FilePath pDescription = PoseidonPackage -> Maybe FilePath posPacDescription PoseidonPackage -pac, +pac, pLastModified :: Maybe Day pLastModified = PoseidonPackage -> Maybe Day posPacLastModified PoseidonPackage -pac, +pac, pNrIndividuals :: Int pNrIndividuals = (forall (t :: * -> *) a. Foldable t => t a -> Int length forall b c a. (b -> c) -> (a -> b) -> a -> c . PoseidonPackage -> [JannoRow] getJannoRowsFromPac) PoseidonPackage -pac +pac } -getAllGroupInfo :: (MonadThrow m) => [PoseidonPackage] -> m [GroupInfo] +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 :: [(FilePath, PacNameAndVersion)] +individualInfoUnnested = do + PoseidonPackage +pac <- [PoseidonPackage] +packages + JannoRow +jannoRow <- PoseidonPackage -> [JannoRow] getJannoRowsFromPac PoseidonPackage -pac - let groups :: [FilePath] -groups = forall a. JannoList a -> [a] +pac + let groups :: [FilePath] +groups = forall a. JannoList a -> [a] getJannoList forall b c a. (b -> c) -> (a -> b) -> a -> c . JannoRow -> JannoStringList jGroupName forall a b. (a -> b) -> a -> b $ JannoRow -jannoRow +jannoRow [(FilePath -g, forall a. HasNameAndVersion a => a -> PacNameAndVersion +g, forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion PoseidonPackage -pac) | FilePath -g <- [FilePath] -groups] +pac) | FilePath +g <- [FilePath] +groups] -- loop over pairs of groups and pacNames forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Monad m) => @@ -3114,126 +3008,126 @@ group forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Ord a => [a] -> [a] sort) [(FilePath, PacNameAndVersion)] -individualInfoUnnested) forall a b. (a -> b) -> a -> b -$ \[(FilePath, PacNameAndVersion)] -group_ -> do - let groupName :: FilePath -groupName = forall a. [a] -> a +individualInfoUnnested) forall a b. (a -> b) -> a -> b +$ \[(FilePath, PacNameAndVersion)] +group_ -> do + let groupName :: FilePath +groupName = forall a. [a] -> a head forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> a fst forall a b. (a -> b) -> a -> b $ [(FilePath, PacNameAndVersion)] -group_ - groupPac :: PacNameAndVersion -groupPac = forall a. [a] -> a +group_ + groupPac :: PacNameAndVersion +groupPac = forall a. [a] -> a head forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a -> b) -> [a] -> [b] map forall a b. (a, b) -> b snd forall a b. (a -> b) -> a -> b $ [(FilePath, PacNameAndVersion)] -group_ - groupNrInds :: Int -groupNrInds = forall (t :: * -> *) a. Foldable t => t a -> Int +group_ + groupNrInds :: Int +groupNrInds = forall (t :: * -> *) a. Foldable t => t a -> Int length [(FilePath, PacNameAndVersion)] -group_ - Bool -isLatest <- forall (m :: * -> *) a. +group_ + Bool +isLatest <- forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection (forall a b. (a -> b) -> [a] -> [b] map forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion [PoseidonPackage] -packages) PacNameAndVersion -groupPac +packages) PacNameAndVersion +groupPac forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ FilePath -> PacNameAndVersion -> Bool -> Int -> GroupInfo GroupInfo FilePath -groupName PacNameAndVersion -groupPac Bool -isLatest Int -groupNrInds +groupName PacNameAndVersion +groupPac Bool +isLatest Int +groupNrInds getJointIndividualInfo :: [PoseidonPackage] -> [IndividualInfo] getJointIndividualInfo :: [PoseidonPackage] -> [IndividualInfo] -getJointIndividualInfo [PoseidonPackage] -packages = do - PoseidonPackage -pac <- [PoseidonPackage] -packages - JannoRow -jannoRow <- PoseidonPackage -> [JannoRow] +getJointIndividualInfo [PoseidonPackage] +packages = do + PoseidonPackage +pac <- [PoseidonPackage] +packages + JannoRow +jannoRow <- PoseidonPackage -> [JannoRow] getJannoRowsFromPac PoseidonPackage -pac +pac forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ FilePath -> [FilePath] -> PacNameAndVersion -> IndividualInfo IndividualInfo (JannoRow -> FilePath jPoseidonID JannoRow -jannoRow) +jannoRow) ((forall a. JannoList a -> [a] getJannoList forall b c a. (b -> c) -> (a -> b) -> a -> c . JannoRow -> JannoStringList jGroupName) JannoRow -jannoRow) +jannoRow) (forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion PoseidonPackage -pac) +pac) -getExtendedIndividualInfo :: (MonadThrow m) => [PoseidonPackage] -> [String] -> m [ExtendedIndividualInfo] +getExtendedIndividualInfo :: (MonadThrow m) => [PoseidonPackage] -> [String] -> m [ExtendedIndividualInfo] getExtendedIndividualInfo :: forall (m :: * -> *). MonadThrow m => [PoseidonPackage] -> [FilePath] -> m [ExtendedIndividualInfo] -getExtendedIndividualInfo [PoseidonPackage] -allPackages [FilePath] -additionalJannoColumns = forall (t :: * -> *) (m :: * -> *) a. +getExtendedIndividualInfo [PoseidonPackage] +allPackages [FilePath] +additionalJannoColumns = forall (t :: * -> *) (m :: * -> *) a. (Traversable t, Monad m) => t (m a) -> m (t a) sequence 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 = forall a. JannoList a -> [a] +jannoRow + groups :: [FilePath] +groups = forall a. JannoList a -> [a] getJannoList forall b c a. (b -> c) -> (a -> b) -> a -> c . JannoRow -> JannoStringList jGroupName forall a b. (a -> b) -> a -> b $ JannoRow -jannoRow - additionalColumnEntries :: [(FilePath, Maybe FilePath)] -additionalColumnEntries = case [FilePath] -additionalJannoColumns of +jannoRow + additionalColumnEntries :: [(FilePath, Maybe FilePath)] +additionalColumnEntries = case [FilePath] +additionalJannoColumns of [] -> [] - [FilePath] -colNames -> [(FilePath -k, ByteString -> FilePath + [FilePath] +colNames -> [(FilePath +k, ByteString -> FilePath BSC.unpack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. ToNamedRecord a => a -> NamedRecord toNamedRecord JannoRow -jannoRow forall k v. (Eq k, Hashable k) => HashMap k v -> k -> Maybe v +jannoRow 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 <- forall (m :: * -> *) a. +k) | FilePath +k <- [FilePath] +colNames] + Bool +isLatest <- forall (m :: * -> *) a. (MonadThrow m, HasNameAndVersion a) => [a] -> a -> m Bool isLatestInCollection [PoseidonPackage] -allPackages PoseidonPackage -pac -- this lives in monad m +allPackages PoseidonPackage +pac -- this lives in monad m -- double-return for m and then list. forall (m :: * -> *) a. Monad m => a -> m a return forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -3246,37 +3140,37 @@ -> [(FilePath, Maybe FilePath)] -> ExtendedIndividualInfo ExtendedIndividualInfo FilePath -name [FilePath] -groups (forall a. HasNameAndVersion a => a -> PacNameAndVersion +name [FilePath] +groups (forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion PoseidonPackage -pac) Bool -isLatest [(FilePath, Maybe FilePath)] -additionalColumnEntries +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 :: (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 - [PacNameAndVersion] -relevantPacs <- forall (m :: * -> *) a. +filterToRelevantPackages [a] +entities [PoseidonPackage] +packages = do + [PacNameAndVersion] +relevantPacs <- forall (m :: * -> *) a. (MonadThrow m, EntitySpec a) => [a] -> [IndividualInfo] -> m [PacNameAndVersion] determineRelevantPackages [a] -entities ([PoseidonPackage] -> [IndividualInfo] +entities ([PoseidonPackage] -> [IndividualInfo] getJointIndividualInfo [PoseidonPackage] -packages) +packages) forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ forall a. (a -> Bool) -> [a] -> [a] -filter (\PoseidonPackage -p -> forall a. HasNameAndVersion a => a -> PacNameAndVersion +filter (\PoseidonPackage +p -> forall a. HasNameAndVersion a => a -> PacNameAndVersion makePacNameAndVersion PoseidonPackage -p forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool +p forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [PacNameAndVersion] -relevantPacs) [PoseidonPackage] -packages +relevantPacs) [PoseidonPackage] +packages \ No newline at end of file diff --git a/src/Poseidon.PoseidonVersion.html b/src/Poseidon.PoseidonVersion.html index 2c2058c2..a946cfc7 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 forall a. @@ -20,13 +20,13 @@ $cshow :: PoseidonVersion -> String showsPrec :: Int -> PoseidonVersion -> ShowS $cshowsPrec :: Int -> PoseidonVersion -> ShowS -Show, PoseidonVersion -> PoseidonVersion -> Bool +Show, PoseidonVersion -> PoseidonVersion -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: PoseidonVersion -> PoseidonVersion -> Bool $c/= :: PoseidonVersion -> PoseidonVersion -> Bool == :: PoseidonVersion -> PoseidonVersion -> Bool $c== :: PoseidonVersion -> PoseidonVersion -> Bool -Eq, Eq PoseidonVersion +Eq, Eq PoseidonVersion PoseidonVersion -> PoseidonVersion -> Bool PoseidonVersion -> PoseidonVersion -> Ordering PoseidonVersion -> PoseidonVersion -> PoseidonVersion @@ -84,16 +84,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 c1128f13..2ef6875a 100644 --- a/src/Poseidon.SequencingSource.html +++ b/src/Poseidon.SequencingSource.html @@ -1,4 +1,4 @@ -
{-# LANGUAGE DeriveGeneric       #-}
+
{-# LANGUAGE DeriveGeneric       #-}
 {-# LANGUAGE OverloadedStrings   #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
@@ -41,17 +41,17 @@
 import           GHC.Generics               (Generic)
 
 -- |A datatype to represent UDG in a ssf file
-data SSFUDG =
+data SSFUDG =
       SSFMinus
     | SSFHalf
     | SSFPlus
-    deriving (SSFUDG -> SSFUDG -> Bool
+    deriving (SSFUDG -> SSFUDG -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: SSFUDG -> SSFUDG -> Bool
 $c/= :: SSFUDG -> SSFUDG -> Bool
 == :: SSFUDG -> SSFUDG -> Bool
 $c== :: SSFUDG -> SSFUDG -> Bool
-Eq, Eq SSFUDG
+Eq, Eq SSFUDG
 SSFUDG -> SSFUDG -> Bool
 SSFUDG -> SSFUDG -> Ordering
 SSFUDG -> SSFUDG -> SSFUDG
@@ -85,7 +85,7 @@
 (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
 $cto :: forall x. Rep SSFUDG x -> SSFUDG
 $cfrom :: forall x. SSFUDG -> Rep SSFUDG x
-Generic, Int -> SSFUDG
+Generic, Int -> SSFUDG
 SSFUDG -> Int
 SSFUDG -> [SSFUDG]
 SSFUDG -> SSFUDG
@@ -117,7 +117,7 @@
 $cpred :: SSFUDG -> SSFUDG
 succ :: SSFUDG -> SSFUDG
 $csucc :: SSFUDG -> SSFUDG
-Enum, SSFUDG
+Enum, SSFUDG
 forall a. a -> a -> Bounded a
 maxBound :: SSFUDG
 $cmaxBound :: SSFUDG
@@ -125,8 +125,8 @@
 $cminBound :: SSFUDG
 Bounded)
 
-instance Show SSFUDG where
-    show :: SSFUDG -> String
+instance Show SSFUDG where
+    show :: SSFUDG -> String
 show SSFUDG
 SSFMinus = String
 "minus"
@@ -137,24 +137,24 @@
 SSFPlus  = String
 "plus"
 
-makeSSFUDG :: MonadFail m => String -> m SSFUDG
+makeSSFUDG :: MonadFail m => String -> m SSFUDG
 makeSSFUDG :: forall (m :: * -> *). MonadFail m => String -> m SSFUDG
-makeSSFUDG String
-x
+makeSSFUDG String
+x
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "minus" = forall (f :: * -> *) a. Applicative f => a -> f a
 pure SSFUDG
 SSFMinus
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "half"  = forall (f :: * -> *) a. Applicative f => a -> f a
 pure SSFUDG
 SSFHalf
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "plus"  = forall (f :: * -> *) a. Applicative f => a -> f a
 pure SSFUDG
@@ -166,38 +166,38 @@
 "UDG " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not in [minus, half, plus]"
 
 instance Csv.ToField SSFUDG where
-    toField :: SSFUDG -> ByteString
-toField SSFUDG
-x = forall a. ToField a => a -> ByteString
+    toField :: SSFUDG -> ByteString
+toField SSFUDG
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show SSFUDG
-x
+x
 instance Csv.FromField SSFUDG where
-    parseField :: ByteString -> Parser SSFUDG
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser SSFUDG
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m SSFUDG
 makeSSFUDG
-instance ToJSON SSFUDG where
-    toEncoding :: SSFUDG -> Encoding
-toEncoding SSFUDG
-x = forall a. Text -> Encoding' a
+instance ToJSON SSFUDG where
+    toEncoding :: SSFUDG -> Encoding
+toEncoding SSFUDG
+x = forall a. Text -> Encoding' a
 text forall a b. (a -> b) -> a -> b
 $ String -> Text
 T.pack forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show SSFUDG
-x
-instance FromJSON SSFUDG where
-    parseJSON :: Value -> Parser SSFUDG
+x
+instance FromJSON SSFUDG where
+    parseJSON :: Value -> Parser SSFUDG
 parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
 withText String
 "SSFUDG" (forall (m :: * -> *). MonadFail m => String -> m SSFUDG
@@ -206,16 +206,16 @@
 T.unpack)
 
 -- |A datatype to represent Library_Built in a janno file
-data SSFLibraryBuilt =
+data SSFLibraryBuilt =
       SSFDS
     | SSFSS
-    deriving (SSFLibraryBuilt -> SSFLibraryBuilt -> Bool
+    deriving (SSFLibraryBuilt -> SSFLibraryBuilt -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: SSFLibraryBuilt -> SSFLibraryBuilt -> Bool
 $c/= :: SSFLibraryBuilt -> SSFLibraryBuilt -> Bool
 == :: SSFLibraryBuilt -> SSFLibraryBuilt -> Bool
 $c== :: SSFLibraryBuilt -> SSFLibraryBuilt -> Bool
-Eq, Eq SSFLibraryBuilt
+Eq, Eq SSFLibraryBuilt
 SSFLibraryBuilt -> SSFLibraryBuilt -> Bool
 SSFLibraryBuilt -> SSFLibraryBuilt -> Ordering
 SSFLibraryBuilt -> SSFLibraryBuilt -> SSFLibraryBuilt
@@ -249,7 +249,7 @@
 (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
 $cto :: forall x. Rep SSFLibraryBuilt x -> SSFLibraryBuilt
 $cfrom :: forall x. SSFLibraryBuilt -> Rep SSFLibraryBuilt x
-Generic, Int -> SSFLibraryBuilt
+Generic, Int -> SSFLibraryBuilt
 SSFLibraryBuilt -> Int
 SSFLibraryBuilt -> [SSFLibraryBuilt]
 SSFLibraryBuilt -> SSFLibraryBuilt
@@ -284,7 +284,7 @@
 $cpred :: SSFLibraryBuilt -> SSFLibraryBuilt
 succ :: SSFLibraryBuilt -> SSFLibraryBuilt
 $csucc :: SSFLibraryBuilt -> SSFLibraryBuilt
-Enum, SSFLibraryBuilt
+Enum, SSFLibraryBuilt
 forall a. a -> a -> Bounded a
 maxBound :: SSFLibraryBuilt
 $cmaxBound :: SSFLibraryBuilt
@@ -292,27 +292,27 @@
 $cminBound :: SSFLibraryBuilt
 Bounded)
 
-instance Show SSFLibraryBuilt where
-    show :: SSFLibraryBuilt -> String
-show SSFLibraryBuilt
+instance Show SSFLibraryBuilt where
+    show :: SSFLibraryBuilt -> String
+show SSFLibraryBuilt
 SSFDS = String
 "ds"
     show SSFLibraryBuilt
 SSFSS = String
 "ss"
 
-makeSSFLibraryBuilt :: MonadFail m => String -> m SSFLibraryBuilt
+makeSSFLibraryBuilt :: MonadFail m => String -> m SSFLibraryBuilt
 makeSSFLibraryBuilt :: forall (m :: * -> *). MonadFail m => String -> m SSFLibraryBuilt
-makeSSFLibraryBuilt String
-x
+makeSSFLibraryBuilt String
+x
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "ds"    = forall (f :: * -> *) a. Applicative f => a -> f a
 pure SSFLibraryBuilt
 SSFDS
     | String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == String
 "ss"    = forall (f :: * -> *) a. Applicative f => a -> f a
 pure SSFLibraryBuilt
@@ -324,39 +324,39 @@
 "Library_Built " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not in [ds, ss]"
 
 instance Csv.ToField SSFLibraryBuilt where
-    toField :: SSFLibraryBuilt -> ByteString
-toField SSFLibraryBuilt
-x = forall a. ToField a => a -> ByteString
+    toField :: SSFLibraryBuilt -> ByteString
+toField SSFLibraryBuilt
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show SSFLibraryBuilt
-x
+x
 instance Csv.FromField SSFLibraryBuilt where
-    parseField :: ByteString -> Parser SSFLibraryBuilt
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser SSFLibraryBuilt
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m SSFLibraryBuilt
 makeSSFLibraryBuilt
-instance ToJSON SSFLibraryBuilt where
-    toEncoding :: SSFLibraryBuilt -> Encoding
-toEncoding SSFLibraryBuilt
-x = forall a. Text -> Encoding' a
+instance ToJSON SSFLibraryBuilt where
+    toEncoding :: SSFLibraryBuilt -> Encoding
+toEncoding SSFLibraryBuilt
+x = forall a. Text -> Encoding' a
 text forall a b. (a -> b) -> a -> b
 $ String -> Text
 T.pack forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show SSFLibraryBuilt
-x
-instance FromJSON SSFLibraryBuilt where
-    parseJSON :: Value -> Parser SSFLibraryBuilt
-parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
+x
+instance FromJSON SSFLibraryBuilt where
+    parseJSON :: Value -> Parser SSFLibraryBuilt
+parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
 withText String
 "SSFLibraryBuilt" (forall (m :: * -> *). MonadFail m => String -> m SSFLibraryBuilt
 makeSSFLibraryBuilt forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -364,9 +364,9 @@
 T.unpack)
 
 -- | A data type to represent a seqSourceFile
-newtype SeqSourceRows = SeqSourceRows {SeqSourceRows -> [SeqSourceRow]
+newtype SeqSourceRows = SeqSourceRows {SeqSourceRows -> [SeqSourceRow]
 getSeqSourceRowList :: [SeqSourceRow]}
-    deriving (Int -> SeqSourceRows -> ShowS
+    deriving (Int -> SeqSourceRows -> ShowS
 [SeqSourceRows] -> ShowS
 SeqSourceRows -> String
 forall a.
@@ -377,7 +377,7 @@
 $cshow :: SeqSourceRows -> String
 showsPrec :: Int -> SeqSourceRows -> ShowS
 $cshowsPrec :: Int -> SeqSourceRows -> ShowS
-Show, SeqSourceRows -> SeqSourceRows -> Bool
+Show, SeqSourceRows -> SeqSourceRows -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: SeqSourceRows -> SeqSourceRows -> Bool
 $c/= :: SeqSourceRows -> SeqSourceRows -> Bool
@@ -391,87 +391,87 @@
 $cfrom :: forall x. SeqSourceRows -> Rep SeqSourceRows x
 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 forall a b. (a -> b) -> a -> b
 $ [SeqSourceRow]
-j1 [SeqSourceRow] -> [SeqSourceRow] -> [SeqSourceRow]
-`combineTwoSeqSources` [SeqSourceRow]
-j2
+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 forall a. [a] -> [a] -> [a]
+        combineTwoSeqSources :: [SeqSourceRow] -> [SeqSourceRow] -> [SeqSourceRow]
+        combineTwoSeqSources :: [SeqSourceRow] -> [SeqSourceRow] -> [SeqSourceRow]
+combineTwoSeqSources [SeqSourceRow]
+seqSource1 [SeqSourceRow]
+seqSource2 =
+            let simpleSeqSourceSum :: [SeqSourceRow]
+simpleSeqSourceSum = [SeqSourceRow]
+seqSource1 forall a. [a] -> [a] -> [a]
 ++ [SeqSourceRow]
-seqSource2
-                toAddColNames :: [ByteString]
-toAddColNames = forall k v. HashMap k v -> [k]
+seqSource2
+                toAddColNames :: [ByteString]
+toAddColNames = forall k v. HashMap k v -> [k]
 HM.keys (forall k v. (Eq k, Hashable k) => [HashMap k v] -> HashMap k v
 HM.unions (forall a b. (a -> b) -> [a] -> [b]
 map (CsvNamedRecord -> HashMap ByteString ByteString
 getCsvNR forall b c a. (b -> c) -> (a -> b) -> a -> c
 . SeqSourceRow -> CsvNamedRecord
 sAdditionalColumns) [SeqSourceRow]
-simpleSeqSourceSum))
-                toAddEmptyCols :: HashMap ByteString ByteString
-toAddEmptyCols = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
+simpleSeqSourceSum))
+                toAddEmptyCols :: HashMap ByteString ByteString
+toAddEmptyCols = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
 HM.fromList (forall a b. (a -> b) -> [a] -> [b]
-map (\ByteString
-k -> (ByteString
-k, ByteString
+map (\ByteString
+k -> (ByteString
+k, ByteString
 "n/a")) [ByteString]
-toAddColNames)
+toAddColNames)
             in 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 =
+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
+x { sAdditionalColumns :: CsvNamedRecord
 sAdditionalColumns = HashMap ByteString ByteString -> CsvNamedRecord
 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 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 = forall k v.
+fillAddCols HashMap ByteString ByteString
+toAdd HashMap ByteString ByteString
+cur = 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 forall k v w.
+cur (HashMap ByteString ByteString
+toAdd forall k v w.
 (Eq k, Hashable k) =>
 HashMap k v -> HashMap k w -> HashMap k v
 `HM.difference` HashMap ByteString ByteString
-cur)
+cur)
 
-instance Monoid SeqSourceRows where
-    mempty :: SeqSourceRows
+instance Monoid SeqSourceRows where
+    mempty :: SeqSourceRows
 mempty = [SeqSourceRow] -> SeqSourceRows
 SeqSourceRows []
-    mconcat :: [SeqSourceRows] -> SeqSourceRows
+    mconcat :: [SeqSourceRows] -> SeqSourceRows
 mconcat = forall (t :: * -> *) b a.
 Foldable t =>
 (b -> a -> b) -> b -> t a -> b
@@ -479,19 +479,19 @@
 mappend forall a. Monoid a => a
 mempty
 
-instance ToJSON SeqSourceRows where
-    toEncoding :: SeqSourceRows -> Encoding
-toEncoding = forall a.
+instance ToJSON SeqSourceRows where
+    toEncoding :: SeqSourceRows -> Encoding
+toEncoding = forall a.
 (Generic a, GToJSON' Encoding Zero (Rep a)) =>
 Options -> a -> Encoding
 genericToEncoding Options
 defaultOptions
-instance FromJSON SeqSourceRows
+instance FromJSON SeqSourceRows
 
 -- A data type to represent a run accession ID
-newtype AccessionIDRun = AccessionIDRun {AccessionIDRun -> AccessionID
+newtype AccessionIDRun = AccessionIDRun {AccessionIDRun -> AccessionID
 getRunAccession :: AccessionID}
-    deriving (AccessionIDRun -> AccessionIDRun -> Bool
+    deriving (AccessionIDRun -> AccessionIDRun -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: AccessionIDRun -> AccessionIDRun -> Bool
 $c/= :: AccessionIDRun -> AccessionIDRun -> Bool
@@ -505,23 +505,23 @@
 $cfrom :: forall x. AccessionIDRun -> Rep AccessionIDRun x
 Generic)
 
-makeAccessionIDRun :: MonadFail m => String -> m AccessionIDRun
+makeAccessionIDRun :: MonadFail m => String -> m AccessionIDRun
 makeAccessionIDRun :: forall (m :: * -> *). MonadFail m => String -> m AccessionIDRun
-makeAccessionIDRun String
-x = do
-    AccessionID
-accsID <- forall (m :: * -> *). MonadFail m => String -> m AccessionID
+makeAccessionIDRun String
+x = do
+    AccessionID
+accsID <- forall (m :: * -> *). MonadFail m => String -> m AccessionID
 makeAccessionID String
-x
+x
     case AccessionID
-accsID of
-        (INSDCRun String
-y) -> forall (f :: * -> *) a. Applicative f => a -> f a
+accsID of
+        (INSDCRun String
+y) -> forall (f :: * -> *) a. Applicative f => a -> f a
 pure forall a b. (a -> b) -> a -> b
 $ AccessionID -> AccessionIDRun
 AccessionIDRun (String -> AccessionID
 INSDCRun String
-y)
+y)
         AccessionID
 _            -> forall (m :: * -> *) a. MonadFail m => String -> m a
 fail forall a b. (a -> b) -> a -> b
@@ -529,46 +529,46 @@
 "Accession " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not a correct run accession"
 
-instance Show AccessionIDRun where
-    show :: AccessionIDRun -> String
-show (AccessionIDRun AccessionID
-x) = forall a. Show a => a -> String
+instance Show AccessionIDRun where
+    show :: AccessionIDRun -> String
+show (AccessionIDRun AccessionID
+x) = forall a. Show a => a -> String
 show AccessionID
-x
+x
 
 instance Csv.ToField AccessionIDRun where
-    toField :: AccessionIDRun -> ByteString
-toField AccessionIDRun
-x = forall a. ToField a => a -> ByteString
+    toField :: AccessionIDRun -> ByteString
+toField AccessionIDRun
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show AccessionIDRun
-x
+x
 instance Csv.FromField AccessionIDRun where
-    parseField :: ByteString -> Parser AccessionIDRun
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser AccessionIDRun
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m AccessionIDRun
 makeAccessionIDRun
-instance ToJSON AccessionIDRun where
-    toEncoding :: AccessionIDRun -> Encoding
-toEncoding AccessionIDRun
-x = forall a. Text -> Encoding' a
+instance ToJSON AccessionIDRun where
+    toEncoding :: AccessionIDRun -> Encoding
+toEncoding AccessionIDRun
+x = forall a. Text -> Encoding' a
 text forall a b. (a -> b) -> a -> b
 $ String -> Text
 T.pack forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show AccessionIDRun
-x
-instance FromJSON AccessionIDRun where
-    parseJSON :: Value -> Parser AccessionIDRun
-parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
+x
+instance FromJSON AccessionIDRun where
+    parseJSON :: Value -> Parser AccessionIDRun
+parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
 withText String
 "AccessionIDRun" (forall (m :: * -> *). MonadFail m => String -> m AccessionIDRun
 makeAccessionIDRun forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -576,9 +576,9 @@
 T.unpack)
 
 -- A data type to represent a sample accession ID
-newtype AccessionIDSample = AccessionIDSample {AccessionIDSample -> AccessionID
+newtype AccessionIDSample = AccessionIDSample {AccessionIDSample -> AccessionID
 getSampleAccession :: AccessionID}
-    deriving (AccessionIDSample -> AccessionIDSample -> Bool
+    deriving (AccessionIDSample -> AccessionIDSample -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: AccessionIDSample -> AccessionIDSample -> Bool
 $c/= :: AccessionIDSample -> AccessionIDSample -> Bool
@@ -592,30 +592,30 @@
 $cfrom :: forall x. AccessionIDSample -> Rep AccessionIDSample x
 Generic)
 
-makeAccessionIDSample :: MonadFail m => String -> m AccessionIDSample
+makeAccessionIDSample :: MonadFail m => String -> m AccessionIDSample
 makeAccessionIDSample :: forall (m :: * -> *). MonadFail m => String -> m AccessionIDSample
-makeAccessionIDSample String
-x = do
-    AccessionID
-accsID <- forall (m :: * -> *). MonadFail m => String -> m AccessionID
+makeAccessionIDSample String
+x = do
+    AccessionID
+accsID <- forall (m :: * -> *). MonadFail m => String -> m AccessionID
 makeAccessionID String
-x
+x
     case AccessionID
-accsID of
-        (INSDCBioSample String
-y) -> forall (f :: * -> *) a. Applicative f => a -> f a
+accsID of
+        (INSDCBioSample String
+y) -> forall (f :: * -> *) a. Applicative f => a -> f a
 pure forall a b. (a -> b) -> a -> b
 $ AccessionID -> AccessionIDSample
 AccessionIDSample (String -> AccessionID
 INSDCBioSample String
-y)
-        (INSDCSample String
-y)    -> forall (f :: * -> *) a. Applicative f => a -> f a
+y)
+        (INSDCSample String
+y)    -> forall (f :: * -> *) a. Applicative f => a -> f a
 pure forall a b. (a -> b) -> a -> b
 $ AccessionID -> AccessionIDSample
 AccessionIDSample (String -> AccessionID
 INSDCSample String
-y)
+y)
         AccessionID
 _                  -> forall (m :: * -> *) a. MonadFail m => String -> m a
 fail forall a b. (a -> b) -> a -> b
@@ -623,46 +623,46 @@
 "Accession " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not a correct biosample/sample accession"
 
-instance Show AccessionIDSample where
-    show :: AccessionIDSample -> String
-show (AccessionIDSample AccessionID
-x) = forall a. Show a => a -> String
+instance Show AccessionIDSample where
+    show :: AccessionIDSample -> String
+show (AccessionIDSample AccessionID
+x) = forall a. Show a => a -> String
 show AccessionID
-x
+x
 
 instance Csv.ToField AccessionIDSample where
-    toField :: AccessionIDSample -> ByteString
-toField AccessionIDSample
-x = forall a. ToField a => a -> ByteString
+    toField :: AccessionIDSample -> ByteString
+toField AccessionIDSample
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show AccessionIDSample
-x
+x
 instance Csv.FromField AccessionIDSample where
-    parseField :: ByteString -> Parser AccessionIDSample
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser AccessionIDSample
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m AccessionIDSample
 makeAccessionIDSample
-instance ToJSON AccessionIDSample where
-    toEncoding :: AccessionIDSample -> Encoding
-toEncoding AccessionIDSample
-x = forall a. Text -> Encoding' a
+instance ToJSON AccessionIDSample where
+    toEncoding :: AccessionIDSample -> Encoding
+toEncoding AccessionIDSample
+x = forall a. Text -> Encoding' a
 text forall a b. (a -> b) -> a -> b
 $ String -> Text
 T.pack forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show AccessionIDSample
-x
-instance FromJSON AccessionIDSample where
-    parseJSON :: Value -> Parser AccessionIDSample
-parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
+x
+instance FromJSON AccessionIDSample where
+    parseJSON :: Value -> Parser AccessionIDSample
+parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
 withText String
 "AccessionIDSample" (forall (m :: * -> *). MonadFail m => String -> m AccessionIDSample
 makeAccessionIDSample forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -670,9 +670,9 @@
 T.unpack)
 
 -- A data type to represent a study accession ID
-newtype AccessionIDStudy = AccessionIDStudy {AccessionIDStudy -> AccessionID
+newtype AccessionIDStudy = AccessionIDStudy {AccessionIDStudy -> AccessionID
 getStudyAccession :: AccessionID}
-    deriving (AccessionIDStudy -> AccessionIDStudy -> Bool
+    deriving (AccessionIDStudy -> AccessionIDStudy -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: AccessionIDStudy -> AccessionIDStudy -> Bool
 $c/= :: AccessionIDStudy -> AccessionIDStudy -> Bool
@@ -686,37 +686,37 @@
 $cfrom :: forall x. AccessionIDStudy -> Rep AccessionIDStudy x
 Generic)
 
-instance Show AccessionIDStudy where
-    show :: AccessionIDStudy -> String
-show (AccessionIDStudy AccessionID
-x) = forall a. Show a => a -> String
+instance Show AccessionIDStudy where
+    show :: AccessionIDStudy -> String
+show (AccessionIDStudy AccessionID
+x) = forall a. Show a => a -> String
 show AccessionID
-x
+x
 
-makeAccessionIDStudy :: MonadFail m => String -> m AccessionIDStudy
+makeAccessionIDStudy :: MonadFail m => String -> m AccessionIDStudy
 makeAccessionIDStudy :: forall (m :: * -> *). MonadFail m => String -> m AccessionIDStudy
-makeAccessionIDStudy String
-x = do
-    AccessionID
-accsID <- forall (m :: * -> *). MonadFail m => String -> m AccessionID
+makeAccessionIDStudy String
+x = do
+    AccessionID
+accsID <- forall (m :: * -> *). MonadFail m => String -> m AccessionID
 makeAccessionID String
-x
+x
     case AccessionID
-accsID of
-        (INSDCProject String
-y) -> forall (f :: * -> *) a. Applicative f => a -> f a
+accsID of
+        (INSDCProject String
+y) -> forall (f :: * -> *) a. Applicative f => a -> f a
 pure forall a b. (a -> b) -> a -> b
 $ AccessionID -> AccessionIDStudy
 AccessionIDStudy (String -> AccessionID
 INSDCProject String
-y)
-        (INSDCStudy String
-y)   -> forall (f :: * -> *) a. Applicative f => a -> f a
+y)
+        (INSDCStudy String
+y)   -> forall (f :: * -> *) a. Applicative f => a -> f a
 pure forall a b. (a -> b) -> a -> b
 $ AccessionID -> AccessionIDStudy
 AccessionIDStudy (String -> AccessionID
 INSDCStudy String
-y)
+y)
         AccessionID
 _                -> forall (m :: * -> *) a. MonadFail m => String -> m a
 fail forall a b. (a -> b) -> a -> b
@@ -724,39 +724,39 @@
 "Accession " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not a correct project/study accession"
 
 instance Csv.ToField AccessionIDStudy where
-    toField :: AccessionIDStudy -> ByteString
-toField AccessionIDStudy
-x = forall a. ToField a => a -> ByteString
+    toField :: AccessionIDStudy -> ByteString
+toField AccessionIDStudy
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show AccessionIDStudy
-x
+x
 instance Csv.FromField AccessionIDStudy where
-    parseField :: ByteString -> Parser AccessionIDStudy
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser AccessionIDStudy
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m AccessionIDStudy
 makeAccessionIDStudy
-instance ToJSON AccessionIDStudy where
-    toEncoding :: AccessionIDStudy -> Encoding
-toEncoding AccessionIDStudy
-x = forall a. Text -> Encoding' a
+instance ToJSON AccessionIDStudy where
+    toEncoding :: AccessionIDStudy -> Encoding
+toEncoding AccessionIDStudy
+x = forall a. Text -> Encoding' a
 text forall a b. (a -> b) -> a -> b
 $ String -> Text
 T.pack forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show AccessionIDStudy
-x
-instance FromJSON AccessionIDStudy where
-    parseJSON :: Value -> Parser AccessionIDStudy
-parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
+x
+instance FromJSON AccessionIDStudy where
+    parseJSON :: Value -> Parser AccessionIDStudy
+parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
 withText String
 "AccessionIDStudy" (forall (m :: * -> *). MonadFail m => String -> m AccessionIDStudy
 makeAccessionIDStudy forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -764,14 +764,14 @@
 T.unpack)
 
 -- | A datatype for calendar dates
-newtype SimpleDate = SimpleDate Day
-    deriving (SimpleDate -> SimpleDate -> Bool
+newtype SimpleDate = SimpleDate Day
+    deriving (SimpleDate -> SimpleDate -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: SimpleDate -> SimpleDate -> Bool
 $c/= :: SimpleDate -> SimpleDate -> Bool
 == :: SimpleDate -> SimpleDate -> Bool
 $c== :: SimpleDate -> SimpleDate -> Bool
-Eq, Eq SimpleDate
+Eq, Eq SimpleDate
 SimpleDate -> SimpleDate -> Bool
 SimpleDate -> SimpleDate -> Ordering
 SimpleDate -> SimpleDate -> SimpleDate
@@ -807,62 +807,62 @@
 $cfrom :: forall x. SimpleDate -> Rep SimpleDate x
 Generic)
 
-instance Show SimpleDate where
-    show :: SimpleDate -> String
-show (SimpleDate Day
-x) = forall t. FormatTime t => TimeLocale -> String -> t -> String
+instance Show SimpleDate where
+    show :: SimpleDate -> String
+show (SimpleDate Day
+x) = forall t. FormatTime t => TimeLocale -> String -> t -> String
 formatTime TimeLocale
 defaultTimeLocale String
 "%Y-%-m-%-d" Day
-x
+x
 
-makeSimpleDate :: MonadFail m => String -> m SimpleDate
+makeSimpleDate :: MonadFail m => String -> m SimpleDate
 makeSimpleDate :: forall (m :: * -> *). MonadFail m => String -> m SimpleDate
-makeSimpleDate String
-x = do
-    Day
-mday <- forall (m :: * -> *) t.
+makeSimpleDate String
+x = do
+    Day
+mday <- forall (m :: * -> *) t.
 (MonadFail m, ParseTime t) =>
 Bool -> TimeLocale -> String -> String -> m t
 parseTimeM Bool
 False TimeLocale
 defaultTimeLocale String
 "%Y-%-m-%-d" String
-x
+x
     forall (f :: * -> *) a. Applicative f => a -> f a
 pure (Day -> SimpleDate
 SimpleDate Day
-mday)
+mday)
 
 instance Csv.ToField SimpleDate where
-    toField :: SimpleDate -> ByteString
-toField (SimpleDate Day
-x) = forall a. ToField a => a -> ByteString
+    toField :: SimpleDate -> ByteString
+toField (SimpleDate Day
+x) = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show Day
-x
+x
 instance Csv.FromField SimpleDate where
-    parseField :: ByteString -> Parser SimpleDate
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser SimpleDate
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m SimpleDate
 makeSimpleDate
-instance ToJSON SimpleDate where
-    toEncoding :: SimpleDate -> Encoding
-toEncoding SimpleDate
-x = forall a. Text -> Encoding' a
+instance ToJSON SimpleDate where
+    toEncoding :: SimpleDate -> Encoding
+toEncoding SimpleDate
+x = forall a. Text -> Encoding' a
 text forall a b. (a -> b) -> a -> b
 $ String -> Text
 T.pack forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show SimpleDate
-x
-instance FromJSON SimpleDate where
-    parseJSON :: Value -> Parser SimpleDate
-parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
+x
+instance FromJSON SimpleDate where
+    parseJSON :: Value -> Parser SimpleDate
+parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
 withText String
 "SimpleDate" (forall (m :: * -> *). MonadFail m => String -> m SimpleDate
 makeSimpleDate forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -870,14 +870,14 @@
 T.unpack)
 
 -- | A datatype to represent MD5 hashes
-newtype MD5 = MD5 String
-    deriving (MD5 -> MD5 -> Bool
+newtype MD5 = MD5 String
+    deriving (MD5 -> MD5 -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: MD5 -> MD5 -> Bool
 $c/= :: MD5 -> MD5 -> Bool
 == :: MD5 -> MD5 -> Bool
 $c== :: MD5 -> MD5 -> Bool
-Eq, Eq MD5
+Eq, Eq MD5
 MD5 -> MD5 -> Bool
 MD5 -> MD5 -> Ordering
 MD5 -> MD5 -> MD5
@@ -913,23 +913,23 @@
 $cfrom :: forall x. MD5 -> Rep MD5 x
 Generic)
 
-instance Show MD5 where
-    show :: MD5 -> String
-show (MD5 String
-x) = String
-x
+instance Show MD5 where
+    show :: MD5 -> String
+show (MD5 String
+x) = String
+x
 
-makeMD5 :: MonadFail m => String -> m MD5
+makeMD5 :: MonadFail m => String -> m MD5
 makeMD5 :: forall (m :: * -> *). MonadFail m => String -> m MD5
-makeMD5 String
-x
+makeMD5 String
+x
     | String -> Bool
 isMD5Hash String
-x = forall (f :: * -> *) a. Applicative f => a -> f a
+x = forall (f :: * -> *) a. Applicative f => a -> f a
 pure forall a b. (a -> b) -> a -> b
 $ String -> MD5
 MD5 String
-x
+x
     | Bool
 otherwise   = forall (m :: * -> *) a. MonadFail m => String -> m a
 fail forall a b. (a -> b) -> a -> b
@@ -937,52 +937,52 @@
 "MD5 hash " forall a. [a] -> [a] -> [a]
 ++ forall a. Show a => a -> String
 show String
-x forall a. [a] -> [a] -> [a]
+x forall a. [a] -> [a] -> [a]
 ++ String
 " not well structured"
 
 isMD5Hash :: String -> Bool
 isMD5Hash :: String -> Bool
-isMD5Hash String
-x = forall (t :: * -> *) a. Foldable t => t a -> Int
+isMD5Hash String
+x = forall (t :: * -> *) a. Foldable t => t a -> Int
 length String
-x forall a. Eq a => a -> a -> Bool
+x forall a. Eq a => a -> a -> Bool
 == Int
 32 Bool -> Bool -> Bool
 && forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
 all Char -> Bool
 isHexDigit String
-x
+x
 
 instance Csv.ToField MD5 where
-    toField :: MD5 -> ByteString
-toField MD5
-x = forall a. ToField a => a -> ByteString
+    toField :: MD5 -> ByteString
+toField MD5
+x = forall a. ToField a => a -> ByteString
 Csv.toField forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show MD5
-x
+x
 instance Csv.FromField MD5 where
-    parseField :: ByteString -> Parser MD5
-parseField ByteString
-x = forall a. FromField a => ByteString -> Parser a
+    parseField :: ByteString -> Parser MD5
+parseField ByteString
+x = forall a. FromField a => ByteString -> Parser a
 Csv.parseField ByteString
-x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
+x forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
 >>= forall (m :: * -> *). MonadFail m => String -> m MD5
 makeMD5
-instance ToJSON MD5 where
-    toEncoding :: MD5 -> Encoding
-toEncoding MD5
-x = forall a. Text -> Encoding' a
+instance ToJSON MD5 where
+    toEncoding :: MD5 -> Encoding
+toEncoding MD5
+x = forall a. Text -> Encoding' a
 text forall a b. (a -> b) -> a -> b
 $ String -> Text
 T.pack forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show MD5
-x
-instance FromJSON MD5 where
-    parseJSON :: Value -> Parser MD5
-parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
+x
+instance FromJSON MD5 where
+    parseJSON :: Value -> Parser MD5
+parseJSON = forall a. String -> (Text -> Parser a) -> Value -> Parser a
 withText String
 "MD5" (forall (m :: * -> *). MonadFail m => String -> m MD5
 makeMD5 forall b c a. (b -> c) -> (a -> b) -> a -> c
@@ -992,7 +992,7 @@
 -- | 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
+data SeqSourceRow = SeqSourceRow
     { SeqSourceRow -> Maybe JannoStringList
 sPoseidonID               :: Maybe JannoStringList
     , SeqSourceRow -> Maybe SSFUDG
@@ -1040,7 +1040,7 @@
     , SeqSourceRow -> CsvNamedRecord
 sAdditionalColumns        :: CsvNamedRecord
     }
-    deriving (Int -> SeqSourceRow -> ShowS
+    deriving (Int -> SeqSourceRow -> ShowS
 [SeqSourceRow] -> ShowS
 SeqSourceRow -> String
 forall a.
@@ -1051,7 +1051,7 @@
 $cshow :: SeqSourceRow -> String
 showsPrec :: Int -> SeqSourceRow -> ShowS
 $cshowsPrec :: Int -> SeqSourceRow -> ShowS
-Show, SeqSourceRow -> SeqSourceRow -> Bool
+Show, SeqSourceRow -> SeqSourceRow -> Bool
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 /= :: SeqSourceRow -> SeqSourceRow -> Bool
 $c/= :: SeqSourceRow -> SeqSourceRow -> Bool
@@ -1116,7 +1116,7 @@
     ]
 
 instance Csv.DefaultOrdered SeqSourceRow where
-    headerOrder :: SeqSourceRow -> Header
+    headerOrder :: SeqSourceRow -> Header
 headerOrder SeqSourceRow
 _ = [ByteString] -> Header
 Csv.header [ByteString]
@@ -1135,27 +1135,27 @@
 seqSourceRefHashMap = forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v
 HM.fromList forall a b. (a -> b) -> a -> b
 $ 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 = forall a.
+instance ToJSON SeqSourceRow where
+    toEncoding :: SeqSourceRow -> Encoding
+toEncoding = forall a.
 (Generic a, GToJSON' Encoding Zero (Rep a)) =>
 Options -> a -> Encoding
 genericToEncoding (Options
 defaultOptions {omitNothingFields :: Bool
-omitNothingFields = Bool
+omitNothingFields = Bool
 True})
 
-instance FromJSON SeqSourceRow
+instance FromJSON SeqSourceRow
 
 instance Csv.FromNamedRecord SeqSourceRow where
-    parseNamedRecord :: HashMap ByteString ByteString -> Parser SeqSourceRow
-parseNamedRecord HashMap ByteString ByteString
-m = Maybe JannoStringList
+    parseNamedRecord :: HashMap ByteString ByteString -> Parser SeqSourceRow
+parseNamedRecord HashMap ByteString ByteString
+m = Maybe JannoStringList
 -> Maybe SSFUDG
 -> Maybe SSFLibraryBuilt
 -> Maybe AccessionIDSample
@@ -1185,154 +1185,154 @@
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "poseidon_IDs"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "udg"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "library_built"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "sample_accession"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "study_accession"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser a
 filterLookup         HashMap ByteString ByteString
-m ByteString
+m ByteString
 "run_accession"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "sample_alias"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "secondary_sample_accession"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "first_public"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "last_updated"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "instrument_model"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "library_layout"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "library_source"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "instrument_platform"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "library_name"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "library_strategy"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "fastq_ftp"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "fastq_aspera"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "fastq_bytes"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "fastq_md5"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> forall a.
 FromField a =>
 HashMap ByteString ByteString -> ByteString -> Parser (Maybe a)
 filterLookupOptional HashMap ByteString ByteString
-m ByteString
+m ByteString
 "read_count"
         forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> 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
@@ -1340,127 +1340,127 @@
 <*> forall (f :: * -> *) a. Applicative f => a -> f a
 pure (HashMap ByteString ByteString -> CsvNamedRecord
 CsvNamedRecord (HashMap ByteString ByteString
-m forall k v w.
+m 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
+    toNamedRecord :: SeqSourceRow -> HashMap ByteString ByteString
+toNamedRecord SeqSourceRow
+s = [(ByteString, ByteString)] -> HashMap ByteString ByteString
 Csv.namedRecord [
           ByteString
 "poseidon_IDs"               forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe JannoStringList
 sPoseidonID SeqSourceRow
-s
+s
         , ByteString
 "udg"                        forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe SSFUDG
 sUDG SeqSourceRow
-s
+s
         , ByteString
 "library_built"              forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe SSFLibraryBuilt
 sLibraryBuilt SeqSourceRow
-s
+s
         , ByteString
 "sample_accession"           forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe AccessionIDSample
 sSampleAccession SeqSourceRow
-s
+s
         , ByteString
 "study_accession"            forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe AccessionIDStudy
 sStudyAccession SeqSourceRow
-s
+s
         , ByteString
 "run_accession"              forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe AccessionIDRun
 sRunAccession SeqSourceRow
-s
+s
         , ByteString
 "sample_alias"               forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe String
 sSampleAlias SeqSourceRow
-s
+s
         , ByteString
 "secondary_sample_accession" forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe String
 sSecondarySampleAccession SeqSourceRow
-s
+s
         , ByteString
 "first_public"               forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe SimpleDate
 sFirstPublic SeqSourceRow
-s
+s
         , ByteString
 "last_updated"               forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe SimpleDate
 sLastUpdated SeqSourceRow
-s
+s
         , ByteString
 "instrument_model"           forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe String
 sInstrumentModel SeqSourceRow
-s
+s
         , ByteString
 "library_layout"             forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe String
 sLibraryLayout SeqSourceRow
-s
+s
         , ByteString
 "library_source"             forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe String
 sLibrarySource SeqSourceRow
-s
+s
         , ByteString
 "instrument_platform"        forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe String
 sInstrumentPlatform SeqSourceRow
-s
+s
         , ByteString
 "library_name"               forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe String
 sLibraryName SeqSourceRow
-s
+s
         , ByteString
 "library_strategy"           forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe String
 sLibraryStrategy SeqSourceRow
-s
+s
         , ByteString
 "fastq_ftp"                  forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe (JannoList JURI)
 sFastqFTP SeqSourceRow
-s
+s
         , ByteString
 "fastq_aspera"               forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe (JannoList JURI)
 sFastqASPERA SeqSourceRow
-s
+s
         , ByteString
 "fastq_bytes"                forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe (JannoList Integer)
 sFastqBytes SeqSourceRow
-s
+s
         , ByteString
 "fastq_md5"                  forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe (JannoList MD5)
 sFastqMD5 SeqSourceRow
-s
+s
         , ByteString
 "read_count"                 forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe Integer
 sReadCount SeqSourceRow
-s
+s
         , ByteString
 "submitted_ftp"              forall a. ToField a => ByteString -> a -> (ByteString, ByteString)
 Csv..= SeqSourceRow -> Maybe (JannoList JURI)
 sSubmittedFTP SeqSourceRow
-s
+s
         -- beyond that add what is in the hashmap of additional columns
         ] forall k v.
 (Eq k, Hashable k) =>
@@ -1469,34 +1469,34 @@
 getCsvNR forall a b. (a -> b) -> a -> b
 $ SeqSourceRow -> CsvNamedRecord
 sAdditionalColumns SeqSourceRow
-s)
+s)
 
 -- | A function to write one seqSourceFile
 writeSeqSourceFile :: FilePath -> SeqSourceRows -> IO ()
 writeSeqSourceFile :: String -> SeqSourceRows -> IO ()
-writeSeqSourceFile String
-path (SeqSourceRows [SeqSourceRow]
-rows) = do
-    let seqSourceAsBytestring :: ByteString
-seqSourceAsBytestring = forall a.
+writeSeqSourceFile String
+path (SeqSourceRows [SeqSourceRow]
+rows) = do
+    let seqSourceAsBytestring :: ByteString
+seqSourceAsBytestring = 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
+seqSourceAsBytestring
     String -> ByteString -> IO ()
 Bch.writeFile String
-path ByteString
-seqSourceAsBytestringwithNA
+path ByteString
+seqSourceAsBytestringwithNA
     where
-        makeHeaderWithAdditionalColumns :: Csv.Header
-        makeHeaderWithAdditionalColumns :: Header
-makeHeaderWithAdditionalColumns =
+        makeHeaderWithAdditionalColumns :: Csv.Header
+        makeHeaderWithAdditionalColumns :: Header
+makeHeaderWithAdditionalColumns =
             forall a. [a] -> Vector a
 V.fromList forall a b. (a -> b) -> a -> b
 $ [ByteString]
@@ -1509,33 +1509,33 @@
 getCsvNR forall b c a. (b -> c) -> (a -> b) -> a -> c
 . SeqSourceRow -> CsvNamedRecord
 sAdditionalColumns) [SeqSourceRow]
-rows)))
+rows)))
 
 -- | A function to read one seqSourceFile
 readSeqSourceFile :: FilePath -> PoseidonIO SeqSourceRows
 readSeqSourceFile :: String -> PoseidonIO SeqSourceRows
-readSeqSourceFile String
-seqSourcePath = do
+readSeqSourceFile String
+seqSourcePath = do
     String -> PoseidonIO ()
 logDebug forall a b. (a -> b) -> a -> b
 $ String
 "Reading: " forall a. [a] -> [a] -> [a]
 ++ String
-seqSourcePath
-    ByteString
-seqSourceFile <- forall (m :: * -> *) a. MonadIO m => IO a -> m a
+seqSourcePath
+    ByteString
+seqSourceFile <- forall (m :: * -> *) a. MonadIO m => IO a -> m a
 liftIO forall a b. (a -> b) -> a -> b
 $ String -> IO ByteString
 Bch.readFile String
-seqSourcePath
-    let seqSourceFileRows :: [ByteString]
-seqSourceFileRows = ByteString -> [ByteString]
+seqSourcePath
+    let seqSourceFileRows :: [ByteString]
+seqSourceFileRows = ByteString -> [ByteString]
 Bch.lines ByteString
-seqSourceFile
+seqSourceFile
     forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
 when (forall (t :: * -> *) a. Foldable t => t a -> Int
 length [ByteString]
-seqSourceFileRows forall a. Ord a => a -> a -> Bool
+seqSourceFileRows forall a. Ord a => a -> a -> Bool
 < Int
 2) forall a b. (a -> b) -> a -> b
 $ forall (m :: * -> *) a. MonadIO m => IO a -> m a
@@ -1544,84 +1544,84 @@
 throwIO forall a b. (a -> b) -> a -> b
 $ String -> String -> PoseidonException
 PoseidonFileConsistencyException String
-seqSourcePath String
+seqSourcePath String
 "File has less than two lines"
     String -> PoseidonIO ()
 logDebug forall a b. (a -> b) -> a -> b
 $ forall a. Show a => a -> String
 show (forall (t :: * -> *) a. Foldable t => t a -> Int
 length [ByteString]
-seqSourceFileRows forall a. Num a => a -> a -> a
+seqSourceFileRows forall a. Num a => a -> a -> a
 - Int
 1) forall a. [a] -> [a] -> [a]
 ++ String
 " sequencing entities in this file"
     -- tupel with row number and row bytestring
-    let seqSourceFileRowsWithNumber :: [(Int, ByteString)]
-seqSourceFileRowsWithNumber = forall a b. [a] -> [b] -> [(a, b)]
+    let seqSourceFileRowsWithNumber :: [(Int, ByteString)]
+seqSourceFileRowsWithNumber = forall a b. [a] -> [b] -> [(a, b)]
 zip [Int
 1..(forall (t :: * -> *) a. Foldable t => t a -> Int
 length [ByteString]
-seqSourceFileRows)] [ByteString]
-seqSourceFileRows
+seqSourceFileRows)] [ByteString]
+seqSourceFileRows
     -- filter out empty lines
-        seqSourceFileRowsWithNumberFiltered :: [(Int, ByteString)]
-seqSourceFileRowsWithNumberFiltered = forall a. (a -> Bool) -> [a] -> [a]
+        seqSourceFileRowsWithNumberFiltered :: [(Int, ByteString)]
+seqSourceFileRowsWithNumberFiltered = forall a. (a -> Bool) -> [a] -> [a]
 filter (\(Int
-_, ByteString
-y) -> ByteString
-y forall a. Eq a => a -> a -> Bool
+_, ByteString
+y) -> ByteString
+y forall a. Eq a => a -> a -> Bool
 /= ByteString
 Bch.empty) [(Int, ByteString)]
-seqSourceFileRowsWithNumber
+seqSourceFileRowsWithNumber
     -- create header + individual line combination
-        headerOnlyPotentiallyWithQuotes :: ByteString
-headerOnlyPotentiallyWithQuotes = forall a b. (a, b) -> b
+        headerOnlyPotentiallyWithQuotes :: ByteString
+headerOnlyPotentiallyWithQuotes = forall a b. (a, b) -> b
 snd forall a b. (a -> b) -> a -> b
 $ forall a. [a] -> a
 head [(Int, ByteString)]
-seqSourceFileRowsWithNumberFiltered
+seqSourceFileRowsWithNumberFiltered
         -- removing the quotes like this might cause issues in edge cases
-        headerOnly :: ByteString
-headerOnly = (Char -> Bool) -> ByteString -> ByteString
+        headerOnly :: ByteString
+headerOnly = (Char -> Bool) -> ByteString -> ByteString
 Bch.filter (forall a. Eq a => a -> a -> Bool
 /= Char
 '"') ByteString
-headerOnlyPotentiallyWithQuotes
-        rowsOnly :: [(Int, ByteString)]
-rowsOnly = forall a. [a] -> [a]
+headerOnlyPotentiallyWithQuotes
+        rowsOnly :: [(Int, ByteString)]
+rowsOnly = forall a. [a] -> [a]
 tail [(Int, ByteString)]
-seqSourceFileRowsWithNumberFiltered
-        seqSourceFileRowsWithHeader :: [(Int, ByteString)]
-seqSourceFileRowsWithHeader = forall a b. (a -> b) -> [a] -> [b]
+seqSourceFileRowsWithNumberFiltered
+        seqSourceFileRowsWithHeader :: [(Int, ByteString)]
+seqSourceFileRowsWithHeader = forall a b. (a -> b) -> [a] -> [b]
 map (forall (p :: * -> * -> *) b c a.
 Bifunctor p =>
 (b -> c) -> p a b -> p a c
-second (\ByteString
-x -> ByteString
-headerOnly forall a. Semigroup a => a -> a -> a
+second (\ByteString
+x -> ByteString
+headerOnly forall a. Semigroup a => a -> a -> a
 <> ByteString
 "\n" forall a. Semigroup a => a -> a -> a
 <> ByteString
-x)) [(Int, ByteString)]
-rowsOnly
+x)) [(Int, ByteString)]
+rowsOnly
     -- read seqSourceFile by rows
-    [Either PoseidonException SeqSourceRow]
-seqSourceRepresentation <- forall (t :: * -> *) (m :: * -> *) a b.
+    [Either PoseidonException SeqSourceRow]
+seqSourceRepresentation <- forall (t :: * -> *) (m :: * -> *) a b.
 (Traversable t, Monad m) =>
 (a -> m b) -> t a -> m (t b)
 mapM (String
 -> (Int, ByteString)
 -> PoseidonIO (Either PoseidonException SeqSourceRow)
 readSeqSourceFileRow String
-seqSourcePath) [(Int, ByteString)]
-seqSourceFileRowsWithHeader
+seqSourcePath) [(Int, ByteString)]
+seqSourceFileRowsWithHeader
     -- error case management
     if Bool -> Bool
 not (forall (t :: * -> *) a. Foldable t => t a -> Bool
 null (forall a b. [Either a b] -> [a]
 lefts [Either PoseidonException SeqSourceRow]
-seqSourceRepresentation))
+seqSourceRepresentation))
     then do
         forall (t :: * -> *) (m :: * -> *) a b.
 (Foldable t, Monad m) =>
@@ -1635,138 +1635,138 @@
 5 forall a b. (a -> b) -> a -> b
 $ forall a b. [Either a b] -> [a]
 lefts [Either PoseidonException SeqSourceRow]
-seqSourceRepresentation
+seqSourceRepresentation
         forall (m :: * -> *) a. MonadIO m => IO a -> m a
 liftIO forall a b. (a -> b) -> a -> b
 $ forall e a. Exception e => e -> IO a
 throwIO forall a b. (a -> b) -> a -> b
 $ String -> String -> PoseidonException
 PoseidonFileConsistencyException String
-seqSourcePath String
+seqSourcePath String
 "Broken lines."
     else do
-        let consistentSeqSource :: Either PoseidonException SeqSourceRows
-consistentSeqSource = String -> SeqSourceRows -> Either PoseidonException SeqSourceRows
+        let consistentSeqSource :: Either PoseidonException SeqSourceRows
+consistentSeqSource = String -> SeqSourceRows -> Either PoseidonException SeqSourceRows
 checkSeqSourceConsistency String
-seqSourcePath forall a b. (a -> b) -> a -> b
+seqSourcePath forall a b. (a -> b) -> a -> b
 $ [SeqSourceRow] -> SeqSourceRows
 SeqSourceRows forall a b. (a -> b) -> a -> b
 $ forall a b. [Either a b] -> [b]
 rights [Either PoseidonException SeqSourceRow]
-seqSourceRepresentation
+seqSourceRepresentation
         case Either PoseidonException SeqSourceRows
-consistentSeqSource of
-            Left PoseidonException
-e  -> do forall (m :: * -> *) a. MonadIO m => IO a -> m a
+consistentSeqSource of
+            Left PoseidonException
+e  -> do forall (m :: * -> *) a. MonadIO m => IO a -> m a
 liftIO forall a b. (a -> b) -> a -> b
 $ forall e a. Exception e => e -> IO a
 throwIO (PoseidonException
-e :: PoseidonException)
-            Right SeqSourceRows
-x -> do
+e :: PoseidonException)
+            Right SeqSourceRows
+x -> do
                 -- warnings
                 String -> SeqSourceRows -> PoseidonIO ()
 warnSeqSourceConsistency String
-seqSourcePath SeqSourceRows
-x
+seqSourcePath SeqSourceRows
+x
                 -- finally return the good ones
                 forall (m :: * -> *) a. Monad m => a -> m a
 return SeqSourceRows
-x
+x
 
 -- | A function to read one row of a seqSourceFile
 readSeqSourceFileRow :: FilePath -> (Int, Bch.ByteString) -> PoseidonIO (Either PoseidonException SeqSourceRow)
 readSeqSourceFileRow :: String
 -> (Int, ByteString)
 -> PoseidonIO (Either PoseidonException SeqSourceRow)
-readSeqSourceFileRow String
-seqSourcePath (Int
-lineNumber, ByteString
-row) = do
+readSeqSourceFileRow String
+seqSourcePath (Int
+lineNumber, ByteString
+row) = do
     case forall a.
 FromNamedRecord a =>
 DecodeOptions -> ByteString -> Either String (Header, Vector a)
 Csv.decodeByNameWith DecodeOptions
 decodingOptions ByteString
-row of
-        Left String
-e -> do
+row of
+        Left String
+e -> do
             forall (m :: * -> *) a. Monad m => a -> m a
 return forall a b. (a -> b) -> a -> b
 $ forall a b. a -> Either a b
 Left forall a b. (a -> b) -> a -> b
 $ String -> Int -> String -> PoseidonException
 PoseidonFileRowException String
-seqSourcePath Int
-lineNumber forall a b. (a -> b) -> a -> b
+seqSourcePath Int
+lineNumber forall a b. (a -> b) -> a -> b
 $ ShowS
 removeUselessSuffix String
-e
+e
         Right (Header
-_, Vector SeqSourceRow
-seqSourceRow :: V.Vector SeqSourceRow) -> do
+_, Vector SeqSourceRow
+seqSourceRow :: V.Vector SeqSourceRow) -> do
             case String
 -> Int -> SeqSourceRow -> Either PoseidonException SeqSourceRow
 checkSeqSourceRowConsistency String
-seqSourcePath Int
-lineNumber forall a b. (a -> b) -> a -> b
+seqSourcePath Int
+lineNumber forall a b. (a -> b) -> a -> b
 $ forall a. Vector a -> a
 V.head Vector SeqSourceRow
-seqSourceRow of
-                Left PoseidonException
-e                     -> do forall (m :: * -> *) a. Monad m => a -> m a
+seqSourceRow of
+                Left PoseidonException
+e                     -> do forall (m :: * -> *) a. Monad m => a -> m a
 return forall a b. (a -> b) -> a -> b
 $ forall a b. a -> Either a b
 Left PoseidonException
-e
-                Right (SeqSourceRow
-pS :: SeqSourceRow) -> do forall (m :: * -> *) a. Monad m => a -> m a
+e
+                Right (SeqSourceRow
+pS :: SeqSourceRow) -> do forall (m :: * -> *) a. Monad m => a -> m a
 return forall a b. (a -> b) -> a -> b
 $ forall a b. b -> Either a b
 Right SeqSourceRow
-pS
+pS
 
 -- SeqSource consistency checks
 checkSeqSourceConsistency :: FilePath -> SeqSourceRows -> Either PoseidonException SeqSourceRows
 checkSeqSourceConsistency :: String -> SeqSourceRows -> Either PoseidonException SeqSourceRows
 checkSeqSourceConsistency String
-_ SeqSourceRows
-xs
+_ SeqSourceRows
+xs
     -- | ... no tests implemented
     | Bool
 otherwise = forall a b. b -> Either a b
 Right SeqSourceRows
-xs
+xs
 
 checkSeqSourceRowConsistency :: FilePath -> Int -> SeqSourceRow -> Either PoseidonException SeqSourceRow
 checkSeqSourceRowConsistency :: String
 -> Int -> SeqSourceRow -> Either PoseidonException SeqSourceRow
 checkSeqSourceRowConsistency String
 _ Int
-_ SeqSourceRow
-x
+_ SeqSourceRow
+x
     -- | ... no tests implemented
     | Bool
 otherwise = forall a b. b -> Either a b
 Right SeqSourceRow
-x
+x
 
 warnSeqSourceConsistency :: FilePath -> SeqSourceRows -> PoseidonIO ()
 warnSeqSourceConsistency :: String -> SeqSourceRows -> PoseidonIO ()
-warnSeqSourceConsistency String
-seqSourcePath SeqSourceRows
-xs = do
+warnSeqSourceConsistency String
+seqSourcePath SeqSourceRows
+xs = do
     forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
 unless (SeqSourceRows -> Bool
 checkRunsUnique SeqSourceRows
-xs) forall a b. (a -> b) -> a -> b
+xs) forall a b. (a -> b) -> a -> b
 $
         String -> PoseidonIO ()
 logWarning forall a b. (a -> b) -> a -> b
 $ String
 "Potential consistency issues in file " forall a. [a] -> [a] -> [a]
 ++ String
-seqSourcePath forall a. [a] -> [a] -> [a]
+seqSourcePath forall a. [a] -> [a] -> [a]
 ++ String
 ": " forall a. [a] -> [a] -> [a]
 ++
@@ -1775,14 +1775,14 @@
     forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
 unless (SeqSourceRows -> Bool
 checkAtLeastOnePoseidonID SeqSourceRows
-xs) forall a b. (a -> b) -> a -> b
+xs) forall a b. (a -> b) -> a -> b
 $
         String -> PoseidonIO ()
 logWarning forall a b. (a -> b) -> a -> b
 $ String
 "Potential consistency issues in file " forall a. [a] -> [a] -> [a]
 ++ String
-seqSourcePath forall a. [a] -> [a] -> [a]
+seqSourcePath forall a. [a] -> [a] -> [a]
 ++ String
 ": " forall a. [a] -> [a] -> [a]
 ++
@@ -1791,27 +1791,27 @@
 
 checkRunsUnique :: SeqSourceRows -> Bool
 checkRunsUnique :: SeqSourceRows -> Bool
-checkRunsUnique (SeqSourceRows [SeqSourceRow]
-rows) =
-    let justRunAccessions :: [AccessionIDRun]
-justRunAccessions = forall a b. (a -> Maybe b) -> [a] -> [b]
+checkRunsUnique (SeqSourceRows [SeqSourceRow]
+rows) =
+    let justRunAccessions :: [AccessionIDRun]
+justRunAccessions = forall a b. (a -> Maybe b) -> [a] -> [b]
 mapMaybe SeqSourceRow -> Maybe AccessionIDRun
 sRunAccession [SeqSourceRow]
-rows
+rows
     in [AccessionIDRun]
-justRunAccessions forall a. Eq a => a -> a -> Bool
+justRunAccessions forall a. Eq a => a -> a -> Bool
 == forall a. Eq a => [a] -> [a]
 nub [AccessionIDRun]
-justRunAccessions
+justRunAccessions
 
 checkAtLeastOnePoseidonID :: SeqSourceRows -> Bool
 checkAtLeastOnePoseidonID :: SeqSourceRows -> Bool
-checkAtLeastOnePoseidonID (SeqSourceRows [SeqSourceRow]
-rows) =
+checkAtLeastOnePoseidonID (SeqSourceRows [SeqSourceRow]
+rows) =
     forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
 any (forall a. Maybe a -> Bool
 isJust forall b c a. (b -> c) -> (a -> b) -> a -> c
 . SeqSourceRow -> Maybe JannoStringList
 sPoseidonID) [SeqSourceRow]
-rows
+rows
 
\ No newline at end of file diff --git a/src/Poseidon.ServerClient.html b/src/Poseidon.ServerClient.html index 126c0408..5bf72e45 100644 --- a/src/Poseidon.ServerClient.html +++ b/src/Poseidon.ServerClient.html @@ -32,44 +32,44 @@
qDefault :: Maybe String -> String qDefault :: Maybe [Char] -> [Char] -qDefault Maybe [Char] -archive = [Char] +qDefault Maybe [Char] +archive = [Char] qVersion [Char] -> [Char] -> [Char] +&+ Maybe [Char] -> [Char] qArchive Maybe [Char] -archive +archive (+&+) :: String -> String -> String +&+ :: [Char] -> [Char] -> [Char] -(+&+) [Char] -a (Char -'?':[Char] -b) = [Char] -a forall a. [a] -> [a] -> [a] +(+&+) [Char] +a (Char +'?':[Char] +b) = [Char] +a forall a. [a] -> [a] -> [a] ++ [Char] "&" forall a. [a] -> [a] -> [a] ++ [Char] -b -(+&+) [Char] -a [Char] -b = [Char] -a forall a. [a] -> [a] -> [a] +b +(+&+) [Char] +a [Char] +b = [Char] +a forall a. [a] -> [a] -> [a] ++ [Char] "&" forall a. [a] -> [a] -> [a] ++ [Char] -b +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=" forall a. [a] -> [a] -> [a] ++ Version -> [Char] showVersion Version -v +v qVersion :: String qVersion :: [Char] @@ -84,11 +84,11 @@ qArchive Maybe [Char] Nothing = [Char] "" -qArchive (Just [Char] -name) = [Char] +qArchive (Just [Char] +name) = [Char] "?archive=" forall a. [a] -> [a] -> [a] ++ [Char] -name +name data ArchiveEndpoint = ArchiveEndpoint { ArchiveEndpoint -> [Char] @@ -104,43 +104,43 @@ _apiResponse :: Maybe ApiReturnData } -instance ToJSON ServerApiReturnType where - toJSON :: ServerApiReturnType -> Value -toJSON (ServerApiReturnType [[Char]] -messages Maybe ApiReturnData -response) = +instance ToJSON ServerApiReturnType where + toJSON :: ServerApiReturnType -> Value +toJSON (ServerApiReturnType [[Char]] +messages Maybe ApiReturnData +response) = [Pair] -> Value object [ Key "serverMessages" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [[Char]] -messages, +messages, Key "serverResponse" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Maybe ApiReturnData -response +response ] -instance FromJSON ServerApiReturnType where - parseJSON :: Value -> Parser ServerApiReturnType -parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a +instance FromJSON ServerApiReturnType where + parseJSON :: Value -> Parser ServerApiReturnType +parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a withObject [Char] "ServerApiReturnType" forall a b. (a -> b) -> a -> b -$ \Object -v -> [[Char]] -> Maybe ApiReturnData -> ServerApiReturnType +$ \Object +v -> [[Char]] -> Maybe ApiReturnData -> ServerApiReturnType ServerApiReturnType forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "serverMessages" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "serverResponse" -data ApiReturnData = ApiReturnPackageInfo [PackageInfo] +data ApiReturnData = ApiReturnPackageInfo [PackageInfo] | ApiReturnGroupInfo [GroupInfo] | ApiReturnExtIndividualInfo [ExtendedIndividualInfo] | ApiReturnJanno [(String, JannoRows)] deriving (forall x. Rep ApiReturnData x -> ApiReturnData @@ -151,10 +151,10 @@ $cfrom :: forall x. ApiReturnData -> Rep ApiReturnData x Generic) -instance ToJSON ApiReturnData where - toJSON :: ApiReturnData -> Value -toJSON (ApiReturnPackageInfo [PackageInfo] -pacInfo) = +instance ToJSON ApiReturnData where + toJSON :: ApiReturnData -> Value +toJSON (ApiReturnPackageInfo [PackageInfo] +pacInfo) = [Pair] -> Value object [ Key @@ -165,10 +165,10 @@ Key "packageInfo" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [PackageInfo] -pacInfo +pacInfo ] - toJSON (ApiReturnGroupInfo [GroupInfo] -groupInfo) = + toJSON (ApiReturnGroupInfo [GroupInfo] +groupInfo) = [Pair] -> Value object [ Key @@ -179,10 +179,10 @@ Key "groupInfo" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [GroupInfo] -groupInfo +groupInfo ] - toJSON (ApiReturnExtIndividualInfo [ExtendedIndividualInfo] -indInfo) = + toJSON (ApiReturnExtIndividualInfo [ExtendedIndividualInfo] +indInfo) = [Pair] -> Value object [ Key @@ -193,10 +193,10 @@ Key "extIndInfo" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [ExtendedIndividualInfo] -indInfo +indInfo ] - toJSON (ApiReturnJanno [([Char], JannoRows)] -janno) = + toJSON (ApiReturnJanno [([Char], JannoRows)] +janno) = [Pair] -> Value object [ Key @@ -207,49 +207,49 @@ Key "janno" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [([Char], JannoRows)] -janno +janno ] -instance FromJSON ApiReturnData where - parseJSON :: Value -> Parser ApiReturnData -parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a +instance FromJSON ApiReturnData where + parseJSON :: Value -> Parser ApiReturnData +parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a withObject [Char] "ApiReturnData" forall a b. (a -> b) -> a -> b -$ \Object -v -> do - [Char] -constr <- Object -v forall a. FromJSON a => Object -> Key -> Parser a +$ \Object +v -> do + [Char] +constr <- Object +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "constructor" case [Char] -constr of +constr of [Char] "ApiReturnPackageInfo" -> [PackageInfo] -> ApiReturnData ApiReturnPackageInfo forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageInfo" [Char] "ApiReturnGroupInfo" -> [GroupInfo] -> ApiReturnData ApiReturnGroupInfo forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "groupInfo" [Char] "ApiReturnExtIndividualInfo" -> [ExtendedIndividualInfo] -> ApiReturnData ApiReturnExtIndividualInfo forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "extIndInfo" [Char] "ApiReturnJanno" -> [([Char], JannoRows)] -> ApiReturnData ApiReturnJanno forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "janno" [Char] @@ -258,7 +258,7 @@ $ [Char] "cannot parse ApiReturnType with constructor " forall a. [a] -> [a] -> [a] ++ [Char] -constr +constr data PackageInfo = PackageInfo @@ -274,13 +274,13 @@ pLastModified :: Maybe Day , PackageInfo -> Int pNrIndividuals :: Int - } deriving (PackageInfo -> PackageInfo -> Bool + } deriving (PackageInfo -> PackageInfo -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: PackageInfo -> PackageInfo -> Bool $c/= :: PackageInfo -> PackageInfo -> Bool == :: PackageInfo -> PackageInfo -> Bool $c== :: PackageInfo -> PackageInfo -> Bool -Eq, Eq PackageInfo +Eq, Eq PackageInfo PackageInfo -> PackageInfo -> Bool PackageInfo -> PackageInfo -> Ordering PackageInfo -> PackageInfo -> PackageInfo @@ -311,66 +311,66 @@ Ord) instance HasNameAndVersion PackageInfo where - getPacName :: PackageInfo -> [Char] + getPacName :: PackageInfo -> [Char] getPacName = forall a. HasNameAndVersion a => a -> [Char] getPacName forall b c a. (b -> c) -> (a -> b) -> a -> c . PackageInfo -> PacNameAndVersion pPac - getPacVersion :: PackageInfo -> Maybe Version + getPacVersion :: PackageInfo -> Maybe Version getPacVersion = forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion 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) = +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 "packageTitle" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [Char] -n, +n, Key "packageVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Maybe Version -v, +v, Key "isLatest" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Bool -isLatest, +isLatest, Key "poseidonVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Version -posVersion, +posVersion, Key "description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Maybe [Char] -description, +description, Key "lastModified" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Maybe Day -lastModified, +lastModified, Key "nrIndividuals" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Int -nrIndividuals +nrIndividuals ] -instance FromJSON PackageInfo where - parseJSON :: Value -> Parser PackageInfo -parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a +instance FromJSON PackageInfo where + parseJSON :: Value -> Parser PackageInfo +parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a withObject [Char] "PackageInfo" forall a b. (a -> b) -> a -> b -$ \Object -v -> PacNameAndVersion +$ \Object +v -> PacNameAndVersion -> Bool -> Version -> Maybe [Char] @@ -382,36 +382,36 @@ <$> ([Char] -> Maybe Version -> PacNameAndVersion PacNameAndVersion forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageTitle") forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageVersion")) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "isLatest" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "poseidonVersion" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "description" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "lastModified" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "nrIndividuals" @@ -424,7 +424,7 @@ gIsLatest :: Bool , GroupInfo -> Int gNrIndividuals :: Int - } deriving (GroupInfo -> GroupInfo -> Bool + } deriving (GroupInfo -> GroupInfo -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: GroupInfo -> GroupInfo -> Bool $c/= :: GroupInfo -> GroupInfo -> Bool @@ -432,89 +432,89 @@ $c== :: 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) = +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 "groupName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [Char] -name, +name, Key "packageTitle" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= [Char] -pacTitle, +pacTitle, Key "packageVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Maybe Version -pacVersion, +pacVersion, Key "isLatest" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Bool -isLatest, +isLatest, Key "nrIndividuals" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= Int -nrIndividuals +nrIndividuals ] -instance FromJSON GroupInfo where - parseJSON :: Value -> Parser GroupInfo -parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a +instance FromJSON GroupInfo where + parseJSON :: Value -> Parser GroupInfo +parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a withObject [Char] "GroupInfo" forall a b. (a -> b) -> a -> b -$ \Object -v -> do - [Char] -groupName <- Object -v forall a. FromJSON a => Object -> Key -> Parser a +$ \Object +v -> do + [Char] +groupName <- Object +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "groupName" - [Char] -packageTitle <- Object -v forall a. FromJSON a => Object -> Key -> Parser a + [Char] +packageTitle <- Object +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageTitle" - Maybe Version -packageVersion <- Object -v forall a. FromJSON a => Object -> Key -> Parser a + Maybe Version +packageVersion <- Object +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageVersion" - Bool -isLatest <- Object -v forall a. FromJSON a => Object -> Key -> Parser a + Bool +isLatest <- Object +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "isLatest" - Int -nrIndividuals <- Object -v forall a. FromJSON a => Object -> Key -> Parser a + Int +nrIndividuals <- Object +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "nrIndividuals" forall (m :: * -> *) a. Monad m => a -> m a return 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 +packageTitle Maybe Version +packageVersion) Bool +isLatest Int +nrIndividuals instance HasNameAndVersion GroupInfo where - getPacName :: GroupInfo -> [Char] -getPacName = forall a. HasNameAndVersion a => a -> [Char] + getPacName :: GroupInfo -> [Char] +getPacName = forall a. HasNameAndVersion a => a -> [Char] getPacName forall b c a. (b -> c) -> (a -> b) -> a -> c . GroupInfo -> PacNameAndVersion gPackage - getPacVersion :: GroupInfo -> Maybe Version -getPacVersion = forall a. HasNameAndVersion a => a -> Maybe Version + getPacVersion :: GroupInfo -> Maybe Version +getPacVersion = forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion forall b c a. (b -> c) -> (a -> b) -> a -> c . GroupInfo -> PacNameAndVersion gPackage @@ -531,7 +531,7 @@ extIndInfoIsLatest :: Bool , ExtendedIndividualInfo -> [([Char], Maybe [Char])] extIndInfoAddCols :: [(String, Maybe String)] - } deriving (ExtendedIndividualInfo -> ExtendedIndividualInfo -> Bool + } deriving (ExtendedIndividualInfo -> ExtendedIndividualInfo -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: ExtendedIndividualInfo -> ExtendedIndividualInfo -> Bool $c/= :: ExtendedIndividualInfo -> ExtendedIndividualInfo -> Bool @@ -540,33 +540,33 @@ Eq) instance HasNameAndVersion ExtendedIndividualInfo where - getPacName :: ExtendedIndividualInfo -> [Char] -getPacName = forall a. HasNameAndVersion a => a -> [Char] + getPacName :: ExtendedIndividualInfo -> [Char] +getPacName = forall a. HasNameAndVersion a => a -> [Char] getPacName forall b c a. (b -> c) -> (a -> b) -> a -> c . ExtendedIndividualInfo -> PacNameAndVersion extIndInfoPac - getPacVersion :: ExtendedIndividualInfo -> Maybe Version -getPacVersion = forall a. HasNameAndVersion a => a -> Maybe Version + getPacVersion :: ExtendedIndividualInfo -> Maybe Version +getPacVersion = forall a. HasNameAndVersion a => a -> Maybe Version getPacVersion forall b c a. (b -> c) -> (a -> b) -> a -> c . ExtendedIndividualInfo -> PacNameAndVersion extIndInfoPac -instance ToJSON ExtendedIndividualInfo where - toJSON :: ExtendedIndividualInfo -> Value -toJSON ExtendedIndividualInfo -e = +instance ToJSON ExtendedIndividualInfo where + toJSON :: ExtendedIndividualInfo -> Value +toJSON ExtendedIndividualInfo +e = [Pair] -> Value object [ Key "poseidonID" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ExtendedIndividualInfo -> [Char] extIndInfoName ExtendedIndividualInfo -e, +e, Key "groupNames" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ExtendedIndividualInfo -> [[Char]] extIndInfoGroups ExtendedIndividualInfo -e, +e, Key "packageTitle" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= (forall a. HasNameAndVersion a => a -> [Char] @@ -574,7 +574,7 @@ . ExtendedIndividualInfo -> PacNameAndVersion extIndInfoPac forall a b. (a -> b) -> a -> b $ ExtendedIndividualInfo -e), +e), Key "packageVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= (forall a. HasNameAndVersion a => a -> Maybe Version @@ -582,25 +582,25 @@ . ExtendedIndividualInfo -> PacNameAndVersion extIndInfoPac forall a b. (a -> b) -> a -> b $ ExtendedIndividualInfo -e), +e), Key "isLatest" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ExtendedIndividualInfo -> Bool extIndInfoIsLatest ExtendedIndividualInfo -e, +e, Key "additionalJannoColumns" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv .= ExtendedIndividualInfo -> [([Char], Maybe [Char])] extIndInfoAddCols ExtendedIndividualInfo -e] +e] -instance FromJSON ExtendedIndividualInfo where - parseJSON :: Value -> Parser ExtendedIndividualInfo -parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a +instance FromJSON ExtendedIndividualInfo where + parseJSON :: Value -> Parser ExtendedIndividualInfo +parseJSON = forall a. [Char] -> (Object -> Parser a) -> Value -> Parser a withObject [Char] "ExtendedIndividualInfo" forall a b. (a -> b) -> a -> b -$ \Object -v -> [Char] +$ \Object +v -> [Char] -> [[Char]] -> PacNameAndVersion -> Bool @@ -609,92 +609,92 @@ ExtendedIndividualInfo forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "poseidonID" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "groupNames" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> ([Char] -> Maybe Version -> PacNameAndVersion PacNameAndVersion forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageTitle") forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "packageVersion")) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v forall a. FromJSON a => Object -> Key -> Parser a .: Key "isLatest" forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -v forall a. FromJSON a => Object -> Key -> Parser a +v 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 <- forall (m :: * -> *) a. MonadIO m => IO a -> m a +processApiResponse [Char] +url Bool +quiet = do + ByteString +remoteData <- forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall a b. (a -> b) -> a -> b $ forall e a. Exception e => IO a -> (e -> IO a) -> IO a catch (forall (m :: * -> *). MonadIO m => [Char] -> m ByteString simpleHttp [Char] -url) (forall e a. Exception e => e -> IO a +url) (forall e a. Exception e => e -> IO a throwIO forall b c a. (b -> c) -> (a -> b) -> a -> c . HttpException -> PoseidonException PoseidonHttpExceptionForward) - ServerApiReturnType [[Char]] -messages Maybe ApiReturnData -maybeReturn <- case forall a. FromJSON a => ByteString -> Either [Char] a + ServerApiReturnType [[Char]] +messages Maybe ApiReturnData +maybeReturn <- case forall a. FromJSON a => ByteString -> Either [Char] a eitherDecode' ByteString -remoteData of - Left [Char] -err -> forall (m :: * -> *) a. MonadIO m => IO a -> m a +remoteData of + Left [Char] +err -> forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c . forall e a. Exception e => e -> IO a throwIO forall a b. (a -> b) -> a -> b $ [Char] -> PoseidonException PoseidonRemoteJSONParsingException [Char] -err - Right ServerApiReturnType -sam -> forall (m :: * -> *) a. Monad m => a -> m a +err + Right ServerApiReturnType +sam -> forall (m :: * -> *) a. Monad m => a -> m a return ServerApiReturnType -sam +sam forall (f :: * -> *). Applicative f => Bool -> f () -> f () unless (forall (t :: * -> *) a. Foldable t => t a -> Bool null [[Char]] -messages Bool -> Bool -> Bool +messages Bool -> Bool -> Bool || Bool -quiet) forall a b. (a -> b) -> a -> b +quiet) forall a b. (a -> b) -> a -> b $ 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 forall a b. (a -> b) -> a -> b $ [Char] "Message from the Server: " forall a. [a] -> [a] -> [a] ++ [Char] -msg) +msg) case Maybe ApiReturnData -maybeReturn of - Just ApiReturnData -apiReturn -> forall (m :: * -> *) a. Monad m => a -> m a +maybeReturn of + Just ApiReturnData +apiReturn -> forall (m :: * -> *) a. Monad m => a -> m a return ApiReturnData -apiReturn +apiReturn Maybe ApiReturnData Nothing -> do [Char] -> ReaderT Env IO () @@ -709,5 +709,5 @@ $ [Char] "Server error upon URL " forall a. [a] -> [a] -> [a] ++ [Char] -url +url
\ No newline at end of file diff --git a/src/Poseidon.Utils.html b/src/Poseidon.Utils.html index dad23305..e1d3bf5d 100644 --- a/src/Poseidon.Utils.html +++ b/src/Poseidon.Utils.html @@ -54,7 +54,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 forall a. @@ -78,10 +78,10 @@ defaultEnv :: LogA -> Env defaultEnv :: LogA -> Env -defaultEnv LogA -logA = LogA -> TestMode -> PlinkPopNameMode -> Env +defaultEnv LogA +logA = LogA -> TestMode -> PlinkPopNameMode -> Env Env LogA -logA TestMode +logA TestMode Production PlinkPopNameMode PlinkPopNameAsFamily @@ -105,7 +105,7 @@ | DefaultLog | ServerLog | VerboseLog - deriving Int -> LogMode -> ShowS + deriving Int -> LogMode -> ShowS [LogMode] -> ShowS LogMode -> String forall a. @@ -118,61 +118,61 @@ $cshowsPrec :: Int -> LogMode -> ShowS Show -usePoseidonLogger :: LogMode -> TestMode -> PlinkPopNameMode -> PoseidonIO a -> IO a +usePoseidonLogger :: LogMode -> TestMode -> PlinkPopNameMode -> PoseidonIO a -> IO a usePoseidonLogger :: forall a. LogMode -> TestMode -> PlinkPopNameMode -> PoseidonIO a -> IO a usePoseidonLogger LogMode -NoLog TestMode -testMode PlinkPopNameMode -plinkMode = forall a b c. (a -> b -> c) -> b -> a -> c +NoLog TestMode +testMode PlinkPopNameMode +plinkMode = forall a b c. (a -> b -> c) -> b -> a -> c flip forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (LogA -> TestMode -> PlinkPopNameMode -> Env Env LogA noLog TestMode -testMode PlinkPopNameMode -plinkMode) +testMode PlinkPopNameMode +plinkMode) usePoseidonLogger LogMode -SimpleLog TestMode -testMode PlinkPopNameMode -plinkMode = forall a b c. (a -> b -> c) -> b -> a -> c +SimpleLog TestMode +testMode PlinkPopNameMode +plinkMode = forall a b c. (a -> b -> c) -> b -> a -> c flip forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (LogA -> TestMode -> PlinkPopNameMode -> Env Env LogA simpleLog TestMode -testMode PlinkPopNameMode -plinkMode) +testMode PlinkPopNameMode +plinkMode) usePoseidonLogger LogMode -DefaultLog TestMode -testMode PlinkPopNameMode -plinkMode = forall a b c. (a -> b -> c) -> b -> a -> c +DefaultLog TestMode +testMode PlinkPopNameMode +plinkMode = forall a b c. (a -> b -> c) -> b -> a -> c flip forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (LogA -> TestMode -> PlinkPopNameMode -> Env Env LogA defaultLog TestMode -testMode PlinkPopNameMode -plinkMode) +testMode PlinkPopNameMode +plinkMode) usePoseidonLogger LogMode -ServerLog TestMode -testMode PlinkPopNameMode -plinkMode = forall a b c. (a -> b -> c) -> b -> a -> c +ServerLog TestMode +testMode PlinkPopNameMode +plinkMode = forall a b c. (a -> b -> c) -> b -> a -> c flip forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (LogA -> TestMode -> PlinkPopNameMode -> Env Env LogA serverLog TestMode -testMode PlinkPopNameMode -plinkMode) +testMode PlinkPopNameMode +plinkMode) usePoseidonLogger LogMode -VerboseLog TestMode -testMode PlinkPopNameMode -plinkMode = forall a b c. (a -> b -> c) -> b -> a -> c +VerboseLog TestMode +testMode PlinkPopNameMode +plinkMode = forall a b c. (a -> b -> c) -> b -> a -> c flip forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (LogA -> TestMode -> PlinkPopNameMode -> Env Env LogA verboseLog TestMode -testMode PlinkPopNameMode -plinkMode) +testMode PlinkPopNameMode +plinkMode) -testLog :: PoseidonIO a -> IO a +testLog :: PoseidonIO a -> IO a testLog :: forall a. PoseidonIO a -> IO a testLog = forall a. LogMode -> TestMode -> PlinkPopNameMode -> PoseidonIO a -> IO a @@ -196,10 +196,10 @@ simpleLog = forall (m :: * -> *) msg. Applicative m => (msg -> Bool) -> LogAction m msg -> LogAction m msg -cfilter (\Msg Severity -msg -> forall sev. Msg sev -> sev +cfilter (\Msg Severity +msg -> forall sev. Msg sev -> sev msgSeverity Msg Severity -msg forall a. Eq a => a -> a -> Bool +msg forall a. Eq a => a -> a -> Bool /= Severity Debug) forall a b. (a -> b) -> a -> b $ Bool -> Bool -> LogA @@ -211,10 +211,10 @@ defaultLog = forall (m :: * -> *) msg. Applicative m => (msg -> Bool) -> LogAction m msg -> LogAction m msg -cfilter (\Msg Severity -msg -> forall sev. Msg sev -> sev +cfilter (\Msg Severity +msg -> forall sev. Msg sev -> sev msgSeverity Msg Severity -msg forall a. Eq a => a -> a -> Bool +msg forall a. Eq a => a -> a -> Bool /= Severity Debug) forall a b. (a -> b) -> a -> b $ Bool -> Bool -> LogA @@ -226,10 +226,10 @@ serverLog = forall (m :: * -> *) msg. Applicative m => (msg -> Bool) -> LogAction m msg -> LogAction m msg -cfilter (\Msg Severity -msg -> forall sev. Msg sev -> sev +cfilter (\Msg Severity +msg -> forall sev. Msg sev -> sev msgSeverity Msg Severity -msg forall a. Eq a => a -> a -> Bool +msg forall a. Eq a => a -> a -> Bool /= Severity Debug) forall a b. (a -> b) -> a -> b $ Bool -> Bool -> LogA @@ -245,38 +245,38 @@ compileLogMsg :: Bool -> Bool -> LogA compileLogMsg :: Bool -> Bool -> LogA -compileLogMsg Bool -severity Bool -time = forall (m :: * -> *) a b. +compileLogMsg Bool +severity Bool +time = forall (m :: * -> *) a b. Monad m => (a -> m b) -> LogAction m b -> LogAction m a cmapM Msg Severity -> IO Text -prepareMessage forall (m :: * -> *). MonadIO m => LogAction m Text +prepareMessage 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 = forall sev. Msg sev -> Text + prepareMessage :: Message -> IO Text + prepareMessage :: Msg Severity -> IO Text +prepareMessage Msg Severity +msg = do + let textMessage :: Text +textMessage = 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 (forall sev. Msg sev -> sev msgSeverity Msg Severity -msg) +msg) else 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 forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= UTCTime -> IO ZonedTime utcToLocalZonedTime @@ -290,7 +290,7 @@ formatTime TimeLocale defaultTimeLocale String "%F %T" ZonedTime -zonedTime forall a. [a] -> [a] -> [a] +zonedTime forall a. [a] -> [a] -> [a] ++ String "] " else forall a. Monoid a => a @@ -298,25 +298,25 @@ forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ Text -textSeverity forall a. Semigroup a => a -> a -> a +textSeverity forall a. Semigroup a => a -> a -> a <> Text -textTime forall a. Semigroup a => a -> a -> a +textTime 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 <- forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a + LogAction Msg Severity -> IO () +logF <- forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a asks (forall env msg (m :: * -> *). HasLog env msg m => env -> LogAction m msg @@ -328,13 +328,13 @@ . forall a. HasCallStack => (HasCallStack => a) -> a withFrozenCallStack forall b c a. (b -> c) -> (a -> b) -> a -> c . Msg Severity -> IO () -logF forall a b. (a -> b) -> a -> b +logF forall a b. (a -> b) -> a -> b $ forall sev. sev -> CallStack -> Text -> Msg sev Msg Severity -sev HasCallStack => CallStack +sev HasCallStack => CallStack callStack (String -> Text pack String -msg) +msg) logWarning :: String -> PoseidonIO () logWarning :: String -> PoseidonIO () @@ -360,16 +360,16 @@ 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 = forall (m :: * -> *) a. MonadIO m => IO a -> m a +logWithEnv LogA +logA = forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b c. (a -> b -> c) -> b -> a -> c flip forall r (m :: * -> *) a. ReaderT r m a -> r -> m a runReaderT (LogA -> Env defaultEnv LogA -logA) +logA
) -- | A Poseidon Exception data type with several concrete constructors data PoseidonException = @@ -401,7 +401,7 @@ | 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 - deriving (Int -> PoseidonException -> ShowS + deriving (Int -> PoseidonException -> ShowS [PoseidonException] -> ShowS PoseidonException -> String forall a. @@ -414,41 +414,41 @@ $cshowsPrec :: Int -> 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 " forall a. [a] -> [a] -> [a] ++ String -fn forall a. [a] -> [a] -> [a] +fn forall a. [a] -> [a] -> [a] ++ String ": " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show ParseException -e -renderPoseidonException (PoseidonPackageException String -s) = +e +renderPoseidonException (PoseidonPackageException String +s) = String "Encountered a logical error with a poseidon package: " 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 " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show String -p forall a. [a] -> [a] -> [a] +p forall a. [a] -> [a] -> [a] ++ String ". This package is build according to poseidon schema v" forall a. [a] -> [a] -> [a] ++ String -s forall a. [a] -> [a] -> [a] +s forall a. [a] -> [a] -> [a] ++ String ", which is not supported by poseidon-hs v" forall a. [a] -> [a] -> [a] @@ -458,394 +458,394 @@ ++ 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 " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show String -p forall a. [a] -> [a] -> [a] +p forall a. [a] -> [a] -> [a] ++ String " has no poseidonVersion field. " forall a. [a] -> [a] -> [a] ++ String "This is mandatory." -renderPoseidonException (PoseidonIndSearchException String -s) = +renderPoseidonException (PoseidonIndSearchException String +s) = forall a. Show a => a -> String show String -s -renderPoseidonException (PoseidonGenotypeException String -s) = +s
+renderPoseidonException (PoseidonGenotypeException String +s) = String "Genotype data structurally inconsistent: " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show String -s -renderPoseidonException (PoseidonGenotypeExceptionForward SomeException -e) = +s
+renderPoseidonException (PoseidonGenotypeExceptionForward SomeException +e) = String "Issues in genotype data parsing: " forall a. [a] -> [a] -> [a] ++ 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" forall a. [a] -> [a] -> [a] ++ 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: " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show HttpException -e -renderPoseidonException (PoseidonFileRowException String -f Int -i String -s) = +e
+renderPoseidonException (PoseidonFileRowException String +f Int +i String +s) = String "Can't read sample in " forall a. [a] -> [a] -> [a] ++ String -f forall a. [a] -> [a] -> [a] +f forall a. [a] -> [a] -> [a] ++ String " in line " forall a. [a] -> [a] -> [a] ++ forall a. Show a => a -> String show Int -i forall a. [a] -> [a] -> [a] +i forall a. [a] -> [a] -> [a] ++ String ": " 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 " forall a. [a] -> [a] -> [a] ++ String -f forall a. [a] -> [a] -> [a] +f forall a. [a] -> [a] -> [a] ++ String ": " 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 " forall a. [a] -> [a] -> [a] ++ String -p forall a. [a] -> [a] -> [a] +p forall a. [a] -> [a] -> [a] ++ String ": " forall a. [a] -> [a] -> [a] ++ String -s -renderPoseidonException (PoseidonCollectionException String -s) = +s
+renderPoseidonException (PoseidonCollectionException String +s) = String "The package collection is broken: " forall a. [a] -> [a] -> [a] ++ String -s -renderPoseidonException (PoseidonFileExistenceException String -f) = +s
+renderPoseidonException (PoseidonFileExistenceException String +f) = String "File " forall a. [a] -> [a] -> [a] ++ String -f forall a. [a] -> [a] -> [a] +f forall a. [a] -> [a] -> [a] ++ String " does not exist" -renderPoseidonException (PoseidonFileChecksumException String -f) = +renderPoseidonException (PoseidonFileChecksumException String +f) = String "File checksum test failed: " forall a. [a] -> [a] -> [a] ++ String -f -renderPoseidonException (PoseidonFStatsFormatException String -s) = +f
+renderPoseidonException (PoseidonFStatsFormatException String +s) = String "Fstat specification error: " 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 " forall a. [a] -> [a] -> [a] ++ String -f forall a. [a] -> [a] -> [a] +f forall a. [a] -> [a] -> [a] ++ String ": " forall a. [a] -> [a] -> [a] ++ String -s -renderPoseidonException (PoseidonPoseidonEntityParsingException String -s) = +s
+renderPoseidonException (PoseidonPoseidonEntityParsingException String +s) = String "Error when parsing the forge selection: " forall a. [a] -> [a] -> [a] ++ String -s -renderPoseidonException (PoseidonForgeEntitiesException String -s) = +s
+renderPoseidonException (PoseidonForgeEntitiesException String +s) = String "Error in the forge selection: " forall a. [a] -> [a] -> [a] ++ String -s +s
renderPoseidonException PoseidonException PoseidonEmptyForgeException = String "Nothing to be forged" -renderPoseidonException (PoseidonNewPackageConstructionException String -s) = +renderPoseidonException (PoseidonNewPackageConstructionException String +s) = forall a. Show a => a -> String show String -s -renderPoseidonException (PoseidonRemoteJSONParsingException String -s) = +s
+renderPoseidonException (PoseidonRemoteJSONParsingException String +s) = String "Error in parsing JSON: " forall a. [a] -> [a] -> [a] ++ 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." forall a. [a] -> [a] -> [a] ++ String " --genoFile: " forall a. [a] -> [a] -> [a] ++ String -g +g
forall a. [a] -> [a] -> [a] ++ String " --snpFile: " forall a. [a] -> [a] -> [a] ++ String -s +s
forall a. [a] -> [a] -> [a] ++ String " --indFile: " 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: " forall a. [a] -> [a] -> [a] ++ 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: " 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 " forall a. [a] -> [a] -> [a] ++ String -p forall a. [a] -> [a] -> [a] +p forall a. [a] -> [a] -> [a] ++ String ": " forall a. [a] -> [a] -> [a] ++ String -s +s
-- 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 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 -> 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 forall (f :: * -> *). Applicative f => Bool -> f () -> f () when (String -fnChkSum forall a. Eq a => a -> a -> Bool +fnChkSum forall a. Eq a => a -> a -> Bool /= String -chkSum) forall a b. (a -> b) -> a -> b +chkSum) forall a b. (a -> b) -> a -> b $ 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
forall (m :: * -> *) a. Monad m => a -> m a return forall a b. (a -> b) -> a -> b $ 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 | forall (t :: * -> *) a. Foldable t => t a -> Int length String -s forall a. Ord a => a -> a -> Bool +s forall a. Ord a => a -> a -> Bool >= Int -n = forall a. Int -> [a] -> [a] +n = forall a. Int -> [a] -> [a] take Int -n String -s +n
String +s | forall (t :: * -> *) a. Foldable t => t a -> Int length String -s forall a. Ord a => a -> a -> Bool +s forall a. Ord a => a -> a -> Bool < Int -n = String -s forall a. [a] -> [a] -> [a] +n = String +s forall a. [a] -> [a] -> [a] ++ forall a. Int -> a -> [a] replicate (Int -n forall a. Num a => a -> a -> a +n forall a. Num a => a -> a -> a - 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 | forall (t :: * -> *) a. Foldable t => t a -> Int length String -s forall a. Ord a => a -> a -> Bool +s forall a. Ord a => a -> a -> Bool >= Int -n = forall a. [a] -> [a] +n = forall a. [a] -> [a] reverse (forall a. Int -> [a] -> [a] take Int -n (forall a. [a] -> [a] +n (forall a. [a] -> [a] reverse String -s)) +s
)) | forall (t :: * -> *) a. Foldable t => t a -> Int length String -s forall a. Ord a => a -> a -> Bool +s forall a. Ord a => a -> a -> Bool < Int -n = forall a. Int -> a -> [a] +n = forall a. Int -> a -> [a] replicate (Int -n forall a. Num a => a -> a -> a +n forall a. Num a => a -> a -> a - forall (t :: * -> *) a. Foldable t => t a -> Int length String -s) Char +s) Char ' ' 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 -> forall (m :: * -> *) a. Monad m => a -> m a +maybeOutName of -- take basename of outPath, if name is not provided + Just String +x -> 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 "" -> forall e a. Exception e => e -> IO a throwIO PoseidonException PoseidonEmptyOutPacNameException - String -y -> forall (m :: * -> *) a. Monad m => a -> m a + String +y -> 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 = forall {a}. Ord a => Set a -> [a] -> [a] -go forall a. Set a +go 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 forall a. Ord a => a -> Set a -> Bool +x 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 forall a. a -> [a] -> [a] +x forall a. a -> [a] -> [a] : Set a -> [a] -> [a] -go (forall a. Ord a => a -> Set a -> Set a +go (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 = forall a. Set a -> [a] Set.toList forall b c a. (b -> c) -> (a -> b) -> a -> c diff --git a/src/Poseidon.Version.html b/src/Poseidon.Version.html index aaf6fdf2..3d628310 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 forall a. @@ -27,35 +27,35 @@ 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 forall a. [a] -> Int -> a +i forall a. [a] -> Int -> a !! Int 0, [Int] -i forall a. [a] -> Int -> a +i forall a. [a] -> Int -> a !! Int 1, ([Int] -i forall a. [a] -> Int -> a +i forall a. [a] -> Int -> a !! Int 2) forall a. Num a => a -> a -> a + Int 1] VersionComponent Minor -> [ [Int] -i forall a. [a] -> Int -> a +i forall a. [a] -> Int -> a !! Int 0, ([Int] -i forall a. [a] -> Int -> a +i forall a. [a] -> Int -> a !! Int 1) forall a. Num a => a -> a -> a + Int @@ -63,7 +63,7 @@ 0 ] VersionComponent Major -> [([Int] -i forall a. [a] -> Int -> a +i forall a. [a] -> Int -> a !! Int 0) forall a. Num a => a -> a -> a + Int @@ -72,13 +72,13 @@ 0 ] in [Int] -> Version makeVersion [Int] -r +r parseVersion :: P.Parser Version parseVersion :: Parser Version parseVersion = do - Int -major <- forall a. Read a => String -> a + Int +major <- forall a. Read a => String -> a read forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall s (m :: * -> *) t u a. Stream s m t => @@ -91,8 +91,8 @@ String -> ParsecT s u m Char P.oneOf String "." - Int -minor <- forall a. Read a => String -> a + Int +minor <- forall a. Read a => String -> a read forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall s (m :: * -> *) t u a. Stream s m t => @@ -105,8 +105,8 @@ String -> ParsecT s u m Char P.oneOf String "." - Int -patch <- forall a. Read a => String -> a + Int +patch <- forall a. Read a => String -> a read forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall s (m :: * -> *) t u a. Stream s m t => @@ -116,7 +116,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