-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathStudies.scala
More file actions
69 lines (59 loc) · 2.15 KB
/
Studies.scala
File metadata and controls
69 lines (59 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package models.entities
import utils.OTLogging
import models.gql.StudyTypeEnum
import play.api.libs.json.{Json, OFormat}
import slick.jdbc.GetResult
import utils.db.DbJsonParser.fromPositionedResult
case class Studies(
count: Long,
rows: IndexedSeq[Study]
)
case class StudyQueryArgs(
id: Seq[String] = Seq.empty,
diseaseIds: Seq[String] = Seq.empty,
enableIndirect: Boolean = false
)
case class Sample(ancestry: String, sampleSize: Int)
case class LdPopulationStructure(ldPopulation: String, relativeSampleSize: Option[Double])
case class SumStatQC(QCCheckName: String, QCCheckValue: Double)
case class Study(
studyId: String,
condition: Option[String],
projectId: String,
studyType: StudyTypeEnum.Value,
traitFromSource: String,
geneId: Option[String],
biosampleFromSourceId: Option[String],
nSamples: Option[Int],
summarystatsLocation: Option[String],
hasSumstats: Option[Boolean],
cohorts: Option[Seq[String]],
initialSampleSize: Option[String],
traitFromSourceMappedIds: Option[Seq[String]],
diseaseIds: Option[Seq[String]],
publicationJournal: Option[String],
publicationDate: Option[String],
ldPopulationStructure: Option[Seq[LdPopulationStructure]],
backgroundTraitFromSourceMappedIds: Option[Seq[String]],
qualityControls: Option[Seq[String]],
replicationSamples: Option[Seq[Sample]],
nControls: Option[Int],
pubmedId: Option[String],
publicationFirstAuthor: Option[String],
publicationTitle: Option[String],
discoverySamples: Option[Seq[Sample]],
nCases: Option[Int],
analysisFlags: Option[Seq[String]],
sumstatQCValues: Option[Seq[SumStatQC]],
metaTotal: Int = 0
)
object Studies extends OTLogging {
def empty: Studies = Studies(0, IndexedSeq.empty)
implicit val studiesFromDB: GetResult[Study] =
GetResult(fromPositionedResult[Study])
implicit val sampleF: OFormat[Sample] = Json.format[Sample]
implicit val ldPopulationStructureF: OFormat[LdPopulationStructure] =
Json.format[LdPopulationStructure]
implicit val sumStatQCF: OFormat[SumStatQC] = Json.format[SumStatQC]
implicit val studyF: OFormat[Study] = Json.format[Study]
}