EMBOSS Needle: Read sequences from stdin
3
1
Entering edit mode
7.4 years ago
pld 5.0k

Is it possible to pass sequences through needle via stdin? I have a great deal of all to all runs to make and I don't want to generate an enormous number of files, or make temporary files.

I've tried cat seq1.fasta seq2.fasta | needle -filter... but it throws errors.

unix linux emboss stdin needle • 3.8k views
0
Entering edit mode

2
Entering edit mode
7.4 years ago

Perhaps look into using mkfifo to set up named pipes to stream data to placeholder files, which can be used with some tools that do not read streams: http://en.wikipedia.org/wiki/Named_pipe

2
Entering edit mode
7.4 years ago
brentp 23k
needle -filter <(echo -e ">a\nCAAAAAAAAATTAAAAAAAAAAAAAACCCCCCCTTCCA") \
<(echo -e ">a\nCAAAAGGAAAAATTAAAAAAAAAAAAAACCCCCCCTTCCA")

0
Entering edit mode
7.4 years ago

needle takes two files as input. First file contains sequence to be aligned to the sequence or sequences in the second file. The first file can contain only one sequence and the second file can contain multiple sequences and needle will align the sequence from the first file to every sequence in the second file. Now coming to your question:

"filter" option only lets you to give the first sequence as a standard input. Here you are giving both the sequences as a standard input and as a result needle is not being able to detect the second input.

You can try:

needle "cat seq1.fasta |" "cat seq.2fasta |"

0
Entering edit mode

I just checked the command and its working but you will have to use -auto in the command line to turn off the prompts. For e.g. needle -auto "cat seq1.fasta |" "cat seq.2fasta |"