class StarQualityMetric(QualityMetric): item_type = 'star_quality_metric' schema = load_schema('encoded:schemas/star_quality_metric.json')
class SamtoolsStatsQualityMetric(QualityMetric): item_type = 'samtools_stats_quality_metric' schema = load_schema('encoded:schemas/samtools_stats_quality_metric.json')
class Document(ItemWithAttachment, Item): item_type = 'document' schema = load_schema('encoded:schemas/document.json') embedded = ['lab', 'award', 'submitted_by']
class PhantompeaktoolsSppQualityMetric(QualityMetric): item_type = 'phantompeaktools_spp_quality_metric' schema = load_schema( 'encoded:schemas/phantompeaktools_spp_quality_metric.json')
class BigwigcorrelateQualityMetric(QualityMetric): item_type = 'bigwigcorrelate_quality_metric' schema = load_schema('encoded:schemas/bigwigcorrelate_quality_metric.json')
class EdwbamstatsQualityMetric(QualityMetric): item_type = 'edwbamstats_quality_metric' schema = load_schema('encoded:schemas/edwbamstats_quality_metric.json')
class EdwcomparepeaksQualityMetric(QualityMetric): item_type = 'edwcomparepeaks_quality_metric' schema = load_schema('encoded:schemas/edwcomparepeaks_quality_metric.json')
class Encode2ChipSeqQualityMetric(QualityMetric): item_type = 'encode2_chipseq_quality_metric' schema = load_schema('encoded:schemas/encode2_chipseq_quality_metric.json')
class Source(Item): item_type = 'source' schema = load_schema('encoded:schemas/source.json') name_key = 'name'
class Treatment(Item): item_type = 'treatment' schema = load_schema('encoded:schemas/treatment.json')
class Organism(Item): item_type = 'organism' schema = load_schema('encoded:schemas/organism.json') name_key = 'name'
class Award(Item): item_type = 'award' schema = load_schema('encoded:schemas/award.json') name_key = 'name' embedded = ['pi']
class Lab(Item): item_type = 'lab' schema = load_schema('encoded:schemas/lab.json') name_key = 'name' embedded = ['awards']
class FastqcQualityMetric(QualityMetric): item_type = 'fastqc_quality_metric' schema = load_schema('encoded:schemas/fastqc_quality_metric.json')
class HotspotQualityMetric(QualityMetric): item_type = 'hotspot_quality_metric' schema = load_schema('encoded:schemas/hotspot_quality_metric.json')
class BismarkQualityMetric(QualityMetric): item_type = 'bismark_quality_metric' schema = load_schema('encoded:schemas/bismark_quality_metric.json')
class IdrSummaryQualityMetric(QualityMetric): item_type = 'idr_summary_quality_metric' schema = load_schema('encoded:schemas/idr_summary_quality_metric.json')
class ChipSeqFilterQualityMetric(QualityMetric): item_type = 'chipseq_filter_quality_metric' schema = load_schema('encoded:schemas/chipseq_filter_quality_metric.json')
class MadQualityMetric(QualityMetric): item_type = 'mad_quality_metric' schema = load_schema('encoded:schemas/mad_quality_metric.json')
class DnasePeakQualityMetric(QualityMetric): item_type = 'dnase_peak_quality_metric' schema = load_schema('encoded:schemas/dnase_peak_quality_metric.json')
class PbcQualityMetric(QualityMetric): item_type = 'pbc_quality_metric' schema = load_schema('encoded:schemas/pbc_quality_metric.json')
class WormDonor(Donor): item_type = 'worm_donor' schema = load_schema('encoded:schemas/worm_donor.json') embedded = ['organism', 'constructs', 'constructs.target']
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, ':/@')