def extract_landmarks(gtf, landmarks=ALL_LANDMARKS):
    """Given an gene annotation GFF/GTF file,

    # Arguments
        gtf: File path or a loaded `pd.DataFrame` with columns:
    seqname, feature, start, end, strand
        landmarks: list or a dictionary of landmark extractors (function or name)

    # Note
        When landmark extractor names are used, they have to be implemented in
    the module `concise.preprocessing.position`

    # Returns
        Dictionary of pd.DataFrames with landmark positions
    (columns: seqname, position, strand)
    """
    if isinstance(gtf, str):
        _logger.info("Reading gtf file..")
        gtf = read_gtf(gtf)
        _logger.info("Done")

    _logger.info("Running landmark extractors..")
    # landmarks to a dictionary with a function
    assert isinstance(landmarks, (list, tuple, set, dict))
    if isinstance(landmarks, dict):
        landmarks = {k: _get_fun(v) for k, v in landmarks.items()}
    else:
        landmarks = {_to_string(fn_str): _get_fun(fn_str)
                     for fn_str in landmarks}

    r = {k: _validate_pos(v(gtf)) for k, v in landmarks.items()}
    _logger.info("Done!")
    return r
def extract_landmarks ( gtf , landmarks = ALL_LANDMARKS ) : if isinstance ( gtf , str ) : _logger . info ( "Reading gtf file.." ) gtf = read_gtf ( gtf ) _logger . info ( "Done" ) _logger . info ( "Running landmark extractors.." ) assert isinstance ( landmarks , ( list , tuple , set , dict ) ) if isinstance ( landmarks , dict ) : landmarks = { k : _get_fun ( v ) for k , v in landmarks . items ( ) } else : landmarks = { _to_string ( fn_str ) : _get_fun ( fn_str ) for fn_str in landmarks } r = { k : _validate_pos ( v ( gtf ) ) for k , v in landmarks . items ( ) } _logger . info ( "Done!" ) return r
Given an gene annotation GFF/GTF file,

    # Arguments
        gtf: File path or a loaded `pd.DataFrame` with columns:
    seqname, feature, start, end, strand
        landmarks: list or a dictionary of landmark extractors (function or name)

    # Note
        When landmark extractor names are used, they have to be implemented in
    the module `concise.preprocessing.position`

    # Returns
        Dictionary of pd.DataFrames with landmark positions
    (columns: seqname, position, strand)