Example #1
0
def main(args=sys.argv[1:]):
    parser = argparse.ArgumentParser()

    parser.add_argument('-o', '--output', type=argparse.FileType('w'),
                        default=sys.stdout, help="Output (default: stdout)")
    parser.add_argument('-d', '--delimiter', default='\t', metavar='DELIMITER',
                        help='Delimiter (default: Tab)')
    parser.add_argument('files', metavar='1DD_FILE', nargs='+')

    parsed_args = parser.parse_args(args)

    with contextlib.closing(parsed_args.output):
        writer = csv.writer(parsed_args.output,
                            delimiter=parsed_args.delimiter,
                            lineterminator='\n')
        writer.writerow(('year', 'month', 'latitude', 'longitude',
                         'reading_count', 'total', 'mean', 'sd',
                         'minimum', 'maximum'))
        for outfile in parsed_args.files:
            with open(outfile, 'rb') as fp:
                reader = onedd.reader(fp)

                indices = xrange(onedd.MEASUREMENTS_PER_DAY)
                coordinates = reader.coordinate_iter()
                days = list(reader)

                for (i, (lat, lon)) in itertools.izip(indices, coordinates):
                    summary = summarize_coordinate(days, i)
                    row = [reader.year, reader.month, lat, lon]
                    row.extend(summary)

                    writer.writerow(row)
Example #2
0
def main(args=sys.argv[1:]):
    """
    Parses arguments, reads file(s), prints results to output
    """
    parser = argparse.ArgumentParser(
        description="""GPCP 1DD Extraction utility
filters the file(s) specified by the provided coordinates."""
    )
    parser.add_argument("latitude", type=float)
    parser.add_argument("longitude", type=float)
    parser.add_argument("file", nargs="+")
    parser.add_argument(
        "-o", "--output", type=argparse.FileType("w"), default=sys.stdout, help="Output file (default: stdout)"
    )

    args = parser.parse_args()

    writer = csv.writer(args.output, delimiter="\t", lineterminator="\n")
    writer.writerow(("date", "latitude", "longitude", "precipitation"))
    with contextlib.closing(args.output):
        for path in args.file:
            fp = open(path, "rb")
            with contextlib.closing(fp):
                data_file = onedd.reader(fp)
                data = (
                    i for i in data_file.data_iter() if i.latitude == args.latitude and i.longitude == args.longitude
                )
                writer.writerows(data)
Example #3
0
def main(args=sys.argv[1:]):
    """
    Reads arguments, writes date, latitude, longitude, precipitation
    to output
    """

    parser = argparse.ArgumentParser()
    parser.add_argument('-o', '--output', type=argparse.FileType('w'),
                        default=sys.stdout, metavar='OUTPUT',
                        help="Output (default: stdout)")
    parser.add_argument('-d', '--delimiter', default='\t',
                        metavar='DELIM',
                        help='Output delimiter (default: Tab)')
    parser.add_argument('files', nargs='+', metavar="FILE",
                        help='1DD file to read')

    parsed_args = parser.parse_args(args)

    with contextlib.closing(parsed_args.output):
        writer = csv.writer(parsed_args.output,
                            delimiter=parsed_args.delimiter)

        # Headers
        headers = ('date', 'latitude', 'longitude', 'precipitation')
        writer.writerow(headers)

        for infile in parsed_args.files:
            with open(infile, 'rb') as fp:
                reader = onedd.reader(fp)
                writer.writerows(reader.data_iter())