Seqanswers Leaderboard Ad

Collapse

Announcement

Collapse
No announcement yet.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Get loop sequence from miRBase

    Does anyone know a way to extract the loop sequence from the miRNA hairpin. Basically I need to extract the part that is between the 3p- and 5p part of the hairpin.

  • #2
    Just align the 5p and 3p sequences to the hairpin sequence and take the bit between them.

    Comment


    • #3
      Originally posted by dpryan View Post
      Just align the 5p and 3p sequences to the hairpin sequence and take the bit between them.
      I have tried, but struggle to find a command that works.

      Comment


      • #4
        I would expect that either biopython or bioperl should make this relatively straight forward. The idea is to either use base python string matching or the pairwise2 module and global alignment.

        Comment


        • #5
          Here is another suggestion using R/Bioconductor. Good luck!

          Code:
          require(rtracklayer)
          require(BSgenome.Hsapiens.UCSC.hg19)
          require(ShortRead)
          
          mirTrack = import('ftp://mirbase.org/pub/mirbase/20/genomes/hsa.gff3')
          
          # split into hairpin, 5arm and 3arm
          hp = mirTrack[mirTrack$type != "miRNA"]
          arm5 = mirTrack[grepl("-5p", mirTrack$Name)]
          arm3 = mirTrack[grepl("-3p", mirTrack$Name)]
          
          # make key for matching hairpin with arm5 and arm3
          hp$arm5 = match(hp$ID, arm5$Derives_from)
          hp$arm3 = match(hp$ID, arm3$Derives_from)
          
          # discard hairpins lacking annotated 5p and 3p arms (loops not defined)
          hp = hp[!is.na(hp$arm3) & !is.na(hp$arm5)]
          
          # prepare 
          hp$loopStart = 0
          hp$loopEnd = 0
          
          # miRNAs on pos and neg strand have to be parsed separately
          ## posStrand
          isPos = as.vector(strand(hp) =="+")
          hp$loopStart[isPos] = end(arm5[hp$arm5[isPos]])
          hp$loopEnd[isPos] = start(arm3[hp$arm3[isPos]])
          
          ## negStrand
          hp$loopEnd[!isPos] = start(arm5[hp$arm5[!isPos]])
          hp$loopStart[!isPos] = end(arm3[hp$arm3[!isPos]])
          
          # GRanges for miRNA loops
          loops = GRanges(seqnames = seqnames(hp), 
            IRanges(hp$loopStart, hp$loopEnd),strand = strand(hp), 
            MI = hp$ID, Name = hp$Name)
          
          # sanity check
          hist(width(loops))
          
          # we don't want the first/last nt of bounding mature miRs
          loops = loops-1
          loops$seq = getSeq(Hsapiens, loops) 
          loops
          
          # export as fastaFile
          loopsFasta = loops$seq
          names(loopsFasta) = paste("loopSeq", loops$MI, loops$Name, sep = "_")
          writeFasta(loopsFasta, file = "mirbase20loops.fa")

          Comment


          • #6
            Hi! Here is a suggestion using R/Bioconductor. Good luck

            Code:
            require(rtracklayer)
            require(BSgenome.Hsapiens.UCSC.hg19)
            require(ShortRead)
            mirTrack = import('ftp://mirbase.org/pub/mirbase/20/genomes/hsa.gff3')
            
            # split into hairpin, 5arm and 3arm
            hp = mirTrack[mirTrack$type != "miRNA"]
            arm5 = mirTrack[grepl("-5p", mirTrack$Name)]
            arm3 = mirTrack[grepl("-3p", mirTrack$Name)]
            
            # make key for matching hairpin with arm5 and arm3
            hp$arm5 = match(hp$ID, arm5$Derives_from)
            hp$arm3 = match(hp$ID, arm3$Derives_from)
            
            # discard hairpins without annotated 5p and 3p arms
            hp = hp[!is.na(hp$arm3) & !is.na(hp$arm5)]
            
            # prepare
            hp$loopStart = 0
            hp$loopEnd = 0
            
            # miRNAs on pos and neg strand have to be parsed separately
            ## posStrand
            isPos = as.vector(strand(hp) =="+")
            hp$loopStart[isPos] = end(arm5[hp$arm5[isPos]])
            hp$loopEnd[isPos] = start(arm3[hp$arm3[isPos]])
            ## negStrand
            hp$loopEnd[!isPos] = start(arm5[hp$arm5[!isPos]])
            hp$loopStart[!isPos] = end(arm3[hp$arm3[!isPos]])
            # GRanges for miRNA loops
            loops = GRanges(seqnames = seqnames(hp),
            IRanges(hp$loopStart, hp$loopEnd),strand = strand(hp),
            MI = hp$ID, Name = hp$Name)
            # sanity check
            hist(width(loops), breaks = 50)
            # we dont want th efirst/last nt of bounding mature miRs
            loops = loops-1
            loops$seq = getSeq(Hsapiens, loops)
            # export
            loops
            loopsFasta = loops$seq
            names(loopsFasta) = paste("loop", loops$MI, loops$Name, sep = "_")
            writeFasta(loopsFasta, file = "mirbase20loops.fa")
            readLines("mirbase20loops.fa")

            Comment

            Latest Articles

            Collapse

            • seqadmin
              Addressing Off-Target Effects in CRISPR Technologies
              by seqadmin






              The first FDA-approved CRISPR-based therapy marked the transition of therapeutic gene editing from a dream to reality1. CRISPR technologies have streamlined gene editing, and CRISPR screens have become an important approach for identifying genes involved in disease processes2. This technique introduces targeted mutations across numerous genes, enabling large-scale identification of gene functions, interactions, and pathways3. Identifying the full range...
              08-27-2024, 04:44 AM
            • seqadmin
              Selecting and Optimizing mRNA Library Preparations
              by seqadmin



              Sequencing mRNA provides a snapshot of cellular activity, allowing researchers to study the dynamics of cellular processes, compare gene expression across different tissue types, and gain insights into the mechanisms of complex diseases. “mRNA’s central role in the dogma of molecular biology makes it a logical and relevant focus for transcriptomic studies,” stated Sebastian Aguilar Pierlé, Ph.D., Application Development Lead at Inorevia. “One of the major hurdles for...
              08-07-2024, 12:11 PM

            ad_right_rmr

            Collapse

            News

            Collapse

            Topics Statistics Last Post
            Started by seqadmin, 08-27-2024, 04:40 AM
            0 responses
            16 views
            0 likes
            Last Post seqadmin  
            Started by seqadmin, 08-22-2024, 05:00 AM
            0 responses
            293 views
            0 likes
            Last Post seqadmin  
            Started by seqadmin, 08-21-2024, 10:49 AM
            0 responses
            135 views
            0 likes
            Last Post seqadmin  
            Started by seqadmin, 08-19-2024, 05:12 AM
            0 responses
            124 views
            0 likes
            Last Post seqadmin  
            Working...
            X