data_processor module



class data_processor.MessageParser(data)

Bases: object

For memory saving, Protobuf3 defines that one field is inplicit (won’t be displayed, saved or serialized) when its value is set to default 0.

Therefore a related change was made in data_processor.py that every single value of messages is incremented by 1 additionaly, except for msgType and prfType.

currentAttributeMsg(value, idx, flag=1)

Pack messages of CurrentAttribute type

metaDataMsg(value, idx, flag=0)

Pack messages of MetaData type

positionMsg(value, idx, flag=0)

Pack messages of Position type

profLongMsg(value, idx, flag=1, prfType=None)

Pack messages of ProfileLong type

profShortMsg(value, idx, flag=1, prfType=None)

Pack messages of ProfileShort type

segmentMsg(value, idx, flag=0)

Pack messages of Segment type

stubMsg(value, idx, flag=0)

Pack messages of Stub type



data_processor.batch_processing()

Batch processing messages

This function calls the processing() function to process message in batches.

One can simply add processing() to th end of the function to process newcome messages.



data_processor.data_parsing(Msg, value, num, flag, msgType, prfType=None)

Based on the input parameters, the corresponding function is called.

Parameters
  • Msg – A instance of MessageParser class

  • value – The value of message of a specific msgType

  • num – The length of value

  • msgType – The type of message

  • prfType – The type of profile

Raises

ValueError – In case msgType is None



data_processor.dump_all_msg()

Dump all .pickle files in outputDir into outputFile. And the messages is ordered by time.

Note: only .pickle files of message you want to dump are allowed to be under outputDir directory, otherwise, an exception will be thrown.

Raises

AttributeError – In case some unexpected files or directories are under unputDir directory



data_processor.get_args_from_terminal()

Get arguments from terminal

Parameters
  • inputfile – The path of raw data file (.mat file)

  • messageType – adasis_v2 message type, for example, Position

  • profileType – adasis_v2 profile type, for example, Longitude

  • outputName – The prefix of output filename you want to define

  • outputType – The extention type of output filename, e.g., .pickle

  • verbose – If you want to increase output verbosity, set it to True

Returns

All arguments you get from terminal



data_processor.get_keys_and_values(data, msgType, prfType=None)

Return flag, keys of message, value of message corresponding to each key.

Parameters
  • msgType – Type of message, int or str

  • prfType – Type of profile, int or str

  • flag – Denotes if Dict matData has the value of key msgType of specific message(e.g. STUB). If not, flag = 0 otherwise flag = 1(default)

Returns

A tuple contains flag defined in get_keys_and_values(), msgKeys which is a list of keys of message that is type specified and value get from data through msgKeys

Raises

ValueError – In case msgType is None



data_processor.main()

To get arguments from terminal

Call processing() function to get arguments from terminal and process messages of A specific msgType.

Examples:
  • Segment message:

$ python data_processor.py  SEGMENT Segment  --outputType pickle  --verbose
  • ProfileLong_NaviPredicted message:

$ python data_processor.py  PROFILE_LONG  --profileType NaviPredicted  ProfileLong_NaviPredicted  --outputType bin  --verbose

To process in batches

If batch processing the messages is needed, comment out the processing() function and uncomment the function batch_processing() below.

To sort message

Call dump_all_msg() to merge all messages into a .pickle or .bin file, and order them by time.

To parse message

If you want to parse messages from .pickle or .bin file, parse_from_file() is a go-to method you can call.



data_processor.parse_from_file(fname)

Message Parser

  • .pickle and .bin file are supported.

Parameters

fname – The path of file

Returns

A <class adasis_v2_protocol_pb2.Message> type object

Examples

>>> msg = parse_from_file('./data/pickle/bin/CuA_Segment.bin')
>>> msg
message {
    Header {
        time: 738724.4364457406
        msgType: SEGMENT
        ...
    }
    Segment {
        functionalRoadClass: 2
        ...
    }
}
    ...


data_processor.print_log(inputfile, msgType, prfType, outputName, outputType)

Displays log messages

If verbose=True, this function will be called and log information will be displayed, else stay silent.



data_processor.print_status(fname)

Checks if fname path exist and if this file is empty, if both are True, returns SUCCEED, else returns ERROR.



data_processor.processing(inputfile, msgType, prfType=None, outputName='UNKNOWN_MESSAGE', outputType='pickle', verbose=False)

The core of message processor

Parameters
  • inputfile – File path of raw data (.mat file)

  • msgType – Type of message, int or str

  • prfType – Type of profile, int or str

  • outputName – The prefix of the name of output file

  • outputType – The suffix of the name of output file (extention of file) pickle and bin are available by now.

Examples

>>> processing(msgType='POSITION', outputName='Position')
>>> processing(msgType='PROFILE_LONG', prfType='ExtendedLane', outputName='ProfileLong_ExtendedLane')