INDENTED.join(submission_names)))
elif len(submission_names) == 1:
name = submission_names[0]
+
+ if name:
+ submission_uri = get_submission_uri(name)
+ logger.info('Submission URI: %s', name)
+ else:
+ logger.debug('No name, unable to create submission ur')
mapper = None
if opts.make_track_hub:
baseurl=opts.make_track_hub,
baseupload=opts.track_hub_upload,
host=opts.host)
- submission_uri = get_submission_uri(name)
-
if opts.load_rdf is not None:
if submission_uri is None:
if opts.scan_submission:
if name is None:
parser.error("Please define a submission name")
+ if mapper is None:
+ parser.error("Scan submission needs --make-track-hub=public-url")
mapper.scan_submission_dirs(results)
if opts.make_track_hub:
ModelException, \
get_submission_uri
+from django.conf import settings
+from django.template import Context, Template, loader
+
LOGGER = logging.getLogger(__name__)
class Submission(object):
fileNode = self.make_file_node(pathname, an_analysis)
self.add_md5s(filename, fileNode, analysis_dir)
self.add_fastq_metadata(filename, fileNode)
+ self.add_label(file_type, fileNode, libNode)
self.model.add_statement(
RDF.Statement(fileNode,
rdfNS['type'],
if value is not None:
s = RDF.Statement(fileNode, model_term, toTypedNode(value))
self.model.append(s)
+
+ def add_label(self, file_type, file_node, lib_node):
+ """Add rdfs:label to a file node
+ """
+ #template_term = libraryOntology['label_template']
+ template_term = libraryOntology['label_template']
+ label_template = self.model.get_target(file_type, template_term)
+ if label_template:
+ template = loader.get_template('submission_view_rdfs_label_metadata.sparql')
+ context = Context({
+ 'library': str(lib_node.uri),
+ })
+ for r in self.execute_query(template, context):
+ context = Context(r)
+ label = Template(label_template).render(context)
+ s = RDF.Statement(file_node, rdfsNS['label'], unicode(label))
+ self.model.append(s)
def _add_library_details_to_model(self, libNode):
# attributes that can have multiple values
track_subgroup = self.make_track_subgroups(subgroups, track)
+ if 'file_label' in track:
+ track_label = self.sanitize_name(track['file_label'])
+ else:
+ track_label = track_name
+
newtrack = Track(
name=track_name,
tracktype = str(track['file_type']),
url= hub_url + str(track['relative_path']),
short_label=str(track['library_id']),
- long_label=track_name,
+ long_label=str(track_label),
subgroups=track_subgroup,
)
view.add_tracks([newtrack])
return str(template.render(context))
def make_track_name(self, track):
- name = '{}_{}_{}'.format(
+ return '{}_{}_{}'.format(
track['library_id'],
track['replicate'],
track['output_type'],
)
- return name
def make_track_subgroups(self, subgroups, track):
track_subgroups = {}
return name
def get_manifest_metadata(self, analysis_node):
-
query_template = loader.get_template('trackhub_manifest.sparql')
context = Context({
-#file_name format output_type experiment replicate enriched_in ucsc_db{% for r in files %}
-{{ r.relative_path }} {{ r.file_format }} {{ r.output_type }} {{ r.dataset_id }} {{ r.replicate }} {{ r.enriched_in }} {{ r.ucsc_db }}{% endfor %}
+#file_name format output_type experiment replicate enriched_in ucsc_db replaces replace_reason{% for r in files %}
+{{ r.relative_path }} {{ r.file_format }} {{ r.output_type }} {{ r.dataset_id }} {{ r.replicate }} {{ r.enriched_in }} {{ r.ucsc_db }} {{ r.replaces_accession|default_if_none:"" }} {{ r.replace_reason|default_if_none:"" }}{% endfor %}
--- /dev/null
+PREFIX htsw: <http://jumpgate.caltech.edu/wiki/LibraryOntology#>
+PREFIX encode3: <http://jumpgate.caltech.edu/wiki/Encode3#>
+
+select ?cell_line ?assay ?protocol ?lab
+where {
+ optional { <{{ library }}> htsw:cell_line ?cell_line . }
+ optional { <{{ library }}> encode3:assay ?assay . }
+ optional { <{{ library }}> encode3:protocol ?protocol. }
+ optional { <{{ library }}> encode3:lab ?lab. }
+}
PREFIX geoSoft: <http://www.ncbi.nlm.nih.gov/geo/info/soft2.html#>
PREFIX cells: <http://encodewiki.ucsc.edu/EncodeDCC/index.php/Cell_lines#>
-select distinct ?name ?filename ?relative_path ?file_format ?output_type ?dataset_id ?replicate ?enriched_in ?ucsc_db
+select distinct ?name ?filename ?relative_path ?file_format ?output_type ?dataset_id ?replicate ?enriched_in ?ucsc_db ?replaces_accession ?replace_reason
WHERE {
<{{submission}}> a submissionOntology:submission ;
submissionOntology:name ?name ;
htswlib:library ?library ;
a ?fileClass .
+ OPTIONAL { ?file encode3:replaces ?replaces_accession ;
+ encode3:replace_reason ?replace_reason .
+ }
+
?fileClass geoSoft:fileTypeLabel ?file_format ;
ucscDaf:output_type ?output_type .
+PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
+PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX htswlib: <http://jumpgate.caltech.edu/wiki/LibraryOntology#>
PREFIX submissionOntology: <http://jumpgate.caltech.edu/wiki/UcscSubmissionOntology#>
PREFIX ucscDaf: <http://jumpgate.caltech.edu/wiki/UcscDaf#>
PREFIX cells: <http://encodewiki.ucsc.edu/EncodeDCC/index.php/Cell_lines#>
PREFIX encode3: <http://jumpgate.caltech.edu/wiki/Encode3#>
-select distinct ?lab_library_id ?library_id ?filename ?relative_path ?output_type ?file_type ?cell ?replicate ?assay ?rna_type ?protocol
-
+select distinct ?lab_library_id ?library_id ?filename ?relative_path ?output_type ?file_type ?cell ?replicate ?assay ?rna_type ?protocol ?file_label
WHERE {
?trackType geoSoft:fileTypeLabel ?file_type ;
ucscDaf:output_type ?output_type .
ucscDaf:relative_path ?relative_path ;
htswlib:library ?library ;
a ?trackType .
+ OPTIONAL { ?file rdfs:label ?file_label . }
OPTIONAL { ?library htswlib:library_id ?lab_library_id }
OPTIONAL { ?library encode3:library_id ?library_id }
OPTIONAL { ?library htswlib:cell_line ?cell . }
def parse_md5sum_line(lines, filename):
md5sum, md5sum_filename = lines[0].split()
+ md5sum_filename = os.path.normpath(md5sum_filename)
+ filename = os.path.normpath(filename)
if md5sum_filename != filename:
errmsg = "MD5sum and I disagre about filename. {0} != {1}"
logger.error(errmsg.format(filename, md5sum_filename))
self.assertEqual(info.version, 4)
self.assertEqual(info.isCompressed, True)
# what should i do for byteswapped arch?
- self.assertEqual(info.isSwapped, True)
+ self.assertEqual(info.isSwapped, False)
self.assertEqual(info.primaryDataSize, 48)
self.assertEqual(info.primaryIndexSize, 6204)
self.assertEqual(info.zoomLevels, 2)