Skip to content

Commit 4d9744a

Browse files
committed
print modules
1 parent c577341 commit 4d9744a

6 files changed

Lines changed: 147 additions & 206 deletions

File tree

pegr/grails-app/controllers/pegr/ReportController.groovy

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,11 @@ class ReportController {
251251
}
252252
def data = reportService.fetchDataForReport(id)
253253
def imageMap = report.cohort?.imageMap
254-
[report: report, imageMap: imageMap, sampleList: data]
254+
255+
def jsonSlurper = new JsonSlurper()
256+
def modules = jsonSlurper.parseText(report.pipeline?.printModules)
257+
258+
[report: report, imageMap: imageMap, sampleList: data, modules: modules]
255259
}
256260

257261
def listFiles(Long id) {

pegr/grails-app/domain/pegr/Pipeline.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class Pipeline {
99
String workflowUrl
1010
String reportModules
1111
String sampleModules
12+
String printModules
1213
boolean isDefault
1314

1415
static constraints = {
@@ -19,6 +20,7 @@ class Pipeline {
1920
steps nullabel: false, blank: false, widget: 'textarea'
2021
reportModules nullable: true, blank: true, widget: 'textarea'
2122
sampleModules nullable: true, blank: true, widget: 'textarea'
23+
printModules nullable: true, blank: true, widget: 'textarea'
2224
note nullable: true, blank: true
2325
}
2426

pegr/grails-app/views/report/_moduleGelImage.gsp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
<h3>Images</h3>
12
<table class="table table-bordered" id="project-table">
23
<thead>
34
<tr>
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<section>
2+
<h4>Mapping Statistics (Read 1)</h4>
3+
<table class="table table-bordered">
4+
<thead>
5+
<tr>
6+
<th>ID</th>
7+
<th>Sequence Run</th>
8+
<th>Genome</th>
9+
<th class="text-right">Read Count (R1)</th>
10+
<th class="text-right">Uniquely Mapped Count (R1)</th>
11+
<th class="text-right">% Uniquely Mapped Count (R1)</th>
12+
<th class="text-right">Deduplicated Count (R1)</th>
13+
<th class="text-right">% Deduplicated Count (R1)</th>
14+
</tr>
15+
</thead>
16+
<tbody>
17+
<g:each in="${sampleList}" var="sample" status="n">
18+
<tr>
19+
<td rowspan="${Math.max(1, sample.alignmentCount)}">${sample.id}</td>
20+
<g:each in="${sample.experiments}" var="experiment" status="nExp">
21+
<g:if test="${nExp>0}"><tr></g:if>
22+
<g:each in="${experiment.alignments}" var="alignment" status="nAli">
23+
<g:if test="${nAli>0}"><tr></g:if>
24+
<td>${experiment?.runId}</td>
25+
<td>${alignment.genome}</td>
26+
<td class="text-right"><g:formatNumber number="${experiment.totalReads}" format="###,###,###" /></td>
27+
<td class="text-right"><g:formatNumber number="${alignment.uniquelyMappedReads}" format="###,###,###" /></td>
28+
<td class="text-right"><g:formatNumber number="${alignment.uniquelyMappedPct}" format="#0.0%" /></td>
29+
<td class="text-right"><g:formatNumber number="${alignment.dedupUniquelyMappedReads}" format="###,###,###" /></td>
30+
<td class="text-right"><g:formatNumber number="${alignment.deduplicatedPct}" format="#0.0%" /></td>
31+
</tr>
32+
</g:each>
33+
</g:each>
34+
</g:each>
35+
</tbody>
36+
</table>
37+
</section>
38+
<section>
39+
<h4>Mapping Statistics (Read 2)</h4>
40+
<table class="table table-bordered">
41+
<thead>
42+
<tr>
43+
<th>ID</th>
44+
<th>Sequence Run</th>
45+
<th>Genome</th>
46+
<th class="text-right">Read Count (R2)</th>
47+
<th class="text-right">Uniquely Mapped Count (R2)</th>
48+
<th class="text-right">% Uniquely Mapped Count (R2)</th>
49+
<th class="text-right">Deduplicated Count (R2)</th>
50+
<th class="text-right">% Deduplicated Count (R2)</th>
51+
</tr>
52+
</thead>
53+
<tbody>
54+
<g:each in="${sampleList}" var="sample" status="n">
55+
<tr>
56+
<td rowspan="${Math.max(1, sample.alignmentCount)}">${sample.id}</td>
57+
<g:each in="${sample.experiments}" var="experiment" status="nExp">
58+
<g:if test="${nExp>0}"><tr></g:if>
59+
<g:each in="${experiment.alignments}" var="alignment" status="nAli">
60+
<g:if test="${nAli>0}"><tr></g:if>
61+
<td>${experiment?.runId}</td>
62+
<td>${alignment.genome}</td>
63+
<td class="text-right"><g:formatNumber number="${experiment.totalReadsR2}" format="###,###,###" /></td>
64+
<td class="text-right"><g:formatNumber number="${alignment.uniquelyMappedReadsR2}" format="###,###,###" /></td>
65+
<td class="text-right"><g:formatNumber number="${alignment.uniquelyMappedPct2}" format="#0.0%" /></td>
66+
<td class="text-right"><g:formatNumber number="${alignment.dedupUniquelyMappedReadsR2}" format="###,###,###" /></td>
67+
<td class="text-right"><g:formatNumber number="${alignment.deduplicatedPct2}" format="#0.0%" /></td>
68+
</tr>
69+
</g:each>
70+
</g:each>
71+
</g:each>
72+
</tbody>
73+
</table>
74+
</section>
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<section>
2+
<h4>Advanced Analysis</h4>
3+
<ul>
4+
<g:each in="${sampleList}" var="sample">
5+
<li>
6+
<h4>${sample.id} ${sample.naturalId}</h4>
7+
<g:each in="${sample.experiments}" var="experiment">
8+
<g:each in="${experiment.alignments}" var="alignment">
9+
<h5>MEME Motifs</h5>
10+
<table class="table table-bordered meme-table" data-meme-url="${alignment.memeFile}">
11+
<tbody>
12+
<g:if test="${alignment.motifCount}">
13+
<g:each in="${(0..<alignment.motifCount)}" var="n">
14+
<tr>
15+
<td style='min-width:6em;line-height:1em' class="meme-id"></td>
16+
<g:if test="${alignment.memeSvgForward}">
17+
<td class="meme-fig" style="width:350px">
18+
<i class="fa fa-spinner fa-spin"></i>
19+
<div class="preview_box">
20+
<div class="preview_logo_box">
21+
<div class="meme-svg meme-svg-forward">
22+
<span class="meme-fig-url-forward" hidden="hidden">${alignment.memeSvgForward[n]}</span>
23+
</div>
24+
<div style="display:none" class="meme-svg meme-svg-reverse">
25+
<span class="meme-fig-url-reverse" hidden="hidden">${alignment.memeSvgReverse[n]}</span>
26+
</div>
27+
</div>
28+
</div>
29+
</td>
30+
</g:if>
31+
<g:else>
32+
<td style="width:350px">
33+
</g:else>
34+
<td class="composite" style="width:320px">
35+
<g:if test="${alignment.composite[n]}">
36+
<span class="composite-fig" data-composite-url="${alignment.composite[n]}"><i class="fa fa-spinner fa-spin"></i></span>
37+
</g:if>
38+
</td>
39+
</tr>
40+
</g:each>
41+
</g:if>
42+
</tbody>
43+
</table>
44+
<g:each in="${0..<alignment.featureAnalysis.size()}" var="m">
45+
<g:if test="${alignment.featureAnalysis[m]}">
46+
<h5>${alignment.featureAnalysis[m].title}</h5>
47+
<div id="${alignment.id}-composite${m}" class="featureAnalysis">
48+
<i class="fa fa-spinner fa-spin"></i>
49+
<span class="composite-url" hidden="hidden">${alignment.featureAnalysis[m].tabular}</span>
50+
<span class="composite-plot-title" hidden="hidden">${alignment.featureAnalysis[m].plot_title}</span>
51+
<span class="composite-xlabel" hidden="hidden">${alignment.featureAnalysis[m].xlabel}</span>
52+
<div class="composite-fig" style="width: 512px; height: 300px"></div>
53+
</div>
54+
</g:if>
55+
</g:each>
56+
</g:each>
57+
</g:each>
58+
</li>
59+
</g:each>
60+
</ul>
61+
</section>

pegr/grails-app/views/report/print.gsp

Lines changed: 4 additions & 205 deletions
Original file line numberDiff line numberDiff line change
@@ -26,212 +26,11 @@
2626
</style>
2727
</head>
2828
<body>
29-
<main class="container">
30-
<g:if test="${!samplesOnly}">
29+
<main class="container">
3130
<h2>${report.name}</h2>
32-
<section>
33-
<h4>Images</h4>
34-
<table class="table table-bordered" id="project-table">
35-
<thead>
36-
<tr>
37-
<th>Sonication Images</th>
38-
<th>Gel Images</th>
39-
<tr>
40-
</thead>
41-
<tbody>
42-
<tr>
43-
<td class="col-sm-6">
44-
<ul>
45-
<g:each in="${imageMap?.sonication}" var="filepath">
46-
<li>
47-
<img src='${createLink(controller: "file", action: "displayImage", params:[filepath:filepath, relative:true])}' height="200"/>
48-
</li>
49-
</g:each>
50-
</ul>
51-
</td>
52-
<td class="col-sm-6">
53-
<ul>
54-
<g:each in="${imageMap?.gel}" var="filepath">
55-
<li>
56-
<img src='${createLink(controller: "file", action: "displayImage", params:[filepath:filepath,relative:true])}' height="200"/>
57-
</li>
58-
</g:each>
59-
</ul>
60-
</td>
61-
</tr>
62-
</tbody>
63-
</table>
64-
</section>
65-
</g:if>
66-
<section>
67-
<h4>Samples</h4>
68-
<p>The number of samples: ${sampleList.size()}</p>
69-
<table class="table table-bordered">
70-
<thead>
71-
<tr>
72-
<th>Sample ID</th>
73-
<th>Target</th>
74-
<th>Antibody</th>
75-
<th>Celltype/Strain</th>
76-
<th>Mutation</th>
77-
<th>Growth Media</th>
78-
<th>Treatments</th>
79-
<th>Assay</th>
80-
<th>Note</th>
81-
</tr>
82-
</thead>
83-
<tbody>
84-
<g:each in="${sampleList}" var="sample" status="n">
85-
<tr>
86-
<td>${sample.id}</td>
87-
<td>${sample.target}</td>
88-
<td>${sample.antibody}</td>
89-
<td>${sample.strain}</td>
90-
<td>${sample.geneticModification}</td>
91-
<td>${sample.growthMedia}</td>
92-
<td>${sample.treatments}</td>
93-
<td>${sample.assay}</td>
94-
<td>${sample.note}</td>
95-
</tr>
96-
</g:each>
97-
</tbody>
98-
</table>
99-
</section>
100-
<section>
101-
<h4>Mapping Statistics (Read 1)</h4>
102-
<table class="table table-bordered">
103-
<thead>
104-
<tr>
105-
<th>ID</th>
106-
<th>Sequence Run</th>
107-
<th>Genome</th>
108-
<th class="text-right">Read Count (R1)</th>
109-
<th class="text-right">Uniquely Mapped Count (R1)</th>
110-
<th class="text-right">% Uniquely Mapped Count (R1)</th>
111-
<th class="text-right">Deduplicated Count (R1)</th>
112-
<th class="text-right">% Deduplicated Count (R1)</th>
113-
</tr>
114-
</thead>
115-
<tbody>
116-
<g:each in="${sampleList}" var="sample" status="n">
117-
<tr>
118-
<td rowspan="${Math.max(1, sample.alignmentCount)}">${sample.id}</td>
119-
<g:each in="${sample.experiments}" var="experiment" status="nExp">
120-
<g:if test="${nExp>0}"><tr></g:if>
121-
<g:each in="${experiment.alignments}" var="alignment" status="nAli">
122-
<g:if test="${nAli>0}"><tr></g:if>
123-
<td>${experiment?.runId}</td>
124-
<td>${alignment.genome}</td>
125-
<td class="text-right"><g:formatNumber number="${experiment.totalReads}" format="###,###,###" /></td>
126-
<td class="text-right"><g:formatNumber number="${alignment.uniquelyMappedReads}" format="###,###,###" /></td>
127-
<td class="text-right"><g:formatNumber number="${alignment.uniquelyMappedPct}" format="#0.0%" /></td>
128-
<td class="text-right"><g:formatNumber number="${alignment.dedupUniquelyMappedReads}" format="###,###,###" /></td>
129-
<td class="text-right"><g:formatNumber number="${alignment.deduplicatedPct}" format="#0.0%" /></td>
130-
</tr>
131-
</g:each>
132-
</g:each>
133-
</g:each>
134-
</tbody>
135-
</table>
136-
</section>
137-
<section>
138-
<h4>Mapping Statistics (Read 2)</h4>
139-
<table class="table table-bordered">
140-
<thead>
141-
<tr>
142-
<th>ID</th>
143-
<th>Sequence Run</th>
144-
<th>Genome</th>
145-
<th class="text-right">Read Count (R2)</th>
146-
<th class="text-right">Uniquely Mapped Count (R2)</th>
147-
<th class="text-right">% Uniquely Mapped Count (R2)</th>
148-
<th class="text-right">Deduplicated Count (R2)</th>
149-
<th class="text-right">% Deduplicated Count (R2)</th>
150-
</tr>
151-
</thead>
152-
<tbody>
153-
<g:each in="${sampleList}" var="sample" status="n">
154-
<tr>
155-
<td rowspan="${Math.max(1, sample.alignmentCount)}">${sample.id}</td>
156-
<g:each in="${sample.experiments}" var="experiment" status="nExp">
157-
<g:if test="${nExp>0}"><tr></g:if>
158-
<g:each in="${experiment.alignments}" var="alignment" status="nAli">
159-
<g:if test="${nAli>0}"><tr></g:if>
160-
<td>${experiment?.runId}</td>
161-
<td>${alignment.genome}</td>
162-
<td class="text-right"><g:formatNumber number="${experiment.totalReadsR2}" format="###,###,###" /></td>
163-
<td class="text-right"><g:formatNumber number="${alignment.uniquelyMappedReadsR2}" format="###,###,###" /></td>
164-
<td class="text-right"><g:formatNumber number="${alignment.uniquelyMappedPct2}" format="#0.0%" /></td>
165-
<td class="text-right"><g:formatNumber number="${alignment.dedupUniquelyMappedReadsR2}" format="###,###,###" /></td>
166-
<td class="text-right"><g:formatNumber number="${alignment.deduplicatedPct2}" format="#0.0%" /></td>
167-
</tr>
168-
</g:each>
169-
</g:each>
170-
</g:each>
171-
</tbody>
172-
</table>
173-
</section>
174-
<section>
175-
<h4>Advanced Analysis</h4>
176-
<ul>
177-
<g:each in="${sampleList}" var="sample">
178-
<li>
179-
<h4>${sample.id} ${sample.naturalId}</h4>
180-
<g:each in="${sample.experiments}" var="experiment">
181-
<g:each in="${experiment.alignments}" var="alignment">
182-
<h5>MEME Motifs</h5>
183-
<table class="table table-bordered meme-table" data-meme-url="${alignment.memeFile}">
184-
<tbody>
185-
<g:if test="${alignment.motifCount}">
186-
<g:each in="${(0..<alignment.motifCount)}" var="n">
187-
<tr>
188-
<td style='min-width:6em;line-height:1em' class="meme-id"></td>
189-
<g:if test="${alignment.memeSvgForward}">
190-
<td class="meme-fig" style="width:350px">
191-
<i class="fa fa-spinner fa-spin"></i>
192-
<div class="preview_box">
193-
<div class="preview_logo_box">
194-
<div class="meme-svg meme-svg-forward">
195-
<span class="meme-fig-url-forward" hidden="hidden">${alignment.memeSvgForward[n]}</span>
196-
</div>
197-
<div style="display:none" class="meme-svg meme-svg-reverse">
198-
<span class="meme-fig-url-reverse" hidden="hidden">${alignment.memeSvgReverse[n]}</span>
199-
</div>
200-
</div>
201-
</div>
202-
</td>
203-
</g:if>
204-
<g:else>
205-
<td style="width:350px">
206-
</g:else>
207-
<td class="composite" style="width:320px">
208-
<g:if test="${alignment.composite[n]}">
209-
<span class="composite-fig" data-composite-url="${alignment.composite[n]}"><i class="fa fa-spinner fa-spin"></i></span>
210-
</g:if>
211-
</td>
212-
</tr>
213-
</g:each>
214-
</g:if>
215-
</tbody>
216-
</table>
217-
<g:each in="${0..<alignment.featureAnalysis.size()}" var="m">
218-
<g:if test="${alignment.featureAnalysis[m]}">
219-
<h5>${alignment.featureAnalysis[m].title}</h5>
220-
<div id="${alignment.id}-composite${m}" class="featureAnalysis">
221-
<i class="fa fa-spinner fa-spin"></i>
222-
<span class="composite-url" hidden="hidden">${alignment.featureAnalysis[m].tabular}</span>
223-
<span class="composite-plot-title" hidden="hidden">${alignment.featureAnalysis[m].plot_title}</span>
224-
<span class="composite-xlabel" hidden="hidden">${alignment.featureAnalysis[m].xlabel}</span>
225-
<div class="composite-fig" style="width: 512px; height: 300px"></div>
226-
</div>
227-
</g:if>
228-
</g:each>
229-
</g:each>
230-
</g:each>
231-
</li>
232-
</g:each>
233-
</ul>
234-
</section>
31+
<g:each in="${modules}" var="module">
32+
<g:render template="/report/${module}" model="['sampleList':sampleList]" />
33+
</g:each>
23534
</main>
23635
<script>
23736
$(function() {

0 commit comments

Comments
 (0)