Index: sodar/trunk/sodar.py =================================================================== --- sodar/trunk/sodar.py (revision 130) +++ sodar/trunk/sodar.py (revision 132) @@ -6,6 +6,6 @@ def _main(): import optparse - from utils import openAnything - import arrayData as a + from sodar.utils import openAnything + from sodar import arrayData as a import pylab as p import os Index: sodar/trunk/sodar/__init__.py =================================================================== --- sodar/trunk/sodar/__init__.py (revision 129) +++ sodar/trunk/sodar/__init__.py (revision 132) @@ -8,4 +8,3 @@ 'adjustedData', 'arrayData', - 'sodar', 'utils'] Index: sodar/trunk/sodar/utils/__init__.py =================================================================== --- sodar/trunk/sodar/utils/__init__.py (revision 129) +++ sodar/trunk/sodar/utils/__init__.py (revision 132) @@ -4,3 +4,4 @@ """ -__all__ = ['openAnything'] +__all__ = ['openAnything' + 'findMissing'] Index: sodar/trunk/sodar/utils/findMissing.py =================================================================== --- (revision ) +++ sodar/trunk/sodar/utils/findMissing.py (revision 132) @@ -1,0 +1,75 @@ +""" +Find raw sodar data files in need of processing. + +Files are presumed organized according to NCCOOS conventions. +""" + +def findMissing(source, destination): + """ + Find raw sodar data files in need of processing. + + Get source filetree. + Get destination file tree. + Construct ideal destination file tree from source + Compare ideal destination file tree to destination file tree + Construct difference file tree as list of tuples (source, destination) + """ + + import os + + source = '/home/cbcoasis/Desktop/sodar' + destination = '/var/www/html/sodar/plots' + + sourceWalk = os.walk(source) + sourceWalk = [(fullPath, subDirs, files) + for fullPath, subDirs, files + in sourceWalk] + sourceWalk = sourceWalk[1:] + + destinationWalk = os.walk(destination) + destinationWalk = [(fullPath, subDirs, files) + for fullPath, subDirs, files + in destinationWalk] + destinationWalk = destinationWalk[1:] + destinationWalk = [fullPath + for fullPath, subDirs, files + in destinationWalk + if not subDirs] + + idealWalk = [os.path.join(destination, + fullPath.replace(source + os.path.sep, ''), + fileName.replace('.dat', '')) + + for fullPath, subDirs, files in sourceWalk + for fileName in files] + + differenceWalk = [path + for path + in idealWalk + if path not in destinationWalk] + + differenceWalk = sorted(differenceWalk) + + differenceWalk = [(os.path.join(source, + path.replace(destination + os.path.sep, + '') + '.dat'), + path) + for path + in differenceWalk] + + return differenceWalk + +if __name__ == '__main__': + import optparse + import os + from pprint import pprint + + parser = optparse.OptionParser() + (values, args) = parser.parse_args() + (source, destination) = tuple(args) + if source[-1] == os.path.sep: + source = source[:-1] + if destination[-1] == os.path.sep: + destination = destination[:-1] + + pprint(findMissing(source, destination))