Navigation Menu

Skip to content
This repository has been archived by the owner on Jan 21, 2021. It is now read-only.

Commit

Permalink
Merge thehyve/master into london_hackaton
Browse files Browse the repository at this point in the history
  • Loading branch information
cataphract committed May 28, 2014
2 parents 1f998ed + 494b04a commit 8a31b43
Show file tree
Hide file tree
Showing 112 changed files with 2,962 additions and 1,400 deletions.
1 change: 1 addition & 0 deletions .gitattributes
@@ -0,0 +1 @@
* text=auto
6 changes: 6 additions & 0 deletions TransmartCoreGrailsPlugin.groovy
@@ -1,4 +1,6 @@
import org.springframework.stereotype.Component
import org.transmartproject.db.accesscontrol.AccessControlChecks
import org.transmartproject.db.dataquery.clinical.variables.ClinicalVariableFactory
import org.transmartproject.db.dataquery.highdim.AbstractHighDimensionDataTypeModule
import org.transmartproject.db.http.BusinessExceptionResolver
import org.transmartproject.db.support.DatabasePortabilityService
Expand Down Expand Up @@ -49,6 +51,10 @@ A runtime dependency for tranSMART that implements the Core API

businessExceptionResolver(BusinessExceptionResolver)

accessControlChecks(AccessControlChecks)

clinicalVariableFactory(ClinicalVariableFactory)

context.'component-scan'('base-package': 'org.transmartproject.db.dataquery.highdim') {
context.'include-filter'(
type: 'assignable',
Expand Down
16 changes: 15 additions & 1 deletion grails-app/conf/BuildConfig.groovy
Expand Up @@ -2,6 +2,20 @@ grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"

def defaultVMSettings = [
maxMemory: 768,
minMemory: 64,
debug: false,
maxPerm: 256
]

grails.project.fork = [
test: [*: defaultVMSettings, daemon: true],
run: [*: defaultVMSettings, forkReserve: false],
war: [*: defaultVMSettings, forkReserve: false],
console: defaultVMSettings
]

grails.project.repos.default = 'repo.thehyve.nl-snapshots'
grails.project.repos."${grails.project.repos.default}".url = 'https://repo.thehyve.nl/content/repositories/snapshots/'

Expand Down Expand Up @@ -34,7 +48,7 @@ grails.project.dependency.resolution = {
test 'org.hamcrest:hamcrest-core:1.3',
'org.hamcrest:hamcrest-library:1.3'

test 'org.gmock:gmock:0.8.3', {
test 'org.gmock:gmock:0.9.0-r435-hyve2', {
transitive = false /* don't bring groovy-all */
}
}
Expand Down
Expand Up @@ -31,15 +31,22 @@ class AccessLevel implements Permission {

/**
* This is not in the database for now.
*
* Note that {@link Permission}s are only used for Studies at this
* point. This mapping between permissions and operations are
* specific for Studies.
*
* Access to QueryDefinitions don't need to rely on QueryDefinition
* specific permissions because are implemented in function of
* Study access and access to QueryResults is implemented in function of
* the user that submitted the query. AccessLevels are not involved.
*/
@Lazy
static Multimap<String, ProtectedOperation> permissionToOperations = {
def mapBuilder = ImmutableMultimap.builder()

[API_READ, BUILD_COHORT, SHOW_SUMMARY_STATISTICS, RUN_ANALYSIS, EXPORT,
SHOW_IN_TABLE].each {
// don't iterate over WellKnownOperations.values() to avoid bugs in
// the future
mapBuilder.put 'OWN', it
mapBuilder.put 'EXPORT', it
}
Expand Down
Expand Up @@ -10,25 +10,25 @@ class DeGplInfo implements Platform {
String organism
Date annotationDate
String markerType
Integer releaseNumber
String genomeReleaseId

static mapping = {
table schema: 'deapp'

id column: 'platform', generator: 'assigned'
releaseNumber column: 'release_nbr'
id column: 'platform', generator: 'assigned'
genomeReleaseId column: 'release_nbr'

version false
}

static constraints = {
id maxSize: 50

title nullable: true, maxSize: 500
organism nullable: true, maxSize: 100
annotationDate nullable: true
markerType nullable: true, maxSize: 100
releaseNumber nullable: true
title nullable: true, maxSize: 500
organism nullable: true, maxSize: 100
annotationDate nullable: true
markerType nullable: true, maxSize: 100
genomeReleaseId nullable: true
}

@Override
Expand Down
@@ -1,10 +1,10 @@
package org.transmartproject.db.dataquery.highdim.acgh

import groovy.transform.EqualsAndHashCode
import org.transmartproject.db.dataquery.highdim.chromoregion.DeChromosomalRegion
import org.transmartproject.core.dataquery.highdim.acgh.AcghValues
import org.transmartproject.core.dataquery.highdim.acgh.CopyNumberState
import org.transmartproject.db.dataquery.highdim.DeSubjectSampleMapping
import org.transmartproject.db.dataquery.highdim.chromoregion.DeChromosomalRegion
import org.transmartproject.db.i2b2data.PatientDimension

@EqualsAndHashCode(includes = [ 'assay', 'region' ])
Expand Down
Expand Up @@ -11,10 +11,10 @@ class DeChromosomalRegion implements Region {
Integer numberOfProbes
String name
String cytoband

/* unused */
String geneSymbol
Long geneId

/* unused */
String organism

static belongsTo = [platform: DeGplInfo]
Expand Down
Expand Up @@ -18,7 +18,7 @@ class DeSubjectRbmData {

static mapping = {
table schema: 'deapp', name: 'de_subject_rbm_data'
id generator: 'sequence', params: [sequence: 'de_subject_rbm_data_seq']
id generator: 'sequence', params: [sequence: 'de_subject_rbm_data_seq', schema: 'deapp']
assay column: 'assay_id'
annotations joinTable: [
name: 'de_rbm_data_annotation_join',
Expand Down
@@ -1,9 +1,9 @@
package org.transmartproject.db.dataquery.highdim.rnaseq

import groovy.transform.EqualsAndHashCode
import org.transmartproject.db.dataquery.highdim.chromoregion.DeChromosomalRegion
import org.transmartproject.core.dataquery.highdim.rnaseq.RnaSeqValues
import org.transmartproject.db.dataquery.highdim.DeSubjectSampleMapping
import org.transmartproject.db.dataquery.highdim.chromoregion.DeChromosomalRegion
import org.transmartproject.db.i2b2data.PatientDimension

@EqualsAndHashCode(includes = [ 'assay', 'region' ])
Expand Down
Expand Up @@ -21,8 +21,7 @@ class DeVariantDatasetCoreDb {
}

static mapping = {
table schema: 'deapp'
table name: 'de_variant_dataset'
table schema: 'deapp', name: 'de_variant_dataset'
version false
id column:'dataset_id', generator: 'assigned'
}
Expand Down
@@ -1,17 +1,12 @@
package org.transmartproject.db.dataquery.highdim.vcf

import groovy.transform.EqualsAndHashCode
import org.transmartproject.core.dataquery.highdim.vcf.GenomicVariantType
import org.transmartproject.db.dataquery.highdim.DeSubjectSampleMapping

import static org.transmartproject.core.dataquery.highdim.vcf.GenomicVariantType.*
import org.transmartproject.core.dataquery.highdim.vcf.VcfValues

@EqualsAndHashCode()
class DeVariantSubjectDetailCoreDb implements Serializable {

String chr
Long pos
Long pos
String rsId
String ref
String alt
Expand All @@ -21,34 +16,32 @@ class DeVariantSubjectDetailCoreDb implements Serializable {
String format
String variant

static belongsTo = [dataset: DeVariantDatasetCoreDb] //TODO: implement constraint on dataset
static belongsTo = [dataset: DeVariantDatasetCoreDb] //TODO: implement constraint on dataset

static constraints = {
alt(nullable: true)
quality(nullable: true)
filter(nullable: true)
info(nullable: true)
format(nullable: true)
variant(nullable: true)
alt nullable: true
quality nullable: true
filter nullable: true
info nullable: true
format nullable: true
variant nullable: true
}

static mapping = {
table schema: 'deapp'
table name: 'de_variant_subject_detail'
version false
table schema: 'deapp', name: 'de_variant_subject_detail'
version false

id composite: ['chr', 'pos']

dataset column: 'dataset_id'
rsId column: 'rs_id'
ref column: 'ref'
alt column: 'alt'
rsId column: 'rs_id'
ref column: 'ref'
alt column: 'alt'
quality column: 'qual'
filter column: 'filter'
info column: 'info'
format column: 'format'
filter column: 'filter'
info column: 'info'
format column: 'format'
variant column: 'variant_value', sqlType: 'clob'
}




}
@@ -0,0 +1,18 @@
package org.transmartproject.db.dataquery.highdim.vcf

class DeVariantSubjectIdxCoreDb implements Serializable {
DeVariantDatasetCoreDb dataset
String subjectId
Long position

static mapping = {
table schema: 'deapp', name: 'de_variant_subject_idx'
version false
id composite: ['dataset', 'subjectId']

dataset column: 'dataset_id'
subjectId column: 'subject_id'
position column: 'position'
}

}
Expand Up @@ -15,31 +15,39 @@ class DeVariantSubjectSummaryCoreDb {
Integer allele2

DeVariantSubjectDetailCoreDb jDetail
DeVariantSubjectIdxCoreDb subjectIndex

static belongsTo = [dataset: DeVariantDatasetCoreDb, assay: DeSubjectSampleMapping] //TODO: implement constraint on dataset



static constraints = {
variant(nullable: true)
variantFormat(nullable: true)
variantType(nullable: true)
subjectIndex(nullable: true)
}

static mapping = {
table schema: 'deapp'
table name: 'de_variant_subject_summary'
table schema: 'deapp', name: 'de_variant_subject_summary'
version false
id column:'variant_subject_summary_id', generator: 'sequence', params: [sequence: 'de_variant_subject_summary_seq']
dataset column: 'dataset_id'
id column:'variant_subject_summary_id',
generator: 'sequence',
params: [sequence: 'de_variant_subject_summary_seq', schema: 'deapp']

dataset column: 'dataset_id', insertable: false, updateable: false
assay column: 'assay_id'
subjectId column: 'subject_id', insertable: false, updateable: false

// this is needed due to a Criteria bug.
// see https://forum.hibernate.org/viewtopic.php?f=1&t=1012372
columns {
jDetail {
column name: 'chr'
column name: 'pos'
}
subjectIndex {
column name: 'dataset_id'
column name: 'subject_id'
}
}
}
}
40 changes: 37 additions & 3 deletions grails-app/domain/org/transmartproject/db/ontology/I2b2.groovy
@@ -1,5 +1,8 @@
package org.transmartproject.db.ontology

import org.transmartproject.core.exceptions.UnexpectedResultException
import org.transmartproject.core.ontology.Study

class I2b2 extends AbstractI2b2Metadata implements Serializable {

BigDecimal cTotalnum
Expand Down Expand Up @@ -27,9 +30,9 @@ class I2b2 extends AbstractI2b2Metadata implements Serializable {

AbstractI2b2Metadata.mapping.delegate = delegate
AbstractI2b2Metadata.mapping()
}
}

static constraints = {
static constraints = {
cTotalnum nullable: true
cComment nullable: true
mAppliedPath nullable: false, maxSize: 700
Expand All @@ -44,6 +47,37 @@ class I2b2 extends AbstractI2b2Metadata implements Serializable {

AbstractI2b2Metadata.constraints.delegate = delegate
AbstractI2b2Metadata.constraints()
}
}

@Override
Study getStudy() {
def trial

def matcher = cComment =~ /(?<=^trial:).+/
if (matcher.find()) {
trial = matcher.group 0
}

if (!trial) {
return null
}

def query = sessionFactory.currentSession.createQuery '''
SELECT I
FROM I2b2 I, I2b2TrialNodes TN
WHERE (I.fullName = TN.fullName) AND
TN.trial = :trial'''

query.setParameter 'trial', trial

def res = query.list()
if (res.size() > 1) {
throw new UnexpectedResultException("More than one study with name $trial")
} else if (res.size() == 1) {
new StudyImpl(ontologyTerm: res[0])
} else {
null
}
}

}
Expand Up @@ -12,7 +12,7 @@ class I2b2Secure extends AbstractI2b2Metadata implements Serializable {

id composite: ['fullName', 'name']

secureObjectToken name: 'secure_obj_token'
secureObjectToken column: 'secure_obj_token'

AbstractI2b2Metadata.mapping.delegate = delegate
AbstractI2b2Metadata.mapping()
Expand Down

0 comments on commit 8a31b43

Please sign in to comment.