docs: def makeTrp(segID, N, CA, C, O, geo):
      '''Creates a Tryptophan residue'''
      ##R-Group
      CA_CB_length=geo.CA_CB_length
      C_CA_CB_angle=geo.C_CA_CB_angle
      N_C_CA_CB_diangle=geo.N_C_CA_CB_diangle
  
      CB_CG_length=geo.CB_CG_length
      CA_CB_CG_angle=geo.CA_CB_CG_angle
      N_CA_CB_CG_diangle=geo.N_CA_CB_CG_diangle
  
      CG_CD1_length=geo.CG_CD1_length
      CB_CG_CD1_angle=geo.CB_CG_CD1_angle
      CA_CB_CG_CD1_diangle=geo.CA_CB_CG_CD1_diangle
  
      CG_CD2_length=geo.CG_CD2_length
      CB_CG_CD2_angle=geo.CB_CG_CD2_angle
      CA_CB_CG_CD2_diangle=geo.CA_CB_CG_CD2_diangle
      
      CD1_NE1_length=geo.CD1_NE1_length
      CG_CD1_NE1_angle=geo.CG_CD1_NE1_angle
      CB_CG_CD1_NE1_diangle=geo.CB_CG_CD1_NE1_diangle
  
      CD2_CE2_length=geo.CD2_CE2_length
      CG_CD2_CE2_angle=geo.CG_CD2_CE2_angle
      CB_CG_CD2_CE2_diangle=geo.CB_CG_CD2_CE2_diangle
  
      CD2_CE3_length=geo.CD2_CE3_length
      CG_CD2_CE3_angle=geo.CG_CD2_CE3_angle
      CB_CG_CD2_CE3_diangle=geo.CB_CG_CD2_CE3_diangle
  
      CE2_CZ2_length=geo.CE2_CZ2_length
      CD2_CE2_CZ2_angle=geo.CD2_CE2_CZ2_angle
      CG_CD2_CE2_CZ2_diangle=geo.CG_CD2_CE2_CZ2_diangle
  
      CE3_CZ3_length=geo.CE3_CZ3_length
      CD2_CE3_CZ3_angle=geo.CD2_CE3_CZ3_angle
      CG_CD2_CE3_CZ3_diangle=geo.CG_CD2_CE3_CZ3_diangle
  
      CZ2_CH2_length=geo.CZ2_CH2_length
      CE2_CZ2_CH2_angle=geo.CE2_CZ2_CH2_angle
      CD2_CE2_CZ2_CH2_diangle=geo.CD2_CE2_CZ2_CH2_diangle
  
      carbon_b= calculateCoordinates(N, C, CA, CA_CB_length, C_CA_CB_angle, N_C_CA_CB_diangle)
      CB= Atom("CB", carbon_b, 0.0 , 1.0, " "," CB", 0,"C")
      carbon_g= calculateCoordinates(N, CA, CB, CB_CG_length, CA_CB_CG_angle, N_CA_CB_CG_diangle)
      CG= Atom("CG", carbon_g, 0.0, 1.0, " ", " CG", 0, "C")
      carbon_d1= calculateCoordinates(CA, CB, CG, CG_CD1_length, CB_CG_CD1_angle, CA_CB_CG_CD1_diangle)
      CD1= Atom("CD1", carbon_d1, 0.0, 1.0, " ", " CD1", 0, "C")
      carbon_d2= calculateCoordinates(CA, CB, CG, CG_CD2_length, CB_CG_CD2_angle, CA_CB_CG_CD2_diangle)
      CD2= Atom("CD2", carbon_d2, 0.0, 1.0, " ", " CD2", 0, "C")
      nitrogen_e1= calculateCoordinates(CB, CG, CD1, CD1_NE1_length, CG_CD1_NE1_angle, CB_CG_CD1_NE1_diangle)
      NE1= Atom("NE1", nitrogen_e1, 0.0, 1.0, " ", " NE1", 0, "N")
      carbon_e2= calculateCoordinates(CB, CG, CD2, CD2_CE2_length, CG_CD2_CE2_angle, CB_CG_CD2_CE2_diangle)
      CE2= Atom("CE2", carbon_e2, 0.0, 1.0, " ", " CE2", 0, "C")
      carbon_e3= calculateCoordinates(CB, CG, CD2, CD2_CE3_length, CG_CD2_CE3_angle, CB_CG_CD2_CE3_diangle)
      CE3= Atom("CE3", carbon_e3, 0.0, 1.0, " ", " CE3", 0, "C")
  
      carbon_z2= calculateCoordinates(CG, CD2, CE2, CE2_CZ2_length, CD2_CE2_CZ2_angle, CG_CD2_CE2_CZ2_diangle)
      CZ2= Atom("CZ2", carbon_z2, 0.0, 1.0, " ", " CZ2", 0, "C")
  
      carbon_z3= calculateCoordinates(CG, CD2, CE3, CE3_CZ3_length, CD2_CE3_CZ3_angle, CG_CD2_CE3_CZ3_diangle)
      CZ3= Atom("CZ3", carbon_z3, 0.0, 1.0, " ", " CZ3", 0, "C")
  
      carbon_h2= calculateCoordinates(CD2, CE2, CZ2, CZ2_CH2_length, CE2_CZ2_CH2_angle, CD2_CE2_CZ2_CH2_diangle)
      CH2= Atom("CH2", carbon_h2, 0.0, 1.0, " ", " CH2", 0, "C")
      
      ##Create Residue DS
      res= Residue((' ', segID, ' '), "TRP", '    ')
      res.add(N)
      res.add(CA)
      res.add(C)
      res.add(O)
      res.add(CB)
      res.add(CG)
      res.add(CD1)
      res.add(CD2)
  
      res.add(NE1)
      res.add(CE2)
      res.add(CE3)
  
      res.add(CZ2)
      res.add(CZ3)
  
      res.add(CH2)
      return res