docs: def get_atom_sequence_to_rosetta_map(self):
          '''Uses the Rosetta->ATOM injective map to construct an injective mapping from ATOM->Rosetta.
             We do not extend the injection to include ATOM residues which have no corresponding Rosetta residue.
               e.g. atom_sequence_to_rosetta_mapping[c].map.get('A  45 ') will return None if there is no corresponding Rosetta residue
             those residues to None.
             Likewise, if a PDB chain c is not present in the Rosetta model then atom_sequence_to_rosetta_mapping[c].map.get(s) returns None.
          '''
          if not self.rosetta_to_atom_sequence_maps and self.rosetta_sequences:
              raise Exception('The PDB to Rosetta mapping has not been determined. Please call construct_pdb_to_rosetta_residue_map first.')
  
          atom_sequence_to_rosetta_mapping = {}
          for chain_id, mapping in self.rosetta_to_atom_sequence_maps.iteritems():
              chain_mapping = {}
              for k in mapping:
                  chain_mapping[k[1]] = k[0]
              atom_sequence_to_rosetta_mapping[chain_id] = SequenceMap.from_dict(chain_mapping)
  
          # Add empty maps for missing chains
          for chain_id, sequence in self.atom_sequences.iteritems():
              if not atom_sequence_to_rosetta_mapping.get(chain_id):
                  atom_sequence_to_rosetta_mapping[chain_id] = SequenceMap()
  
          return atom_sequence_to_rosetta_mapping