Skip to content

Commit 3c590d9

Browse files
Merge pull request #348 from qbicsoftware/feature/nanopore-basecalling-methods
provide method to get basecalling folder and test it
2 parents f6e80eb + e02f0ba commit 3c590d9

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

src/main/groovy/life/qbic/datamodel/datasets/OxfordNanoporeMeasurement.groovy

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ final class OxfordNanoporeMeasurement {
2929

3030
private boolean pooledSamplesMeasurement
3131

32+
private boolean hasBasecallingData
33+
3234
protected OxfordNanoporeMeasurement(String name, String path, List children, Map metadata) {
3335
this.logFilesCollection = new ArrayList<>()
3436
this.folders = new HashMap<>()
@@ -39,6 +41,7 @@ final class OxfordNanoporeMeasurement {
3941

4042
createContent()
4143
assessPooledStatus()
44+
assessBasecallingStatus()
4245
assessState()
4346
}
4447

@@ -53,12 +56,16 @@ final class OxfordNanoporeMeasurement {
5356
private void assessPooledStatus() {
5457
this.pooledSamplesMeasurement = containsAtLeastOneBarcodedFolder(folders["fast5pass"])
5558
// There can be still pooled samples in the failed folder, worst case is all
56-
// samples failed, so we need to check there to
59+
// samples failed, so we need to check there too
5760
if (! pooledSamplesMeasurement) {
5861
this.pooledSamplesMeasurement = containsAtLeastOneBarcodedFolder(folders["fast5fail"])
5962
}
6063
}
6164

65+
private void assessBasecallingStatus() {
66+
this.hasBasecallingData = folders["basecalling"];
67+
}
68+
6269
private static boolean containsAtLeastOneBarcodedFolder(DataFolder folder) {
6370
if (!folder) {
6471
return false
@@ -86,6 +93,9 @@ final class OxfordNanoporeMeasurement {
8693
case DataFile:
8794
logFilesCollection.add(element as DataFile)
8895
break
96+
case BasecallingFolder:
97+
folders["basecalling"] = element as BasecallingFolder
98+
break
8999
}
90100
}
91101
}
@@ -273,13 +283,14 @@ final class OxfordNanoporeMeasurement {
273283

274284
private Map<String, Map<String, DataFolder>> prepareRawData(String sampleId) {
275285
final def result = new HashMap()
276-
final def folders = [
286+
final def dataFolders = [
277287
"fast5fail": (folders.get("fast5fail") as DataFolder),
278288
"fast5pass": (folders.get("fast5pass") as DataFolder),
279289
"fastqpass": (folders.get("fastqpass") as DataFolder),
280290
"fastqfail": (folders.get("fastqfail") as DataFolder)
281291
]
282-
result.put(sampleId, folders)
292+
if(hasBasecallingData) dataFolders.put("basecalling", (folders.get("basecalling") as DataFolder))
293+
result.put(sampleId, dataFolders)
283294
return result
284295
}
285296

src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeExperimentSpec.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,11 @@ class OxfordNanoporeExperimentSpec extends Specification {
147147
assert experiment.sampleCode == "QABCD001AB"
148148
assert measurements.size() == 1
149149
assert measurements[0].asicTemp == "32.631687"
150+
assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("basecalling")
151+
assert !measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").get("basecalling").relativePath.isEmpty()
152+
assert !measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").get("basecalling").children.isEmpty()
153+
assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").get("basecalling").name.size() > 0
154+
assert measurements[0].getRawDataPerSample(experiment).get("QABCD001AB").containsKey("fastqfail")
150155
}
151156

152157
def "Create a simple pooled Oxford Nanopore experiment successfully"() {

src/test/groovy/life/qbic/datamodel/datasets/datastructure/OxfordNanoporeMeasurementSpec.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ class OxfordNanoporeMeasurementSpec extends Specification {
9494
assert result.get("QABCD001AE").get("fast5pass") instanceof DataFolder
9595
assert result.get("QABCD001AE").get("fastqfail") instanceof DataFolder
9696
assert result.get("QABCD001AE").get("fastqpass") instanceof DataFolder
97+
assert result.get("QABCD001AE").get("basecalling") == null
9798
assert measurement.relativePath == "path/20200219_1107_1-E3-H3_PAE26974_454b8dc6"
9899
assert libraryKit == "SQK-LSK109"
99100
assert adapter.equals("flongle")

0 commit comments

Comments
 (0)