Giter Site home page Giter Site logo

editing of strand, score, etc about pybedtools HOT 5 CLOSED

daler avatar daler commented on July 28, 2024
editing of strand, score, etc

from pybedtools.

Comments (5)

vsmalladi avatar vsmalladi commented on July 28, 2024

Instead of an add_strand function, would a generic extend_bed function that allows you to extend the bed object you currently and populate these fields with . and then allow you to use the each function to add corresponding values?

from pybedtools.

daler avatar daler commented on July 28, 2024

If I understand correctly, you mean something like:

def extend_fields(feature, n):
    fields = feature.fields[:]
    while len(fields) < n:
        fields.append('.')
    return pybedtools.create_interval_from_list(fields)

Then you can write a user-defined function that assumes the fields have been padded:

def add_strand(feature, strand):
    feature[5] = strand
    return feature

So you would use them like this:

import pybedtools
x = pybedtools.example_bedtool('venn.b.bed')
y = x.each(extend_fields, 6).each(add_strand, '+').saveas()

I think that works pretty well. It leaves the manipulation of the number of fields (BED, GFF, VCF) up to the user, which I would prefer since it maintains flexibility. I'll add this to pybedtools.featurefuncs in Cython so it's hopefully faster.

from pybedtools.

vsmalladi avatar vsmalladi commented on July 28, 2024

That exactly what I was getting at. Sorry for not being very clear. I would also change the name from add_feature to update feature at that point, since the field would already exist.

from pybedtools.

daler avatar daler commented on July 28, 2024

OK, I added extend_fields in 5cc273b -- thanks for the suggestion.

Rather than make separate functions for every possible operation, I'd prefer to leave it up to the user to create the functions they want . . . so in this case update_strand would be up to you to write/name.

from pybedtools.

vsmalladi avatar vsmalladi commented on July 28, 2024

Sounds great. Ya makes more sense for a user to make and name their own functions. Thanks for adding the functionality.

from pybedtools.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.