diff Functions/FilesFunctions.py @ 1:0f7f611deca4

Functions
author Victor Padilla <victor.padilla.mc@gmail.com>
date Mon, 04 May 2015 22:53:31 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Functions/FilesFunctions.py	Mon May 04 22:53:31 2015 +0200
@@ -0,0 +1,206 @@
+'''
+@organization: Lancaster University & University of Leeds
+@version: 1.0
+Created on 11/12/2014
+
+@author: Victor Padilla
+@contact: v.padilla@lancaster.ac.uk
+
+Auxiliary functions to manipulate files and convert to music21
+for processing
+
+'''
+
+from music21 import converter
+import os
+
+class FilesFunctions:
+    
+    def getFiles(self,path):
+        '''
+        Takes the XML files in a folder excluding ground and results 
+        returns alphabetically
+        
+        usage:
+        ff=FilesFunctions()
+        files=ff.getFiles("C:\\Users\\victor\\Desktop\\data\k458\Process\m2\parts\0\XML")
+        '''
+        
+        omr_files=[]
+        dir_content = os.listdir(path)
+        dir_content.sort()
+        for myfile in dir_content:
+            directory = os.path.join(path,myfile)
+            extension = os.path.splitext(myfile)[1]
+            if myfile.find("result.")==-1 and myfile!="ground.xml" and extension.upper()==".XML":
+                omr_files.append(os.path.abspath(directory))
+        return omr_files
+    
+    def getAllFiles(self,path):
+        '''
+        Takes all the files in a folder
+        returns alphabetically
+        
+        usage:
+        ff=FilesFunctions()
+        files=ff.getAllFiles("C:\\Users\\victor\\Desktop\\data\k458\Process\m2\parts\0\XML")
+        '''
+        omr_files=[]
+        dir_content = os.listdir(path)
+        dir_content.sort()
+        for myfile in dir_content:
+            directory = os.path.join(path,myfile)
+            omr_files.append(os.path.abspath(directory))
+        return omr_files
+    
+        
+    def SubDirPath (self,d):
+        '''
+        Returns the directories from a path
+        
+        usage:
+        ff=FilesFunctions()
+        subdirArray=ff.SubDirPath("C:\\Users\\victor\\Desktop\\data\k458\Process\m2\parts")
+        
+        #returns ["C:\\Users\\victor\\Desktop\\data\k458\Process\m2\parts\1",
+                "C:\\Users\\victor\\Desktop\\data\k458\Process\m2\parts\2"....] 
+        '''
+        return filter(os.path.isdir, [os.path.join(d,f) for f in os.listdir(d)])  
+    
+    
+    def getGround(self,path):
+        '''
+        Returns the ground file from a path
+        
+        usage:
+        ff=FilesFunctions()
+        ground=ff.getGround("C:\\Users\\victor\\Desktop\\data\\k458\\Process")
+        '''
+        dir_content = os.listdir(path)
+        dir_content.sort()
+        for myfile in dir_content:
+            if myfile=="ground.xml":
+                directoryFile = os.path.join(path,myfile)
+                return directoryFile
+            
+            
+    def getFinalScore(self,path):
+        '''
+        Returns the finalScore.xml file from a path
+        
+        usage:
+        ff=FilesFunctions()
+        finalScore=ff.getFinalScore("C:\\Users\\victor\\Desktop\\data\\k458\\Process")
+        '''
+        dir_content = os.listdir(path)
+        dir_content.sort()
+        for myfile in dir_content:
+            if myfile=="finalScore.xml":
+                directoryFile = os.path.join(path,myfile)
+                return directoryFile 
+    
+    def writeText(self,path,betterOmrIds):
+        '''
+        Writes betterOMR.txt file with the number of the OMR files chosen in the phylogenetic tree
+        
+        usage:
+        ff=FilesFunctions()
+        betterOmrIds=[2,3,5]
+        ff.writeText("C:\\Users\\victor\\Desktop\\data\\k458\\Process",betterOmrIds)
+        '''
+        f=open(path+"\\betterOMR.txt","w")
+        for idOMR in betterOmrIds:
+            f.write(str(idOMR)+"\n")
+        f.close()
+        
+    def getOMRs(self,path): 
+        '''
+        Takes the different .xml in a folder and convert them to music21
+        Returns an array with the files processed
+        
+        ff=FilesFunctions()
+        OMRs=ff.getOMRs("C:\\Users\\victor\\Desktop\\data\\k458\\Process\\m2\parts\0\XML",)
+        '''
+        fsFiles=self.getFiles(path)  
+        OMRs=[]
+        for f in fsFiles:
+            try:
+                print f
+                OMRs.append(converter.parse(f, forceSource=True))
+            except:
+                OMRs.append([])
+                print "OMR error"
+        return OMRs   
+    
+    def getOMR(self,f): 
+        '''
+        Takes the  .xml file in a folder and convert them to music21
+
+        '''
+        OMR=[]
+        try:
+            print f
+            OMR=converter.parse(f, forceSource=True)
+        except:
+            OMR=[]
+            print "OMR error"
+        return OMR  
+    def getAllImgFiles(self,d):
+        '''
+        Returns all the .tif files from a directory ordered alphabetically
+        
+        usage:
+        ff=FilesFunctions()
+        imageFiles=ff.getAllImgFiles("C:\\Users\\victor\\Desktop\\data\\k458\\OMRS\\m2\parts\Peters\0\XML",)
+        '''
+        files=[]
+        dir_content = os.listdir(d)
+        dir_content.sort()
+        for myfile in dir_content:
+            if myfile.endswith('.tif'):
+                files.append(myfile)
+        return files
+
+    def getKernFile(self,d):
+        '''
+        Returns the first .krn file from a directory ordered alphabetically
+        
+        usage:
+        ff=FilesFunctions()
+        kernFile=ff.getKernFile("C:\\Users\\victor\\Desktop\\data\\k458\\Process\\m2\parts\Peters\0\XML",)
+        '''
+        dir_content = os.listdir(d)
+        dir_content.sort()
+        for myfile in dir_content:
+            if myfile.endswith('.krn'):
+                return myfile
+    def getXMLFile(self,d):
+        '''
+        Returns the first .xml file from a directory ordered alphabetically
+        
+        usage:
+        ff=FilesFunctions()
+        xmlFile=ff.getXMLFile("C:\\Users\\victor\\Desktop\\data\\k458\\Process\\m2\parts\Peters\0\XML",)
+        '''
+        dir_content = os.listdir(d)
+        dir_content.sort()
+        for myfile in dir_content:
+            if myfile.endswith('.xml'):
+                return myfile
+                
+    def getAllXMLFiles(self,d):
+        '''
+        Returns the .xml files from a directory ordered alphabetically
+        
+        usage:
+        ff=FilesFunctions()
+        xmlFiles=ff.getAllXMLFiles("C:\\Users\\victor\\Desktop\\data\\k458\\OMRS\\m2\parts\Peters\0\XML",)
+        '''
+        files=[]
+        dir_content = os.listdir(d)
+        dir_content.sort()
+        for myfile in dir_content:
+            if myfile.endswith('.xml'):
+                files.append(myfile)
+        return files    
+