Ard <--> Pi serial data transfer(unsolved)

well i cant tell read how many to read because it's going to very in size by a little under 13.34% +/- each packet ( the char width of IMU and UltraSonic data is dynamic not static + not all GPS data will be same size) so any ideas on how to know ahead of when i get's there how big the amount to read would be great

You don't need to know how many to read.

Here is some Arduino code that collects data from the serial port using the same delimiters you are using.

#define SOP '<'
#define EOP '>'

bool started = false;
bool ended = false;

char inData[80];
byte index;

void setup()
{
   Serial.begin(57600);
   // Other stuff...
}

void loop()
{
  // Read all serial data available, as fast as possible
  while(Serial.available() > 0)
  {
    char inChar = Serial.read();
    if(inChar == SOP)
    {
       index = 0;
       inData[index] = '\0';
       started = true;
       ended = false;
    }
    else if(inChar == EOP)
    {
       ended = true;
       break;
    }
    else
    {
      if(index < 79)
      {
        inData[index] = inChar;
        index++;
        inData[index] = '\0';
      }
    }
  }

  // We are here either because all pending serial
  // data has been read OR because an end of
  // packet marker arrived. Which is it?
  if(started && ended)
  {
    // The end of packet marker arrived. Process the packet

    // Reset for the next packet
    started = false;
    ended = false;
    index = 0;
    inData[index] = '\0';
  }
}

You should easily be able to adapt this, using the methods available on the Pi to read serial data one character at a time and to tell how many characters there are waiting to be read.