code: def MAPGenoToTrans(parsedGTF,feature):
      
      GenTransMap=parsedGTF[parsedGTF["feature"]==feature]
      def getExonsPositions(df):
          start=int(df["start"])
          stop=int(df["end"])
          strand=df["strand"]
          r=range(start,stop+1)
          if strand=="-":
              r.sort(reverse=True)
          r=[ str(s) for s in r]
          return ",".join(r)
  
      GenTransMap["feature_bases"]=GenTransMap.apply(getExonsPositions, axis=1)
      GenTransMap=GenTransMap.sort_values(by=["transcript_id","exon_number"],ascending=True)
      def CombineExons(df):
          return pd.Series(dict( feature_bases = ','.join(df['feature_bases']) ) )
      GenTransMap=GenTransMap.groupby("transcript_id").apply(CombineExons)
      GenTransMap=GenTransMap.to_dict().get("feature_bases")
  
      return GenTransMap
docs: Gets all positions of all bases in an exon
  
      :param df: a Pandas dataframe with 'start','end', and 'strand' information for each entry.
                  df must contain 'seqname','feature','start','end','strand','frame','gene_id',
                  'transcript_id','exon_id','exon_number']
      :param feature: feature upon wich to generate the map, eg. 'exon' or 'transcript'
  
      :returns: a string with the comma separated positions of all bases in the exon