Vpython code not unpacking numerical serial information as expected causing graphics issues

PARTIALLY SOLVED!!
My mistake I realised I had the wrong order of variables being multiplied by the change to radians!

However…that said I’m now stumped why the roll isn’t working and the vectors which control the graphic are not in the order I expect?

Hello again everyone, this one really has me stumped.
In short I’m up to Lecture 19 of a tutorial series of lessons for the BNO055 chip.
I have the native Arduino code working perfect and consistently and I can monitor the output variables and their values which match what I expect them to be. Particularly for accel, gyro, mg and system which are set to 3 when the BNO055 chip is calibrated.
I also have a stable vpython graphic representing the vectors of the associated measurements.

from vpython import *
from math import *
import serial
import time 
import numpy as np

arduinoData=serial.Serial('com9', 115200)
time.sleep(1) #Time for serial port to initialise
pause = 0.001

scene.range=5
toRad=2*np.pi/360
toDeg=1/toRad
scene.forward=vec(-1,-1,-1)
scene.width=600
scene.height=600
 
myArrowX = arrow(axis=vec(1,0,0), size=vec(2,0,0), shaftwidth=0.1, color=color.red)
myArrowY = arrow(axis=vec(0,1,0), size=vec(2,0,0), shaftwidth=0.1, color=color.green)
myArrowZ = arrow(axis=vec(0,0,1), size=vec(2,0,0), shaftwidth=0.1, color=color.blue)
frontArrow=arrow(axis=vec(1,0,0), size=vec(4,0,0), shaftwidth=0.1, color=color.white, round=True)
upArrow=arrow(axis=vec(0,1,0), size=vec(4,0,0), shaftwidth=0.1, color=color.magenta, round=True) 
sideArrow=arrow(axis=vec(0,0,1), size=vec(4,0,0), shaftwidth=0.1, color=color.orange, round=True)

myBoard = box (axis=vec(0,0,0), size=vec(6,0.2,2), pos=vec(0,0,0), opacity = 0.5)

while (True):
   
    while (arduinoData.inWaiting()==0): #While no arduino data pass and keep checking for data
        pass
    n=6
    dataPacket=arduinoData.readline()
    dataPacket=str(dataPacket, 'utf-8') #Strips off the serial code and leaves the correct characters
    splitPacket=dataPacket.split(",") #Create an array split on the comma from the serial data

    while n < len (splitPacket):

        accel   = float(splitPacket[0])#*toRad
        gyro  = float(splitPacket[1])#*toRad
        mg    = float(splitPacket[2])#*toRad
        system  = float(splitPacket[3])
        pitch   = float(splitPacket[4])*toRad
        roll     = float(splitPacket[5])*toRad
        yaw = float(splitPacket[6])*toRad

        #print ("accel= ", accel, "gyro= ", gyro, "mg= ", mg, "system= ", system, "pitch= ", pitch*toDeg, "roll= ", roll*toDeg, "yaw= ", yaw*toDeg)
        
               
        print ("accel= ", accel, "gyro= ", gyro, "mg= ", mg, "system= ", system)
        time.sleep(pause)
        n+=1

        rate(20)
        y=vec(0,1,0)
        
        #yaw is angle psi, pitch is angle theta
        k=vec(cos(yaw)*cos(pitch), sin(pitch), sin(yaw)*cos(pitch))     
        s=cross(k,y) #cross product k vec with y vec
        v=cross(s,k) #cross product s vec with k vec
        
        frontArrow.axis=k
        sideArrow.axis=s
        upArrow.axis=v

        #Took me a while to work this out from the lesson example on changing the arrow length
        #the lesson example simply uses frontArrow.length=4
        frontArrow.size=vec(4,0,0)
        sideArrow.size=vec(2.5,0,0)
        upArrow.size=vec(2.5,0,0)

        #This is my solution to fix the issue and align the board with the frontArrow!!!
        #by changing the relative vectors after the cross product myBoard.axis= k doesn't work
        #for me as the board is 90 degrees out relative to the frontArrow vector

        myBoard.axis= s
        myBoard.up= v
        #myBoard.axis= s