source: trunk/grails-app/conf/BootStrap.groovy @ 379

Last change on this file since 379 was 379, checked in by roberth, 9 years ago

Updated the person, personrole and personaffiliation view templates in order to create a consistent example for simple tables.
Also updated bootstrap.groovy to contain several persons and roles

  • Property svn:keywords set to Author Rev Date
File size: 32.4 KB
Line 
1import dbnp.studycapturing.*
2
3import dbnp.data.Ontology
4import dbnp.data.Term
5
6/**
7 * Application Bootstrapper
8 * @Author Jeroen Wesbeek
9 * @Since 20091021
10 *
11 * Revision information:
12 * $Rev: 379 $
13 * $Author: roberth $
14 * $Date: 2010-04-26 12:31:00 +0000 (ma, 26 apr 2010) $
15 */
16class BootStrap {
17        def init = {servletContext ->
18                // define timezone
19                System.setProperty('user.timezone', 'CET')
20
21                // we could also check if we are in development by GrailsUtil.environment == GrailsApplication.ENV_DEVELOPMENT
22                if (Study.count() == 0) {
23                        println ".development bootstrapping...";
24
25                        // add NCBI species ontology
26                        println ".adding NCBI species ontology"
27                        def speciesOntology = new Ontology(
28                                name: 'NCBI organismal classification',
29                                description: 'A taxonomic classification of living organisms and associated artifacts for their controlled description within the context of databases.',
30                                url: 'http://www.ncbi.nlm.nih.gov/Taxonomy/taxonomyhome.html/',
31                                versionNumber: '1.2',
32                                ncboId: '1132',
33                                ncboVersionedId: '38802'
34                        ).with { if (!validate()) { errors.each { println it} } else save()}
35
36                        // add TERMS
37                        println ".adding mouse term"
38                        def mouseTerm = new Term(
39                                name: 'Mus musculus',
40                                ontology: speciesOntology,
41                                accession: '10090'
42                        ).with { if (!validate()) { errors.each { println it} } else save()}
43                        println ".adding human term"
44                        def humanTerm = new Term(
45                                name: 'Homo sapiens',
46                                ontology: speciesOntology,
47                                accession: '9606'
48                        ).with { if (!validate()) { errors.each { println it} } else save()}
49
50                        // Create a few persons, roles and Affiliations
51                        println ".adding persons, roles and affiliations"
52                        def affiliation1 = new PersonAffiliation(
53                            name: "Science Institute NYC"
54                        ).save();
55                        def affiliation2 = new PersonAffiliation(
56                            name: "InfoStats GmbH, Hamburg"
57                        ).save();
58                        def role1 = new PersonRole(
59                            name: "Principal Investigator"
60                        ).save();
61                        def role2 = new PersonRole(
62                            name: "Statician"
63                        ).save();
64
65                        // Create 30 roles to test pagination
66                        def roleCounter = 1;
67                        30.times { new PersonRole( name: "Rol #${roleCounter++}" ).save() }
68
69                        // Create persons
70                        def person1 = new Person(
71                            lastName: "Scientist",
72                            firstName: "John",
73                            midInitials: "R",
74                            email: "john@scienceinstitute.com",
75                            phone: "1-555-3049",
76                            address: "First street 2,NYC"
77                        )
78                        .addToAffiliations( affiliation1 )
79                        .addToAffiliations( affiliation2 )
80                        .save();
81                       
82                        def person2 = new Person(
83                            lastName: "Statician",
84                            firstName: "Jane",
85                            midInitials: "W",
86                            email: "jane@statisticalcompany.de",
87                            phone: "49-555-8291",
88                            address: "Dritten strasse 38, Hamburg, Germany"
89                        )
90                        .addToAffiliations( affiliation2 )
91                        .save();
92
93                        // Create 30 persons to test pagination
94                        def personCounter = 1;
95                        30.times { new Person( firstName: "Person #${roleCounter}", lastName: "Testperson", email: "email${roleCounter++}@testdomain.com" ).save() }
96
97 /*   COMMENTED OUT BECAUSE IT BREAKS EVERYTHING AFTER REFACTORING THE DATAMODEL
98
99                        // ontologies
100                        def speciesOntology = new Ontology(
101                                name: 'NCBI Taxonomy',
102                                shortName: 'Taxon',
103                                url: 'http://www.obofoundry.org/cgi-bin/detail.cgi?id=ncbi_taxonomy'
104                        ).with { if (!validate()) { errors.each { println it} } else save()}
105
106                        def humanBodyOntology = new Ontology(
107                                name: 'Foundational Model of Anatomy',
108                                shortName: 'HumanBody',
109                                url: 'http://bioportal.bioontology.org/ontologies/39966'
110                        ).with { if (!validate()) { errors.each { println it} } else save()}
111
112                        def nciOntology = new Ontology(
113                                name: 'NCI Thesaurus',
114                                shortName: 'NCI',
115                                url: 'http://bioportal.bioontology.org/ontologies/42331'
116                        ).with { if (!validate()) { errors.each { println it} } else save()}
117
118                        // terms
119                        def mouseTerm = new Term(
120                                name: 'Mus musculus',
121                                ontology: speciesOntology,
122                                accession: '10090'
123                        ).with { if (!validate()) { errors.each { println it} } else save()}
124                        def humanTerm = new Term(
125                                name: 'Homo sapiens',
126                                ontology: speciesOntology,
127                                accession: '9606'
128                        ).with { if (!validate()) { errors.each { println it} } else save()}
129                        def arabTerm = new Term(
130                                name: 'Arabidopsis thaliana',
131                                ontology: speciesOntology,
132                                accession: '3702'
133                        ).with { if (!validate()) { errors.each { println it} } else save()}
134                       
135                        def bloodTerm = new Term(
136                                name: 'Portion of blood',
137                                ontology: humanBodyOntology,
138                                accession: '9670'
139                        ).with { if (!validate()) { errors.each { println it} } else save()}
140
141                        def c57bl6Term = new Term(
142                                name: 'C57BL/6 Mouse',
143                                ontology: nciOntology,
144                                accession: 'C14424'
145                        ).with { if (!validate()) { errors.each { println it} } else save()}
146
147                        def madmaxOntology = new Ontology(
148                                name: 'Madmax ontology',
149                                shortName: 'MDMX',
150                                url: 'madmax.bioinformatics.nl'
151                        ).with { if (!validate()) { errors.each { println it} } else save()}
152
153                        def treatmentTerm = new Term(
154                                name: 'ExperimentalProtocol',
155                                ontology: madmaxOntology,
156                                accession: 'P-MDMXGE-264'
157                        ).with { if (!validate()) { errors.each { println it} } else save()}
158
159                        def dietProtocol = new Protocol(
160                                name: 'Diet treatment Protocol NuGO PPS3 leptin module',
161                                reference: treatmentTerm
162                        ).with { if (!validate()) { errors.each { println it} } else save()}
163
164                        def boostProtocol = new Protocol(
165                                name: 'Boost treatment Protocol NuGO PPS3 leptin module',
166                                reference: treatmentTerm
167                        ).with { if (!validate()) { errors.each { println it} } else save()}
168
169                        def fastingProtocol = new Protocol(
170                                name: 'Fasting',
171                                reference: treatmentTerm
172                        ).with { if (!validate()) { errors.each { println it} } else save()}
173
174
175                        // ParameterStringListItems
176                        def oil10= new ParameterStringListItem(
177                                name: '10% fat (palm oil)'
178                        ).with { if (!validate()) { errors.each { println it} } else save()}
179                        def oil45= new ParameterStringListItem(
180                                name: '45% fat (palm oil)'
181                        ).with { if (!validate()) { errors.each { println it} } else save()}
182                        def vehicle= new ParameterStringListItem(
183                                name: 'Vehicle'
184                        ).with { if (!validate()) { errors.each { println it} } else save()}
185                        def leptin= new ParameterStringListItem(
186                                name: 'Leptin'
187                        ).with { if (!validate()) { errors.each { println it} } else save()}
188
189
190                        dietProtocol
191                        .addToParameters(new ProtocolParameter(
192                                name: 'Diet',
193                                type: ProtocolParameterType.STRINGLIST,
194                                listEntries: [oil10,oil45]))
195                        .save()
196
197                        boostProtocol
198                        .addToParameters(new ProtocolParameter(
199                                name: 'Compound',
200                                type: ProtocolParameterType.STRINGLIST,
201                                listEntries: [vehicle,leptin]))
202                        .save()
203
204                        fastingProtocol
205                        .addToParameters(new ProtocolParameter(
206                                name: 'Fasting period',
207                                type: ProtocolParameterType.STRING))
208                        .save()
209
210
211                        // sampling event protocols
212
213                        def liverSamplingProtocol = new Protocol(
214                                name: 'Liver sampling'
215                        ).with { if (!validate()) { errors.each { println it} } else save()}
216
217                        liverSamplingProtocol
218                        .addToParameters(new ProtocolParameter(
219                                name: 'Sample weight',
220                                unit: 'mg',
221                                type: ProtocolParameterType.FLOAT))
222                        .save()
223
224                        def bloodSamplingProtocol = new Protocol(
225                                name: 'Blood sampling'
226                        ).with { if (!validate()) { errors.each { println it} } else save()}
227
228                        bloodSamplingProtocol
229                        .addToParameters(new ProtocolParameter(
230                                name: 'Sample volume',
231                                unit: 'ml',
232                                type: ProtocolParameterType.FLOAT))
233                        .save()
234 */
235                        // create system user
236
237                        /*def systemUser = userService.createUser(InstanceGenerator.user(
238                                username: 'system',
239                                pass: 'system',
240                                passConfirm: 'system',
241                                enabled: true
242                        ))*/
243
244 
245                        def genderField = new TemplateField(
246                                name: 'Gender',type: TemplateFieldType.STRINGLIST,
247                                listEntries: [new TemplateFieldListItem(name:'Male'),new TemplateFieldListItem(name: 'Female')])
248                        .with { if (!validate()) { errors.each { println it} } else save()}
249
250                        def ageField = new TemplateField(
251                                name: 'Age (years)',type: TemplateFieldType.INTEGER,unit: 'years')
252                        .with { if (!validate()) { errors.each { println it} } else save()}
253
254                        def genotypeField = new TemplateField(
255                                name: 'Genotype', type: TemplateFieldType.ONTOLOGYTERM)
256                        .with { if (!validate()) { errors.each { println it} } else save()}
257
258                        def genotypeTypeField = new TemplateField(
259                                name: 'Genotype type',type: TemplateFieldType.STRINGLIST,
260                                listEntries: [new TemplateFieldListItem(name:'wildtype'),
261                                        new TemplateFieldListItem(name:'transgenic'),
262                                        new TemplateFieldListItem(name:'knock-out'),
263                                        new TemplateFieldListItem(name:'knock-in')])
264                        .with { if (!validate()) { errors.each { println it} } else save()}
265
266
267                        // Nutritional study template
268
269                        println ".adding academic study template..."
270                        def studyTemplate = new Template(
271                                name: 'Academic study', entity: dbnp.studycapturing.Study)
272                                .addToFields(new TemplateField(name: 'Description',type: TemplateFieldType.TEXT))
273                                .addToFields(new TemplateField(name: 'Study code',type: TemplateFieldType.STRING))
274                                .addToFields(new TemplateField(name: 'Objectives',type: TemplateFieldType.TEXT))
275                                .addToFields(new TemplateField(name: 'Consortium',type: TemplateFieldType.STRING))
276                                .addToFields(new TemplateField(name: 'Cohort name',type: TemplateFieldType.STRING))
277                                .addToFields(new TemplateField(name: 'Time zone',type: TemplateFieldType.STRING))
278                                .addToFields(new TemplateField(name: 'Responsible scientist',type: TemplateFieldType.STRING))
279                                .addToFields(new TemplateField(name: 'Lab id',type: TemplateFieldType.STRING))
280                                .addToFields(new TemplateField(name: 'Institute',type: TemplateFieldType.STRING))
281                        .with { if (!validate()) { errors.each { println it} } else save()}
282
283                        // Mouse template
284                        println ".adding mouse subject template..."
285                        def mouseTemplate = new Template(
286                                name: 'Mouse', entity: dbnp.studycapturing.Subject)
287                        .addToFields(new TemplateField(
288                                name: 'Strain', type: TemplateFieldType.ONTOLOGYTERM))
289                        .addToFields(genotypeField)
290                        .addToFields(genotypeTypeField)
291                        .addToFields(genderField)
292                        .addToFields(new TemplateField(
293                                name: 'Age (weeks)', type: TemplateFieldType.INTEGER, unit: 'weeks'))
294                        .addToFields(new TemplateField(
295                                name: 'Age type',type: TemplateFieldType.STRINGLIST,
296                                listEntries: [new TemplateFieldListItem(name:'postnatal'),new TemplateFieldListItem(name:'embryonal')]))
297                        .addToFields(new TemplateField(
298                                name: 'Cage',type: TemplateFieldType.STRING))
299                        .addToFields(new TemplateField(
300                                name: '#Mice in cage',type: TemplateFieldType.INTEGER))
301                        .addToFields(new TemplateField(
302                                name: 'Litter size',type: TemplateFieldType.INTEGER))
303                        .addToFields(new TemplateField(
304                                name: 'Weight (g)', type: TemplateFieldType.DOUBLE, unit: 'gram'))
305                        .with { if (!validate()) { errors.each { println it} } else save()}
306
307                        // Human template
308                        println ".adding human subject template..."
309                        def humanTemplate = new Template(
310                                name: 'Human', entity: dbnp.studycapturing.Subject)
311                        .addToFields(genderField)
312                        .addToFields(ageField)
313                        .addToFields(new TemplateField(
314                                name: 'DOB',type: TemplateFieldType.DATE))
315                        .addToFields(new TemplateField(
316                                name: 'Height',type: TemplateFieldType.DOUBLE, unit: 'm'))
317                        .addToFields(new TemplateField(
318                                name: 'Weight (kg)',type: TemplateFieldType.DOUBLE, unit: 'kg'))
319                        .addToFields(new TemplateField(
320                                name: 'BMI',type: TemplateFieldType.DOUBLE, unit: 'kg/m2'))
321                        .addToFields(new TemplateField(
322                                name: 'Race',type: TemplateFieldType.STRING))
323                        .addToFields(new TemplateField(
324                                name: 'Waist circumference',type: TemplateFieldType.FLOAT, unit: 'cm'))
325                        .addToFields(new TemplateField(
326                                name: 'Hip circumference',type: TemplateFieldType.FLOAT, unit: 'cm'))
327                        .addToFields(new TemplateField(
328                                name: 'Systolic blood pressure',type: TemplateFieldType.FLOAT, unit: 'mmHg'))
329                        .addToFields(new TemplateField(
330                                name: 'Diastolic blood pressure',type: TemplateFieldType.FLOAT, unit: 'mmHg'))
331                        .addToFields(new TemplateField(
332                                name: 'Heart rate',type: TemplateFieldType.FLOAT, unit: 'beats/min'))
333                        .addToFields(new TemplateField(
334                                name: 'Run-in-food',type: TemplateFieldType.TEXT))
335                        .with { if (!validate()) { errors.each { println it} } else save()}
336
337
338                        def sampleDescriptionField = new TemplateField(
339                                name: 'Description',type: TemplateFieldType.TEXT)
340                        .with { if (!validate()) { errors.each { println it} } else save()}
341                        def sampleTypeField = new TemplateField(
342                                name: 'SampleType',type: TemplateFieldType.STRING)
343                        .with { if (!validate()) { errors.each { println it} } else save()}
344                        def sampleProtocolField = new TemplateField(
345                                name: 'SampleProtocol',type: TemplateFieldType.STRING)
346                        .with { if (!validate()) { errors.each { println it} } else save()}
347                        def sampleVialTextField = new TemplateField(
348                                name: 'Text on vial',type: TemplateFieldType.STRING)
349                        .with { if (!validate()) { errors.each { println it} } else save()}
350
351                        // Human sample template
352                        println ".adding human sample template..."
353                        def humanSampleTemplate = new Template(
354                                name: 'Human tissue sample', entity: dbnp.studycapturing.Sample)
355                        .addToFields(sampleDescriptionField)
356                        .addToFields(sampleTypeField)
357                        .addToFields(sampleProtocolField)
358                        .addToFields(sampleVialTextField)
359                        .with { if (!validate()) { errors.each { println it} } else save()}
360
361                        //Plant template
362                        println ".adding plant template..."
363                        def plantTemplate = new Template(
364                                name: 'Plant template', entity: dbnp.studycapturing.Subject)
365                        .addToFields(new TemplateField(
366                                name: 'Variety', type: TemplateFieldType.STRING))
367                        .addToFields(new TemplateField(
368                                name: 'Ecotype', type: TemplateFieldType.STRING))
369                        .addToFields(genotypeField)
370                        .addToFields(genotypeTypeField)
371                        .addToFields(new TemplateField(
372                                name: 'Growth location', type: TemplateFieldType.STRINGLIST,
373                                listEntries: [new TemplateFieldListItem(name:'Greenhouse'),new TemplateFieldListItem(name: 'Field')]))
374                        .addToFields(new TemplateField(
375                                name: 'Room', type: TemplateFieldType.STRING,
376                                comment: 'Chamber number in case of Greenhouse'))
377                        .addToFields(new TemplateField(
378                                name: 'Position X', type: TemplateFieldType.FLOAT))
379                        .addToFields(new TemplateField(
380                                name: 'Position Y', type: TemplateFieldType.FLOAT))
381                        .addToFields(new TemplateField(
382                                name: 'Block', type: TemplateFieldType.STRING))
383                        .addToFields(new TemplateField(
384                                name: 'Temperature at day', type: TemplateFieldType.FLOAT))
385                        .addToFields(new TemplateField(
386                                name: 'Temperature at night', type: TemplateFieldType.FLOAT))
387                        .addToFields(new TemplateField(
388                                name: 'Photo period', type: TemplateFieldType.STRING))
389                        .addToFields(new TemplateField(
390                                name: 'Light intensity', type: TemplateFieldType.STRING))
391                        .addToFields(new TemplateField(
392                                name: 'Start date', type: TemplateFieldType.DATE))
393                        .addToFields(new TemplateField(
394                                name: 'Harvest date', type: TemplateFieldType.DATE))
395                        .addToFields(new TemplateField(
396                                name: 'Growth type', type: TemplateFieldType.STRINGLIST,
397                                listEntries: [new TemplateFieldListItem(name:'Standard'),new TemplateFieldListItem(name: 'Experimental')]))
398                        .addToFields(new TemplateField(
399                                name: 'Growth protocol', type: TemplateFieldType.TEXT))
400                        .addToFields(new TemplateField(
401                                name: 'Harvest delay', type: TemplateFieldType.TEXT))
402                        .with { if (!validate()) { errors.each { println it} } else save()}
403
404                        println ".adding plant sample template..."
405                        def plantSampleTemplate = new Template(
406                                name: 'Plant sample', entity: dbnp.studycapturing.Sample)
407                        .addToFields(sampleDescriptionField)
408                        .addToFields(sampleTypeField)
409                        .addToFields(sampleProtocolField)
410                        .addToFields(sampleVialTextField)
411                        .with { if (!validate()) { errors.each { println it} } else save()}
412
413
414                        // Event templates
415                        println ".adding event templates..."
416                        def dietTreatmentTemplate = new Template(
417                                name: 'Diet treatment ', entity: dbnp.studycapturing.Event)
418                        .addToFields(sampleDescriptionField)
419                        .addToFields(new TemplateField(
420                                name: 'Diet', type: TemplateFieldType.STRINGLIST,
421                                listEntries: [new TemplateFieldListItem(name:'10% fat (palm oil)'),new TemplateFieldListItem(name: '45% fat (palm oil)')]))
422                        .with { if (!validate()) { errors.each { println it} } else save()}
423
424                        def boostTreatmentTemplate = new Template(
425                                name: 'Boost treatment ', entity: dbnp.studycapturing.Event)
426                        .addToFields(sampleDescriptionField)
427                        .addToFields(new TemplateField(
428                                name: 'Compound', type: TemplateFieldType.STRING,
429                                listEntries: [new TemplateFieldListItem(name:'Vehicle'),new TemplateFieldListItem(name: 'Leptin')]))
430                        .with { if (!validate()) { errors.each { println it} } else save()}
431
432                        /*
433                        //events
434                        def eventDiet = new EventDescription(
435                                name: 'Diet treatment',
436                                description: 'Diet treatment (fat percentage)',
437                                classification: treatmentTerm,
438                                protocol: dietProtocol,
439                                isSamplingEvent: false
440                        ).with { if (!validate()) { errors.each { println it} } else save()}
441
442                        def eventBoost = new EventDescription(
443                                name: 'Boost treatment',
444                                description: 'Boost treatment (leptin or vehicle)',
445                                classification: treatmentTerm,
446                                protocol: boostProtocol,
447                                isSamplingEvent: false
448                        ).with { if (!validate()) { errors.each { println it} } else save()}
449
450                        def samplingEvent = new EventDescription(
451                                name: 'Liver extraction',
452                                description: 'Liver sampling for transcriptomics arrays',
453                                protocol: liverSamplingProtocol,
454                                isSamplingEvent: true
455                        ).with { if (!validate()) { errors.each { println it} } else save()}
456
457                        def bloodSamplingEventDescription = new EventDescription(
458                                name: 'Blood extraction',
459                                description: 'Blood extraction targeted at lipid assays',
460                                protocol: bloodSamplingProtocol,
461                                isSamplingEvent: true
462                        ).with { if (!validate()) { errors.each { println it} } else save()}
463
464
465            def fastingTreatment = new EventDescription(
466                                name: 'Fasting treatment',
467                                description: 'Fasting Protocol NuGO PPSH',
468                                protocol: fastingProtocol,
469                                isSamplingEvent: false
470                        ).with { if (!validate()) { errors.each { println it} } else save()}
471
472                        println('Adding PPS3 study...')
473                        */
474                        // studies
475                        println ".adding NuGO PPS3 leptin example study..."
476                        def exampleStudy = new Study(
477                                template: studyTemplate,
478                                title:"NuGO PPS3 mouse study leptin module",
479                                code:"PPS3_leptin_module",
480                                researchQuestion:"Leptin etc.",
481                                ecCode:"2007117.c",
482                                startDate: Date.parse('yyyy-MM-dd','2007-12-11')
483                        )
484                        .with { if (!validate()) { errors.each { println it} } else save()}
485
486                        exampleStudy.setFieldValue( 'Description', "C57Bl/6 mice were fed a high fat (45 en%) or low fat (10 en%) diet after a four week run-in on low fat diet. After 1 week 10 mice that received a low fat diet were given an IP leptin challenge and 10 mice of the low-fat group received placebo injections. The same procedure was performed with mice that were fed the high-fat diet. After 4 weeks the procedure was repeated. In total 80 mice were culled." )
487                        exampleStudy.save()
488
489                        println ".adding NuGO PPSH example study..."
490                        def exampleHumanStudy = new Study(
491                                template: studyTemplate,
492                                title:"Human example template",
493                                code:"Human example code",
494                                researchQuestion:"Leptin etc.",
495                                ecCode:"2007117.c",
496                                startDate: Date.parse('yyyy-MM-dd','2007-12-11')
497                        )
498                        .with { if (!validate()) { errors.each { println it} } else save()}
499
500                        exampleHumanStudy.setFieldValue( 'Description', "C57Bl/6 mice were fed a high fat (45 en%) or low fat (10 en%) diet after a four week run-in on low fat diet. After 1 week 10 mice that received a low fat diet were given an IP leptin challenge and 10 mice of the low-fat group received placebo injections. The same procedure was performed with mice that were fed the high-fat diet. After 4 weeks the procedure was repeated. In total 80 mice were culled." )
501                        exampleHumanStudy.save()
502
503                        def evLF = new Event(
504                                startTime: Date.parse('yyyy-MM-dd','2008-01-07'),
505                                endTime: Date.parse('yyyy-MM-dd','2008-01-14'),
506                                template: dietTreatmentTemplate
507                        )
508                        .with { if (!validate()) { errors.each { println it} } else save()}
509                        evLF.setFieldValue( 'Diet','10% fat (palm oil)' )
510                        evLF.save(flush:true)
511                        // TODO: find out why Diet is not set and Compound is
512
513                        def evHF = new Event(
514                                startTime: Date.parse('yyyy-MM-dd','2008-01-07'),
515                                endTime: Date.parse('yyyy-MM-dd','2008-01-14'),
516                                template: dietTreatmentTemplate
517                        )
518                        .setFieldValue( 'Diet','45% fat (palm oil)' )
519                        .with { if (!validate()) { errors.each { println it} } else save()}
520
521                        def evBV = new Event(
522                                startTime: Date.parse('yyyy-MM-dd','2008-01-07'),
523                                endTime: Date.parse('yyyy-MM-dd','2008-01-14'),
524                                template: boostTreatmentTemplate
525                        )
526                        .setFieldValue( 'Compound','Vehicle' )
527                        .with { if (!validate()) { errors.each { println it} } else save()}
528
529                        def evBL = new Event(
530                                startTime: Date.parse('yyyy-MM-dd','2008-01-07'),
531                                endTime: Date.parse('yyyy-MM-dd','2008-01-14'),
532                                template: boostTreatmentTemplate
533                        )
534                        .setFieldValue( 'Compound','Leptin' )
535                        .with { if (!validate()) { errors.each { println it} } else save()}
536
537                        /*
538                        def evLF4 = new Event(
539                                startTime: Date.parse('yyyy-MM-dd','2008-01-07'),
540                                endTime: Date.parse('yyyy-MM-dd','2008-02-04'),
541                                eventDescription: eventDiet,
542                                parameterStringValues: ['Diet':'10% fat (palm oil)']
543                        ).with { if (!validate()) { errors.each { println it} } else save()}
544
545                        def evHF4 = new Event(
546                                startTime: Date.parse('yyyy-MM-dd','2008-01-07'),
547                                endTime: Date.parse('yyyy-MM-dd','2008-02-04'),
548                                eventDescription: eventDiet,
549                                parameterStringValues: ['Diet':'45% fat (palm oil)']
550                        ).with { if (!validate()) { errors.each { println it} } else save()}
551
552                        def evBV4 = new Event(
553                                startTime: Date.parse('yyyy-MM-dd','2008-01-07'),
554                                endTime: Date.parse('yyyy-MM-dd','2008-02-04'),
555                                eventDescription: eventBoost,
556                                parameterStringValues: ['Compound':'Vehicle']
557                        ).with { if (!validate()) { errors.each { println it} } else save()}
558
559                        def evBL4 = new Event(
560                                startTime: Date.parse('yyyy-MM-dd','2008-01-07'),
561                                endTime: Date.parse('yyyy-MM-dd','2008-02-04'),
562                                eventDescription: eventBoost,
563                                parameterStringValues: ['Compound':'Leptin']
564                        ).with { if (!validate()) { errors.each { println it} } else save()}
565
566                        def evS = new SamplingEvent(
567                                        startTime: Date.parse('yyyy-MM-dd','2008-01-14'),
568                                        endTime: Date.parse('yyyy-MM-dd','2008-01-14'),
569                                        eventDescription: samplingEvent,
570                                        parameterFloatValues: ['Sample weight':5F]
571                        ).with { if (!validate()) { errors.each { println it} } else save()}
572
573                        def evS4 = new SamplingEvent(
574                                        startTime: Date.parse('yyyy-MM-dd','2008-02-04'),
575                                        endTime: Date.parse('yyyy-MM-dd','2008-02-04'),
576                                        eventDescription: samplingEvent,
577                                        parameterFloatValues: ['Sample weight':5F]
578                        ).with { if (!validate()) { errors.each { println it} } else save()}
579                        */
580
581                        // Add events to study
582                        exampleStudy
583                        .addToEvents(evLF)
584                        .addToEvents(evHF)
585                        .addToEvents(evBV)
586                        .addToEvents(evBL)
587                        /*
588                        .addToEvents(evLF4)
589                        .addToEvents(evHF4)
590                        .addToEvents(evBV4)
591                        .addToEvents(evBL4)
592                        .addToSamplingEvents(evS)
593                        .addToSamplingEvents(evS4)
594                        */
595                        .save()
596
597                        def LFBV1 = new EventGroup(name:"10% fat + vehicle for 1 week")
598                        .addToEvents(evLF)
599                        .addToEvents(evBV)
600                        .with { if (!validate()) { errors.each { println it} } else save()}
601
602                        def LFBL1 = new EventGroup(name:"10% fat + leptin for 1 week")
603                        .addToEvents(evLF)
604                        .addToEvents(evBL)
605                        .with { if (!validate()) { errors.each { println it} } else save()}
606
607                        def HFBV1 = new EventGroup(name:"45% fat + vehicle for 1 week")
608                        .addToEvents(evHF)
609                        .addToEvents(evBV)
610                        .with { if (!validate()) { errors.each { println it} } else save()}
611
612                        def HFBL1 = new EventGroup(name:"45% fat + leptin for 1 week")
613                        .addToEvents(evHF)
614                        .addToEvents(evBL)
615                        .with { if (!validate()) { errors.each { println it} } else save()}
616
617                        /*
618                        def LFBV4 = new EventGroup(name:"10% fat + vehicle for 4 weeks")
619                        .addToEvents(evLF4)
620                        .addToEvents(evBV4)
621                        .with { if (!validate()) { errors.each { println it} } else save()}
622
623                        def LFBL4 = new EventGroup(name:"10% fat + leptin for 4 weeks")
624                        .addToEvents(evLF4)
625                        .addToEvents(evBL4)
626                        .with { if (!validate()) { errors.each { println it} } else save()}
627
628                        def HFBV4 = new EventGroup(name:"45% fat + vehicle for 4 weeks")
629                        .addToEvents(evHF4)
630                        .addToEvents(evBV4)
631                        .with { if (!validate()) { errors.each { println it} } else save()}
632
633                        def HFBL4 = new EventGroup(name:"45% fat + leptin for 4 weeks")
634                        .addToEvents(evHF4)
635                        .addToEvents(evBL4)
636                        .with { if (!validate()) { errors.each { println it} } else save()}
637                        */
638
639            // Add subjects and samples and compose EventGroups
640
641                        def x=1
642                        40.times {
643                                def currentSubject = new Subject(
644                                        name: "A" + x++,
645                                        species: mouseTerm,
646                                        template: mouseTemplate,
647                                )
648                                .setFieldValue("Gender", "Male")
649                                //.setFieldValue("Genotype", c57bl6Term)
650                                .setFieldValue("Age (weeks)", 17)
651                                .setFieldValue("Cage", "" + (int)(x/2))
652                                .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
653
654                                exampleStudy.addToSubjects(currentSubject)
655                                .with { if (!validate()) { errors.each { println it} } else save()}
656
657                                // Add subject to appropriate EventGroup
658                                /*
659                                if (x > 70) { HFBL4.addToSubjects(currentSubject).save() }
660                                else if (x > 60) { HFBV4.addToSubjects(currentSubject).save() }
661                                else if (x > 50) { LFBL4.addToSubjects(currentSubject).save() }
662                                else if (x > 40) { LFBV4.addToSubjects(currentSubject).save() }
663                                else if (x > 30) { HFBL1.addToSubjects(currentSubject).save() }
664                                else if (x > 20) { HFBV1.addToSubjects(currentSubject).save() }
665                                else if (x > 10) { LFBL1.addToSubjects(currentSubject).save() }
666                                else             { LFBV1.addToSubjects(currentSubject).save() }
667                                */
668
669                                if (x > 30) { HFBL1.addToSubjects(currentSubject).save() }
670                                else if (x > 20) { HFBV1.addToSubjects(currentSubject).save() }
671                                else if (x > 10) { LFBL1.addToSubjects(currentSubject).save() }
672                                else             { LFBV1.addToSubjects(currentSubject).save() }
673
674                        }
675
676                        // Add EventGroups to study
677                        exampleStudy
678                        .addToEventGroups(LFBV1)
679                        .addToEventGroups(LFBL1)
680                        .addToEventGroups(HFBV1)
681                        .addToEventGroups(HFBL1)
682                        //.addToEventGroups(LFBV4)
683                        //.addToEventGroups(LFBL4)
684                        //.addToEventGroups(HFBV4)
685                        //.addToEventGroups(HFBL4)
686
687                        // Add persons to study
688                        def studyperson1 = new StudyPerson( person: person1, role: role1 ).save();
689                        def studyperson2 = new StudyPerson( person: person2, role: role2 ).save();
690
691                        exampleStudy
692                        .addToPersons( studyperson1 )
693                        .addToPersons( studyperson2 )
694                        .save()
695
696                        /*
697                        println 'Adding PPSH study'
698
699                        def humanStudy = new Study(
700                                template: studyTemplate,
701                                title:"NuGO PPS human study",
702                                code:"PPSH",
703                                researchQuestion:"How much are fasting plasma and urine metabolite levels affected by prolonged fasting ?",
704                                description:"Human study",
705                                ecCode:"unknown",
706                                startDate: Date.parse('yyyy-MM-dd','2009-01-01')
707                        ).with { if (!validate()) { errors.each { println it} } else save()}
708
709                        def fastingEvent = new Event(
710                                        startTime: Date.parse('yyyy-MM-dd','2008-01-14'),
711                                        endTime: Date.parse('yyyy-MM-dd','2008-01-14'),
712                                        eventDescription: fastingTreatment,
713                                        parameterStringValues: ['Fasting period':'8h']);
714
715                        def bloodSamplingEvent = new SamplingEvent(
716                                        startTime: Date.parse('yyyy-MM-dd','2008-01-14'),
717                                        endTime: Date.parse('yyyy-MM-dd','2008-01-14'),
718                                        eventDescription: bloodSamplingEventDescription,
719                                        parameterFloatValues: ['Sample volume':4.5F]);
720
721                        def rootGroup = new EventGroup(name: 'Root group');
722                        rootGroup.addToEvents fastingEvent
723                        rootGroup.addToEvents bloodSamplingEvent
724                        rootGroup.save()
725
726            def y = 1
727            11.times {
728              def currentSubject = new Subject(
729                      name: "" + y++,
730                      species: humanTerm,
731                      template: humanTemplate).setFieldValue("Gender", (boolean) (x / 2) ? "Male" : "Female").setFieldValue("DOB", new java.text.SimpleDateFormat("dd-mm-yy").parse("01-02-19" + (10 + (int) (Math.random() * 80)))).setFieldValue("Age (years)", 30).setFieldValue("Height", Math.random() * 2F).setFieldValue("Weight (kg)", Math.random() * 150F).setFieldValue("BMI", 20 + Math.random() * 10F).with { if (!validate()) { errors.each { println it} } else save()}
732
733              rootGroup.addToSubjects currentSubject
734              rootGroup.save()
735
736              def currentSample = new Sample(
737                      name: currentSubject.name + '_B',
738                      material: bloodTerm,
739                      parentSubject: currentSubject,
740                      parentEvent: bloodSamplingEvent);
741
742
743              humanStudy.addToSubjects(currentSubject).addToSamples(currentSample).with { if (!validate()) { errors.each { println it} } else save()}
744          }
745
746          humanStudy.addToEvents(fastingEvent)
747          humanStudy.addToSamplingEvents(bloodSamplingEvent)
748          humanStudy.addToEventGroups rootGroup
749          humanStudy.save()
750
751                        // Add clinical data
752
753                        def lipidAssay = new dbnp.clinicaldata.ClinicalAssay(
754                                name: 'Lipid profile',
755                                approved: true
756                        ).with { if (!validate()) { errors.each { println it} } else save()}
757
758                        def ldlMeasurement = new dbnp.clinicaldata.ClinicalMeasurement(
759                                name: 'LDL',
760                                unit: 'mg/dL',
761                                type: dbnp.data.FeatureType.QUANTITATIVE,
762                                referenceValues: '100 mg/dL',
763                                detectableLimit: 250,
764                                isDrug: false, isIntake: true, inSerum: true
765                        ).with { if (!validate()) { errors.each { println it} } else save()}
766
767                        def hdlMeasurement = new dbnp.clinicaldata.ClinicalMeasurement(
768                                name: 'HDL',
769                                unit: 'mg/dL',
770                                type: dbnp.data.FeatureType.QUANTITATIVE,
771                                referenceValues: '50 mg/dL',
772                                detectableLimit: 100,
773                                isDrug: false, isIntake: true, inSerum: true
774                        ).with { if (!validate()) { errors.each { println it} } else save()}
775
776                        lipidAssay.addToMeasurements ldlMeasurement
777                        lipidAssay.addToMeasurements hdlMeasurement
778
779                        def lipidAssayInstance = new dbnp.clinicaldata.ClinicalAssayInstance(
780                                assay: lipidAssay
781                        ).with { if (!validate()) { errors.each { println it} } else save()}
782
783                        humanStudy.samples*.each {
784                                new dbnp.clinicaldata.ClinicalFloatData(
785                                        assay: lipidAssayInstance,
786                                        measurement: ldlMeasurement,
787                                        sample: it.name,
788                                        value: Math.round(Math.random()*ldlMeasurement.detectableLimit)
789                                ).with { if (!validate()) { errors.each { println it} } else save()}
790
791                                new dbnp.clinicaldata.ClinicalFloatData(
792                                        assay: lipidAssayInstance,
793                                        measurement: hdlMeasurement,
794                                        sample: it.name,
795                                        value: Math.round(Math.random()*hdlMeasurement.detectableLimit)
796                                ).with { if (!validate()) { errors.each { println it} } else save()}
797                        }
798
799                        // Add assay to study capture module
800
801                        def clinicalModule = new AssayModule(
802                                name: 'Clinical data',
803                                type: AssayType.CLINICAL_DATA,
804                                platform: 'clinical measurements',
805                                url: 'http://localhost:8080/gscf'
806                        ).with { if (!validate()) { errors.each { println it} } else save()}
807
808                        def lipidAssayRef = new Assay(
809                                name: 'Lipid profiling',
810                                module: clinicalModule,
811                                externalAssayId: lipidAssayInstance.id
812                        ).with { if (!validate()) { errors.each { println it} } else save()}
813
814                        humanStudy.samples*.each {
815                                lipidAssayRef.addToSamples(it)
816                        }
817                        lipidAssayRef.save()
818
819                        humanStudy.addToAssays(lipidAssayRef);
820                        humanStudy.save()
821*/
822                }
823        }
824
825        def destroy = {
826        }
827} 
Note: See TracBrowser for help on using the repository browser.