Exemple #1
0
class StarQualityMetric(QualityMetric):
    item_type = 'star_quality_metric'
    schema = load_schema('encoded:schemas/star_quality_metric.json')
Exemple #2
0
class SamtoolsStatsQualityMetric(QualityMetric):
    item_type = 'samtools_stats_quality_metric'
    schema = load_schema('encoded:schemas/samtools_stats_quality_metric.json')
Exemple #3
0
class Document(ItemWithAttachment, Item):
    item_type = 'document'
    schema = load_schema('encoded:schemas/document.json')
    embedded = ['lab', 'award', 'submitted_by']
Exemple #4
0
class PhantompeaktoolsSppQualityMetric(QualityMetric):
    item_type = 'phantompeaktools_spp_quality_metric'
    schema = load_schema(
        'encoded:schemas/phantompeaktools_spp_quality_metric.json')
Exemple #5
0
class BigwigcorrelateQualityMetric(QualityMetric):
    item_type = 'bigwigcorrelate_quality_metric'
    schema = load_schema('encoded:schemas/bigwigcorrelate_quality_metric.json')
Exemple #6
0
class EdwbamstatsQualityMetric(QualityMetric):
    item_type = 'edwbamstats_quality_metric'
    schema = load_schema('encoded:schemas/edwbamstats_quality_metric.json')
Exemple #7
0
class EdwcomparepeaksQualityMetric(QualityMetric):
    item_type = 'edwcomparepeaks_quality_metric'
    schema = load_schema('encoded:schemas/edwcomparepeaks_quality_metric.json')
Exemple #8
0
class Encode2ChipSeqQualityMetric(QualityMetric):
    item_type = 'encode2_chipseq_quality_metric'
    schema = load_schema('encoded:schemas/encode2_chipseq_quality_metric.json')
Exemple #9
0
class Source(Item):
    item_type = 'source'
    schema = load_schema('encoded:schemas/source.json')
    name_key = 'name'
Exemple #10
0
class Treatment(Item):
    item_type = 'treatment'
    schema = load_schema('encoded:schemas/treatment.json')
Exemple #11
0
class Organism(Item):
    item_type = 'organism'
    schema = load_schema('encoded:schemas/organism.json')
    name_key = 'name'
Exemple #12
0
class Award(Item):
    item_type = 'award'
    schema = load_schema('encoded:schemas/award.json')
    name_key = 'name'
    embedded = ['pi']
Exemple #13
0
class Lab(Item):
    item_type = 'lab'
    schema = load_schema('encoded:schemas/lab.json')
    name_key = 'name'
    embedded = ['awards']
Exemple #14
0
class FastqcQualityMetric(QualityMetric):
    item_type = 'fastqc_quality_metric'
    schema = load_schema('encoded:schemas/fastqc_quality_metric.json')
Exemple #15
0
class HotspotQualityMetric(QualityMetric):
    item_type = 'hotspot_quality_metric'
    schema = load_schema('encoded:schemas/hotspot_quality_metric.json')
Exemple #16
0
class BismarkQualityMetric(QualityMetric):
    item_type = 'bismark_quality_metric'
    schema = load_schema('encoded:schemas/bismark_quality_metric.json')
Exemple #17
0
class IdrSummaryQualityMetric(QualityMetric):
    item_type = 'idr_summary_quality_metric'
    schema = load_schema('encoded:schemas/idr_summary_quality_metric.json')
Exemple #18
0
class ChipSeqFilterQualityMetric(QualityMetric):
    item_type = 'chipseq_filter_quality_metric'
    schema = load_schema('encoded:schemas/chipseq_filter_quality_metric.json')
Exemple #19
0
class MadQualityMetric(QualityMetric):
    item_type = 'mad_quality_metric'
    schema = load_schema('encoded:schemas/mad_quality_metric.json')
Exemple #20
0
class DnasePeakQualityMetric(QualityMetric):
    item_type = 'dnase_peak_quality_metric'
    schema = load_schema('encoded:schemas/dnase_peak_quality_metric.json')
Exemple #21
0
class PbcQualityMetric(QualityMetric):
    item_type = 'pbc_quality_metric'
    schema = load_schema('encoded:schemas/pbc_quality_metric.json')
Exemple #22
0
class WormDonor(Donor):
    item_type = 'worm_donor'
    schema = load_schema('encoded:schemas/worm_donor.json')
    embedded = ['organism', 'constructs', 'constructs.target']
Exemple #23
0
class Dataset(Item):
    item_type = 'dataset'
    schema = load_schema('encoded:schemas/dataset.json')
    embedded = [
        'files', 'files.replicate', 'files.replicate.experiment',
        'files.replicate.experiment.lab', 'files.replicate.experiment.target',
        'files.submitted_by', 'files.lab', 'revoked_files',
        'revoked_files.replicate', 'revoked_files.replicate.experiment',
        'revoked_files.replicate.experiment.lab',
        'revoked_files.replicate.experiment.target',
        'revoked_files.submitted_by', 'contributing_files',
        'contributing_files.replicate.experiment',
        'contributing_files.replicate.experiment.lab',
        'contributing_files.replicate.experiment.target',
        'contributing_files.submitted_by', 'submitted_by', 'lab', 'award',
        'documents.lab', 'documents.award', 'documents.submitted_by',
        'references'
    ]
    audit_inherit = [
        'original_files',
        'revoked_files',
        'contributing_files',
        'submitted_by',
        'lab',
        'award',
        'documents.lab',
    ]
    name_key = 'accession'
    rev = {
        'original_files': ('File', 'dataset'),
    }

    @calculated_property(
        schema={
            "title": "Original files",
            "type": "array",
            "items": {
                "type": ['string', 'object'],
                "linkFrom": "File.dataset",
            },
        })
    def original_files(self, request, original_files):
        return paths_filtered_by_status(request, original_files)

    @calculated_property(
        schema={
            "title": "Contributing files",
            "type": "array",
            "items": {
                "type": 'string',
                "linkTo": "file",
            },
        })
    def contributing_files(self, request, original_files, related_files,
                           status):
        files = set(original_files + related_files)
        derived_from = set()
        for path in files:
            properties = request.embed(path, '@@object')
            derived_from.update(
                paths_filtered_by_status(request,
                                         properties.get('derived_from', [])))
        outside_files = list(derived_from.difference(files))
        if status in ('release ready', 'released'):
            return paths_filtered_by_status(
                request,
                outside_files,
                include=('released', ),
            )
        else:
            return paths_filtered_by_status(
                request,
                outside_files,
                exclude=('revoked', 'deleted', 'replaced'),
            )

    @calculated_property(
        schema={
            "title": "Files",
            "type": "array",
            "items": {
                "type": "string",
                "linkTo": "file",
            },
        })
    def files(self, request, original_files, related_files, status):
        if status in ('release ready', 'released'):
            return paths_filtered_by_status(
                request,
                chain(original_files, related_files),
                include=('released', ),
            )
        else:
            return paths_filtered_by_status(
                request,
                chain(original_files, related_files),
                exclude=('revoked', 'deleted', 'replaced'),
            )

    @calculated_property(
        schema={
            "title": "Revoked files",
            "type": "array",
            "items": {
                "type": "string",
                "linkTo": "file",
            },
        })
    def revoked_files(self, request, original_files, related_files):
        return [
            path for path in chain(original_files, related_files)
            if file_is_revoked(request, path)
        ]

    @calculated_property(define=True,
                         schema={
                             "title": "Assembly",
                             "type": "array",
                             "items": {
                                 "type": "string",
                             },
                         })
    def assembly(self, request, original_files, related_files):
        assembly = []
        for path in chain(original_files, related_files):
            properties = request.embed(path, '@@object')
            if properties['file_format'] in ['bigWig', 'bigBed', 'narrowPeak', 'broadPeak', 'bedRnaElements', 'bedMethyl', 'bedLogR'] and \
                    properties['status'] in ['released']:
                if 'assembly' in properties:
                    assembly.append(properties['assembly'])
        return list(set(assembly))

    @calculated_property(condition='assembly',
                         schema={
                             "title": "Hub",
                             "type": "string",
                         })
    def hub(self, request):
        return request.resource_path(self, '@@hub', 'hub.txt')

    @calculated_property(condition='hub',
                         category='page',
                         schema={
                             "title": "Visualuze at UCSC",
                             "type": "string",
                         })
    def visualize_ucsc(self, request, hub):
        hub_url = urljoin(request.resource_url(request.root), hub)
        return ('http://genome.ucsc.edu/cgi-bin/hgHubConnect'
                '?hgHub_do_redirect=on'
                '&hgHubConnect.remakeTrackHub=on'
                '&hgHub_do_firstDb=1&hubUrl=') + quote_plus(hub_url, ':/@')