use of com.hartwig.hmftools.svannotation.annotations.GeneFusion in project hmftools by hartwigmedical.
the class StructuralVariantAnalyzer method toReportableGeneFusions.
@NotNull
private List<GeneFusion> toReportableGeneFusions(@NotNull List<List<Pair<Transcript, Transcript>>> fusionsPerVariant) {
final List<GeneFusion> result = Lists.newArrayList();
for (final List<Pair<Transcript, Transcript>> fusions : fusionsPerVariant) {
Optional<Pair<Transcript, Transcript>> reportableFusion = determineReportableFusion(fusions);
for (final Pair<Transcript, Transcript> fusion : fusions) {
final Transcript upstream = fusion.getLeft();
final Transcript downstream = fusion.getRight();
final CosmicFusionData cosmic = transcriptsMatchKnownFusion(upstream, downstream);
final boolean promiscuousEnd = oneEndPromiscuous(upstream, downstream);
final boolean reportable = reportableFusion.isPresent() && reportableFusion.get() == fusion && (cosmic != null || promiscuousEnd);
final GeneFusion geneFusion = ImmutableGeneFusion.builder().reportable(reportable).upstreamLinkedAnnotation(upstream).downstreamLinkedAnnotation(downstream).cosmicURL(cosmic != null ? cosmic.cosmicURL() : "").build();
result.add(geneFusion);
}
}
return result;
}
use of com.hartwig.hmftools.svannotation.annotations.GeneFusion in project hmftools by hartwigmedical.
the class StructuralVariantAnnotationDAO method write.
@SuppressWarnings("unchecked")
public void write(final StructuralVariantAnalysis analysis) {
final Timestamp timestamp = new Timestamp(new Date().getTime());
final Map<Transcript, Integer> id = Maps.newHashMap();
// NERA: load transcript annotations
for (final StructuralVariantAnnotation annotation : analysis.annotations()) {
for (final GeneAnnotation geneAnnotation : annotation.annotations()) {
final InsertValuesStep13 inserter = context.insertInto(STRUCTURALVARIANTBREAKEND, STRUCTURALVARIANTBREAKEND.MODIFIED, STRUCTURALVARIANTBREAKEND.ISSTARTEND, STRUCTURALVARIANTBREAKEND.STRUCTURALVARIANTID, STRUCTURALVARIANTBREAKEND.GENE, STRUCTURALVARIANTBREAKEND.GENEID, STRUCTURALVARIANTBREAKEND.TRANSCRIPTID, STRUCTURALVARIANTBREAKEND.ISCANONICALTRANSCRIPT, STRUCTURALVARIANTBREAKEND.STRAND, STRUCTURALVARIANTBREAKEND.EXONRANKUPSTREAM, STRUCTURALVARIANTBREAKEND.EXONPHASEUPSTREAM, STRUCTURALVARIANTBREAKEND.EXONRANKDOWNSTREAM, STRUCTURALVARIANTBREAKEND.EXONPHASEDOWNSTREAM, STRUCTURALVARIANTBREAKEND.EXONMAX);
for (final Transcript transcript : geneAnnotation.transcripts()) {
inserter.values(timestamp, geneAnnotation.isStart(), transcript.parent().variant().primaryKey(), geneAnnotation.geneName(), geneAnnotation.stableId(), transcript.transcriptId(), transcript.isCanonical(), geneAnnotation.strand(), transcript.exonUpstream(), transcript.exonUpstreamPhase(), transcript.exonDownstream(), transcript.exonDownstreamPhase(), transcript.exonMax());
}
final List<UInteger> ids = inserter.returning(STRUCTURALVARIANTBREAKEND.ID).fetch().getValues(0, UInteger.class);
if (ids.size() != geneAnnotation.transcripts().size()) {
throw new RuntimeException("not all transcripts were inserted successfully");
}
for (int i = 0; i < ids.size(); i++) {
id.put(geneAnnotation.transcripts().get(i), ids.get(i).intValue());
}
}
}
// NERA: load fusions
final InsertValuesStep3 fusionInserter = context.insertInto(STRUCTURALVARIANTFUSION, STRUCTURALVARIANTFUSION.ISREPORTED, STRUCTURALVARIANTFUSION.FIVEPRIMEBREAKENDID, STRUCTURALVARIANTFUSION.THREEPRIMEBREAKENDID);
for (final GeneFusion fusion : analysis.fusions()) {
fusionInserter.values(fusion.reportable(), id.get(fusion.upstreamLinkedAnnotation()), id.get(fusion.downstreamLinkedAnnotation()));
}
fusionInserter.execute();
// NERA: load disruptions
final InsertValuesStep2 disruptionInserter = context.insertInto(STRUCTURALVARIANTDISRUPTION, STRUCTURALVARIANTDISRUPTION.ISREPORTED, STRUCTURALVARIANTDISRUPTION.BREAKENDID);
for (final GeneDisruption disruption : analysis.disruptions()) {
disruptionInserter.values(disruption.reportable(), id.get(disruption.linkedAnnotation()));
}
disruptionInserter.execute();
}
Aggregations