docs: def makeAsp(segID, N, CA, C, O, geo):
      '''Creates an Aspartic Acid 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_OD1_length=geo.CG_OD1_length
      CB_CG_OD1_angle=geo.CB_CG_OD1_angle
      CA_CB_CG_OD1_diangle=geo.CA_CB_CG_OD1_diangle
  
      CG_OD2_length=geo.CG_OD2_length
      CB_CG_OD2_angle=geo.CB_CG_OD2_angle
      CA_CB_CG_OD2_diangle=geo.CA_CB_CG_OD2_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")
      oxygen_d1= calculateCoordinates(CA, CB, CG, CG_OD1_length, CB_CG_OD1_angle, CA_CB_CG_OD1_diangle)
      OD1= Atom("OD1", oxygen_d1, 0.0, 1.0, " ", " OD1", 0, "O")
      oxygen_d2= calculateCoordinates(CA, CB, CG, CG_OD2_length, CB_CG_OD2_angle, CA_CB_CG_OD2_diangle)
      OD2= Atom("OD2", oxygen_d2, 0.0, 1.0, " ", " OD2", 0, "O")
  
      ##Create Residue Data Structure
      res= Residue((' ', segID, ' '), "ASP", '    ')
      res.add(N)
      res.add(CA)
      res.add(C)
      res.add(O)
      res.add(CB)
      res.add(CG) 
      res.add(OD1)
      res.add(OD2)
      return res