Changeset 34441 for main


Ignore:
Timestamp:
2020-10-05T12:49:05+13:00 (4 years ago)
Author:
davidb
Message:

Further refactoring

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/model-sites-dev/mars/collect/deam/MERGE-CSV-FEATURES-AND-AV-FILES.py

    r34440 r34441  
    44from __future__ import division
    55from __future__ import print_function
     6from __future__ import with_statement
     7
    68
    79import csv
     
    911from collections import OrderedDict
    1012
    11 def csv_features_to_dict(csv_filename):
     13def csv_load_features_to_dict(csv_filename):
    1214    csv_features_file = open(csv_filename,"r")
    13     csv_features_reader = csv.reader(csv_features_file, delimiter=',', quotechar='"')
    1415
    15     csv_features_dict = {}
     16    try:
     17        csv_features_reader = csv.reader(csv_features_file, delimiter=',', quotechar='"')
    1618
    17     line_count = 0
    18     header_row = None
     19        csv_features_dict = {}
     20       
     21        line_count = 0
     22        header_row = None
     23       
     24        for row in csv_features_reader:
     25            if line_count == 0:
     26                row.pop(0)
     27                header_row = row
     28            else:
     29                full_file_id = row[0]
     30               
     31                pat = re.compile('^import/(\\d+).json$')
     32                mat = pat.match(full_file_id)
     33                song_id = int(mat.group(1))
    1934
    20     for row in csv_features_reader:
    21         if line_count == 0:
    22             row.pop(0)
    23             header_row = row
    24         else:
    25             full_file_id = row[0]
     35                row.pop(0)
     36                row_ordered_dict = OrderedDict()
     37               
     38                for i in range(0, len(header_row)):
     39                    field = header_row[i];
     40                    value = row[i];
     41                   
     42                    row_ordered_dict[field] = value
     43               
     44                csv_features_dict[song_id] = row_ordered_dict
    2645
    27             pat = re.compile('^import/(\\d+).json$')
    28             mat = pat.match(full_file_id)
    29             song_id = int(mat.group(1))
     46            line_count += 1
    3047
    31             row.pop(0)
    32             row_ordered_dict = OrderedDict()
     48    finally:
     49        csv_features_file.close()
     50        return csv_features_dict
    3351
    34             for i in range(0, len(header_row)):
    35                 field = header_row[i];
    36                 value = row[i];
     52def csv_load_groundtruth_to_dict(csv_filename):
    3753
    38                 row_ordered_dict[field] = value
     54    # Written in the 'with' style that automatically closes the open()
     55    with open(csv_filename,"r") as csv_file:
     56        csv_reader = csv.reader(csv_file, delimiter=',')
     57
     58        csv_gt_dict = {}
     59
     60        line_count = 0
     61        header_row = None
     62
     63        for row in csv_reader:
     64            if line_count == 0:
     65                row.pop(0)
     66                header_row = row
     67            else:
     68                song_id = int(row[0])
     69                row.pop(0)
     70
     71                row_ordered_dict = OrderedDict()
     72
     73                for i in range(0, len(row)):
     74                    field = header_row[i];
     75                    value = row[i];
     76
     77                    row_ordered_dict[field] = value
    3978               
    40             csv_features_dict[song_id] = row_ordered_dict
     79                csv_gt_dict[song_id] = row_ordered_dict
    4180
    42         line_count += 1
    43 
    44     return csv_features_dict
    45 
    46 def csv_groundtruth_to_dict(csv_filename):
    47 
    48     csv_file = open(csv_filename)
    49     csv_reader = csv.reader(csv_file, delimiter=',')
    50 
    51     csv_gt_dict = {}
    52 
    53     line_count = 0
    54     header_row = None
    55 
    56     for row in csv_reader:
    57         if line_count == 0:
    58             row.pop(0)
    59             header_row = row
    60         else:
    61             song_id = int(row[0])
    62             row.pop(0)
    63 
    64             row_ordered_dict = OrderedDict()
    65 
    66             for i in range(0, len(row)):
    67                 field = header_row[i];
    68                 value = row[i];
    69 
    70                 row_ordered_dict[field] = value
    71                
    72             csv_gt_dict[song_id] = row_ordered_dict
    73 
    74         line_count += 1
     81            line_count += 1
    7582
    7683    return csv_gt_dict
     
    98105   
    99106
    100 def ordered_dict_features_to_array(songkey_combined_dict):
     107def ordered_dict_features_to_list(songkey_combined_dict):
    101108   
    102     features_array = []
     109    features_list = []
    103110
    104111    header = []
     
    111118        header.append(feature_key)
    112119
    113     features_array.append(header)
     120    features_list.append(header)
    114121
    115122    # Now move on to processing each of the song_key_id entries
     
    127134
    128135
    129         features_array.append(row)
     136        features_list.append(row)
    130137
    131     return features_array
     138    return features_list
    132139       
    133140
    134 def csv_save_combined_features(csv_filename,combined_features_array):
     141def csv_save_combined_features(csv_filename,combined_features_list):
    135142    csv_features_file = open(csv_filename,"w",newline="")
    136143    csv_features_writer = csv.writer(csv_features_file, delimiter=',', quotechar='"')
    137144
    138     csv_features_writer.writerows(combined_features_array);
     145    csv_features_writer.writerows(combined_features_list);
    139146
    140147
     
    157164
    158165
    159 csv_features_dict = csv_features_to_dict(csv_input_filename)
     166csv_features_dict = csv_load_features_to_dict(csv_input_filename)
    160167
    161 arousal_groundtruth_dict = csv_groundtruth_to_dict(arousal_csv_filename)
    162 valence_groundtruth_dict = csv_groundtruth_to_dict(valence_csv_filename)
     168arousal_groundtruth_dict = csv_load_groundtruth_to_dict(arousal_csv_filename)
     169valence_groundtruth_dict = csv_load_groundtruth_to_dict(valence_csv_filename)
    163170
    164171print_songkey_dict("Arousal Ground-truth",arousal_groundtruth_dict)
     
    170177print_songkey_dict("Essentia Features",csv_features_dict,1)
    171178
    172 combined_features_array = ordered_dict_features_to_array(csv_features_dict)
     179combined_features_list = ordered_dict_features_to_list(csv_features_dict)
    173180
    174181
     
    177184print("* Saving combined CSV data to: " + csv_output_filename)
    178185print("****")
    179 csv_save_combined_features(csv_output_filename,combined_features_array)
     186csv_save_combined_features(csv_output_filename,combined_features_list)
    180187
Note: See TracChangeset for help on using the changeset viewer.