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

def MAPGenoToTrans(parsedGTF,feature):
    """
    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
    """
    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