Skip to content

Commit aec659a

Browse files
committed
Enable lineage filtering for Immunogenotyper
1 parent 116032f commit aec659a

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

SequenceAnalysis/src/org/labkey/sequenceanalysis/run/analysis/ImmunoGenotypingAnalysis.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package org.labkey.sequenceanalysis.run.analysis;
22

33
import au.com.bytecode.opencsv.CSVReader;
4+
import au.com.bytecode.opencsv.CSVWriter;
45
import htsjdk.samtools.SAMFileHeader;
56
import org.apache.commons.lang3.StringUtils;
67
import org.apache.log4j.Logger;
78
import org.json.JSONObject;
9+
import org.labkey.api.data.CompareType;
810
import org.labkey.api.data.Container;
911
import org.labkey.api.data.DbScope;
1012
import org.labkey.api.data.SimpleFilter;
1113
import org.labkey.api.data.Table;
1214
import org.labkey.api.data.TableInfo;
15+
import org.labkey.api.data.TableSelector;
1316
import org.labkey.api.exp.api.ExperimentService;
1417
import org.labkey.api.pipeline.PipelineJobException;
1518
import org.labkey.api.query.FieldKey;
@@ -25,10 +28,13 @@
2528
import org.labkey.api.sequenceanalysis.pipeline.PipelineStepProvider;
2629
import org.labkey.api.sequenceanalysis.pipeline.ReferenceGenome;
2730
import org.labkey.api.sequenceanalysis.pipeline.SamSorter;
31+
import org.labkey.api.sequenceanalysis.pipeline.SequenceAnalysisJobSupport;
2832
import org.labkey.api.sequenceanalysis.pipeline.SequencePipelineService;
2933
import org.labkey.api.sequenceanalysis.pipeline.ToolParameterDescriptor;
3034
import org.labkey.api.sequenceanalysis.run.AbstractCommandPipelineStep;
3135
import org.labkey.api.util.FileUtil;
36+
import org.labkey.api.util.PageFlowUtil;
37+
import org.labkey.api.writer.PrintWriters;
3238
import org.labkey.sequenceanalysis.SequenceAnalysisSchema;
3339
import org.labkey.sequenceanalysis.run.util.ImmunoGenotypingWrapper;
3440
import org.labkey.sequenceanalysis.util.ReferenceLibraryHelperImpl;
@@ -117,6 +123,26 @@ public static List<ToolParameterDescriptor> getDefaultParams(boolean includeExpo
117123
return ret;
118124
}
119125

126+
@Override
127+
public void init(SequenceAnalysisJobSupport support) throws PipelineJobException
128+
{
129+
for (ReferenceGenome genome : support.getCachedGenomes())
130+
{
131+
File output = getLineageMapFile(getPipelineCtx(), genome);
132+
try (CSVWriter writer = new CSVWriter(PrintWriters.getPrintWriter(output), '\t', CSVWriter.NO_QUOTE_CHARACTER))
133+
{
134+
List<Integer> refNtIds = new TableSelector(SequenceAnalysisSchema.getInstance().getSchema().getTable(SequenceAnalysisSchema.TABLE_REF_LIBRARY_MEMBERS), PageFlowUtil.set("ref_nt_id"), new SimpleFilter(FieldKey.fromString("library_id"), genome.getGenomeId()), null).getArrayList(Integer.class);
135+
new TableSelector(SequenceAnalysisSchema.getInstance().getSchema().getTable(SequenceAnalysisSchema.TABLE_REF_NT_SEQUENCES), PageFlowUtil.set("rowid", "name", "lineage"), new SimpleFilter(FieldKey.fromString("rowid"), refNtIds, CompareType.IN), null).forEachResults(rs -> {
136+
writer.writeNext(new String[]{rs.getString(FieldKey.fromString("name")), rs.getString(FieldKey.fromString("lineage"))});
137+
});
138+
}
139+
catch (IOException e)
140+
{
141+
throw new PipelineJobException(e);
142+
}
143+
}
144+
}
145+
120146
@Override
121147
public Output performAnalysisPerSampleLocal(AnalysisModel model, File inputBam, File referenceFasta, File outDir) throws PipelineJobException
122148
{
@@ -152,6 +178,11 @@ public Output performAnalysisPerSampleLocal(AnalysisModel model, File inputBam,
152178
return null;
153179
}
154180

181+
private File getLineageMapFile(PipelineContext ctx, ReferenceGenome referenceGenome)
182+
{
183+
return new File(getPipelineCtx().getSourceDirectory(), referenceGenome.getGenomeId() + "_lineageMap.txt");
184+
}
185+
155186
@Override
156187
public Output performAnalysisPerSampleRemote(Readset rs, File inputBam, ReferenceGenome referenceGenome, File outputDir) throws PipelineJobException
157188
{
@@ -179,7 +210,7 @@ public Output performAnalysisPerSampleRemote(Readset rs, File inputBam, Referenc
179210
}
180211

181212
List<String> options = new ArrayList<>();
182-
File lineageMapFile = new File(getPipelineCtx().getSourceDirectory(), referenceGenome.getGenomeId() + "_lineageMap.txt");
213+
File lineageMapFile = getLineageMapFile(getPipelineCtx(), referenceGenome);
183214
if (lineageMapFile.exists())
184215
{
185216
options.add("-referenceToLineageFile");

0 commit comments

Comments
 (0)