Unconfigured Ad

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • sadiexiaoyu
    Member
    • Apr 2013
    • 57

    help about the following python script

    Hello, everybody,

    I would like to run the following python script, but it gives me back error report.

    from Bio import SeqIO
    out=open("try_out.fasta","w")
    for seq_record in SeqIO.parse ("try.fasta","fasta"):
    a=seq_record.seq
    a=a[5:-6]
    id=seq_record.id
    out.write(id,a,"fasta")
    out.close()

    File "try", line 7, in <module>
    out.write(id,a,"fasta")
    TypeError: function takes exactly 1 argument (3 given)

    Could anyone help me about it? I think there might be something wrong with the output file, but I cannot find the solution.

    Thanks!

    All the best,

    Sadiexiaoyu
  • finswimmer
    Member
    • Oct 2016
    • 60

    #2
    Hello,

    Originally posted by sadiexiaoyu View Post
    File "try", line 7, in <module>
    out.write(id,a,"fasta")
    TypeError: function takes exactly 1 argument (3 given)
    write() expected only one string as parameter. So if you like to write these 3 arguments seperated with comma to the file you can do something like this:

    Code:
    from Bio import SeqIO
    
    out = open("try_out.fasta", "w")
    for seq_record in SeqIO.parse("try.fasta", "fasta"):
        a = seq_record.seq
        a = a[5:-6]
        id = seq_record.id
        out.write(id+","+a+","+"fasta"+"\n")
    out.close()
    The "\n" at the end is neccessary for linebreak, otherwise you would have all entrys in one line.

    fin swimmer

    Comment

    • wdecoster
      Member
      • Oct 2015
      • 97

      #3
      Now you are writing here a literal "fasta" string on the end of every line. I doubt whether that's what you have in mind. What about this?


      Code:
      from Bio import SeqIO
      
      out = open("try_out.fasta", "a")
      for seq_record in SeqIO.parse("try.fasta", "fasta"):
          out.write(seq_record[5:-6].format("fasta"))
      out.close()
      Note that I changed the "w" in open() to "a" (for append) because you don't want to overwrite the previous record every time again in the loop, right?

      Comment

      • sadiexiaoyu
        Member
        • Apr 2013
        • 57

        #4
        hey, there

        Hello,

        thanks a lot for the reply!

        I do it like this now, and it works!

        from Bio import SeqIO
        out = open('out.fa','w')
        for seq_record in SeqIO.parse('original.fa','fasta'):
        id = seq_record.id
        seq= str(seq_record.seq)[0:-1]
        out.write('>'+id+"\n"+seq+'\n')
        out.close()

        I think the problem is that the seq have to be string instead of characters.
        Thanks for the help anyway!

        Cheers,

        Sadiexiaoyu

        Comment

        • wdecoster
          Member
          • Oct 2015
          • 97

          #5
          That's not how you should write fasta output...

          Comment

          Latest Articles

          Collapse

          ad_right_rmr

          Collapse

          News

          Collapse

          Topics Statistics Last Post
          Started by SEQadmin2, 06-09-2026, 11:58 AM
          0 responses
          25 views
          0 reactions
          Last Post SEQadmin2  
          Started by SEQadmin2, 06-05-2026, 10:09 AM
          0 responses
          33 views
          0 reactions
          Last Post SEQadmin2  
          Started by SEQadmin2, 06-04-2026, 08:59 AM
          0 responses
          39 views
          0 reactions
          Last Post SEQadmin2  
          Started by SEQadmin2, 06-02-2026, 12:03 PM
          0 responses
          62 views
          0 reactions
          Last Post SEQadmin2  
          Working...