-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
issue #76 seqauto API step 1 - serializers/initial api
- Loading branch information
Showing
15 changed files
with
675 additions
and
104 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
from .enrichment_kit_serializers import * | ||
from .seqauto_serializers import * | ||
from .seqauto_serializers import * |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
from rest_framework import serializers | ||
|
||
from genes.serializers import GeneListSerializer | ||
from seqauto.models import EnrichmentKit | ||
|
||
|
||
|
||
class EnrichmentKitSerializer(serializers.ModelSerializer): | ||
gene_list = GeneListSerializer() | ||
enrichment_kit_type = serializers.SerializerMethodField() | ||
manufacturer = serializers.StringRelatedField() | ||
__str__ = serializers.SerializerMethodField(read_only=True) | ||
|
||
class Meta: | ||
model = EnrichmentKit | ||
fields = ('pk', 'name', 'version', 'enrichment_kit_type', 'manufacturer', 'gene_list', '__str__') | ||
|
||
def get_enrichment_kit_type(self, obj): | ||
return obj.get_enrichment_kit_type_display() | ||
|
||
def get___str__(self, obj): | ||
return str(obj) | ||
|
||
|
||
class EnrichmentKitSummarySerializer(serializers.ModelSerializer): | ||
""" Doesn't return genes (much faster) """ | ||
enrichment_kit_type = serializers.SerializerMethodField() | ||
manufacturer = serializers.StringRelatedField() | ||
__str__ = serializers.SerializerMethodField(read_only=True) | ||
|
||
class Meta: | ||
model = EnrichmentKit | ||
fields = ('pk', 'name', 'version', 'enrichment_kit_type', 'manufacturer', '__str__') | ||
|
||
def get_enrichment_kit_type(self, obj): | ||
return obj.get_enrichment_kit_type_display() | ||
|
||
def get___str__(self, obj): | ||
return str(obj) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
from rest_framework import serializers | ||
|
||
from genes.serializers import SampleGeneListSerializer, GeneCoverageCollectionSerializer | ||
from seqauto.models import IlluminaFlowcellQC, QCGeneList, QC, QCGeneCoverage, QCExecSummary, FastQC, SequencingSample | ||
from seqauto.serializers.sequencing_serializers import SampleSheetLookupSerializer, FastqSerializer, SeqAutoViewMixin, \ | ||
BamFilePathSerializer, VCFFilePathSerializer, SequencingSampleLookupSerializer | ||
|
||
|
||
class FastQCSerializer(SeqAutoViewMixin, serializers.ModelSerializer): | ||
fastq = FastqSerializer() | ||
|
||
class Meta: | ||
model = FastQC | ||
fields = "__all__" | ||
|
||
|
||
class IlluminaFlowcellQCSerializer(SeqAutoViewMixin, serializers.ModelSerializer): | ||
sample_sheet = SampleSheetLookupSerializer() | ||
|
||
class Meta: | ||
model = IlluminaFlowcellQC | ||
#fields = "__all__" | ||
exclude = ("sequencing_run", ) # Already part of sample_sheet | ||
|
||
|
||
class QCSerializer(SeqAutoViewMixin, serializers.ModelSerializer): | ||
# Instead of dealing with all the bam/vcf etc - we'll just deal with sequencing_sample and | ||
# assume we're using the latest ones associated with that | ||
sequencing_sample = serializers.SerializerMethodField(read_only=True) | ||
bam_file = BamFilePathSerializer() # These end up really big, think we just want to pass PKs | ||
vcf_file = VCFFilePathSerializer() | ||
|
||
class Meta: | ||
model = QC | ||
fields = ("sequencing_sample", "bam_file", "vcf_file") | ||
|
||
def get_sequencing_sample(self, instance): | ||
try: | ||
ss = instance.bam_file.unaligned_reads.sequencing_sample | ||
serializer = SequencingSampleLookupSerializer(ss) | ||
return serializer.data | ||
except SequencingSample.DoesNotExist: | ||
return None | ||
|
||
|
||
class QCGeneListSerializer(SeqAutoViewMixin, serializers.ModelSerializer): | ||
qc = QCSerializer() | ||
sample_gene_list = SampleGeneListSerializer() | ||
|
||
class Meta: | ||
model = QCGeneList | ||
fields = ("path", "qc", "sample_gene_list") | ||
|
||
|
||
class QCGeneCoverageSerializer(SeqAutoViewMixin, serializers.ModelSerializer): | ||
qc = QCSerializer() | ||
gene_coverage_collection = GeneCoverageCollectionSerializer() | ||
|
||
class Meta: | ||
model = QCGeneCoverage | ||
fields = ("path", "qc", "gene_coverage_collection") | ||
|
||
|
||
class QCExecSummarySerializer(SeqAutoViewMixin, serializers.ModelSerializer): | ||
qc = QCSerializer() | ||
|
||
class Meta: | ||
model = QCExecSummary | ||
exclude = ('gene_list', ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
import numpy as np | ||
from rest_framework import serializers | ||
|
||
from genes.serializers import TranscriptSerializer, GeneSymbolSerializer, \ | ||
TranscriptVersionSerializer | ||
from seqauto.models import GoldCoverageSummary, GoldReference | ||
from seqauto.serializers.enrichment_kit_serializers import EnrichmentKitSummarySerializer | ||
|
||
|
||
class GoldReferenceSerializer(serializers.ModelSerializer): | ||
enrichment_kit = EnrichmentKitSummarySerializer() | ||
|
||
class Meta: | ||
model = GoldReference | ||
fields = ('enrichment_kit', 'created') | ||
|
||
|
||
class GoldCoverageSummarySerializer(serializers.ModelSerializer): | ||
gold_reference = GoldReferenceSerializer() | ||
gene_symbol = GeneSymbolSerializer() | ||
transcript = TranscriptSerializer() | ||
transcript_version = TranscriptVersionSerializer() | ||
standard_error = serializers.SerializerMethodField() | ||
|
||
class Meta: | ||
model = GoldCoverageSummary | ||
fields = '__all__' | ||
|
||
def get_standard_error(self, obj): | ||
""" This can occasionally be NaN which isn't valid JSON """ | ||
standard_error = obj.standard_error | ||
if np.isnan(standard_error): | ||
standard_error = -1 | ||
return standard_error |
Oops, something went wrong.