Mercurial > hg > audio-features-catalogue
view fca/fcaDotGen.py @ 0:62d2c72e4223
initial commit
author | nothing@tehis.net |
---|---|
date | Mon, 25 Feb 2013 14:40:54 +0000 |
parents | |
children | 8bd8453e0551 |
line wrap: on
line source
import rdflib, os from rdflib import plugin, OWL, URIRef, RDF, RDFS, Literal from rdflib.graph import Graph from rdflib.namespace import Namespace plugin.register( 'sparql', rdflib.query.Processor, 'rdfextras.sparql.processor', 'Processor') plugin.register( 'sparql', rdflib.query.Result, 'rdfextras.sparql.query', 'SPARQLQueryResult') afuri = "http://sovarr.c4dm.eecs.qmul.ac.uk/features/" cataloguePath = '/Users/alo/MusicOntology/features/af-catalogue.rdf' graph = Graph() graph.parse(cataloguePath) execfile('/Users/alo/MusicOntology/features/fca/writeHTML.py') def getFeaturesByTool( name ): qry = 'SELECT DISTINCT ?feature WHERE { ?x af:computedIn "' + name + '" . ?x af:feature ?feature} ORDER BY ?feature' return graph.query(qry, initNs=dict( af=Namespace(afuri)) ) def getBaseFeatures(): features = [] ns = URIRef(u'http://sovarr.c4dm.eecs.qmul.ac.uk/features/computedIn') for su in graph.subjects(RDF.type, OWL.Class): count = sum(1 for _ in graph.objects(su,ns)) if count > 1: features.append(su.split('/')[-1]) return features.sort() def getTools(): return graph.query( """SELECT DISTINCT ?tool WHERE { ?x local:computedIn ?tool . ?x local:feature ?feature } ORDER BY ?tool""", initNs=dict( af=Namespace(afuri)) ) def constructMatrix( name, path ): rows = [] columns = [] matrix = [] cat = ["appdomain", "complexity", "domain", "level", "temporalscale", "dimensions"] catdict = {} for nm in cat: catdict[nm] = [] for ns, value in graph.namespaces(): if ns == 'local': local = value for it in getFeaturesByTool(name): rows.append(it[0]) for su, pr, ob in graph.triples((URIRef(local+it[0]), None, None)): col = pr.split('/')[-1] if cat.count(col) != 0: if catdict[col].count(ob) == 0: columns.append(col+"-"+ob) catdict[col].append(ob) rows.sort() columns.sort() for i in range(len(rows)): row = [] for j in range(len(columns)): row.append(0) matrix.append(row) index = 0 for feature in rows: for s, p, o in graph.triples((URIRef(local+feature), None, None)): col = p.split('/')[-1] if cat.count(col) != 0: matrix[index][columns.index(col+"-"+o)] = 1 index += 1 writeCXT(path+name+'.cxt', matrix, columns, rows) print ("wrote cxt data to "+path+name+".cxt") name = name.replace(' ', '\ ') os.system("fcastone -bc "+path+name+".cxt "+path+name+".dot") def constructBaseMatrix( name, path ): rows = [] columns = [] matrix = [] cat = ["domain", "level", "temporalscale", "dimensions", "output", "tag"] catdict = {} for nm in cat: catdict[nm] = [] for ns, value in graph.namespaces(): if ns == 'af': local = value features = [] ns = URIRef(u'http://sovarr.c4dm.eecs.qmul.ac.uk/features/computedIn') for su in graph.subjects(RDF.type, OWL.Class): count = sum(1 for _ in graph.objects(su,ns)) if count > 1: features.append(su.split('/')[-1]) for it in features: rows.append(it) for su, pr, ob in graph.triples((URIRef(local+it), None, None)): col = pr.split('/')[-1] if cat.count(col) != 0: if catdict[col].count(ob) == 0: columns.append(ob.replace(' ', '-')+"-"+col.replace(' ', '-')) catdict[col].append(ob) rows.sort() columns.sort() for i in range(len(rows)): row = [] for j in range(len(columns)): row.append(0) matrix.append(row) index = 0 for feature in rows: for s, p, o in graph.triples((URIRef(local+feature), None, None)): col = p.split('/')[-1] if cat.count(col) != 0: matrix[index][columns.index(o.replace(' ', '-')+"-"+col.replace(' ', '-'))] = 1 index += 1 writeCXT(path+name+'.cxt', matrix, columns, rows) print ("wrote cxt data to "+path+name+".cxt") name = name.replace(' ', '\ ') os.system("fcastone -bc "+path+name+".cxt "+path+name+".dot")