Bioinformatics/Global alignment: Difference between revisions

Content added Content deleted
Line 320: Line 320:
end);
end);


# Given an array of strings, attempt to find a superstring composed
# Given an array of deduplicated strings, attempt to find a superstring
# of these strings in the same order;
# composed of these strings in the same order;
# return it if found, else null.
# return it if found, else null.
def relevant($min):
def relevant($min):
. as $in
. as $in
| reduce range(0; length-1) as $i (.[0];
| length as $length
if .
| {s: .[0], i:0}
| until (.s == null or .i >= $length - 1;
then overlap_info(.; $in[$i+1]; $min) as $overlap
.i as $i
| if $overlap then (. + $in[$i+1][$overlap.overlap|length:])
# Since the strings have been deduplicated we can use $in[$i]:
else null
| overlap_info($in[$i]; $in[$i+1]; $min) as $overlap
| if $overlap then .s += $in[$i+1][$overlap.overlap|length:]
else .s = null
end
end
else . end) ;
| .i += 1 )
| .s ;
# Input: an array of strings
# Input: an array of strings
Line 346: Line 350:
'''The specific tasks'''
'''The specific tasks'''
<lang jq>
<lang jq>
def task1:
def examples:
[
["TA", "AAG", "TA", "GAA", "TA"];
["TA", "AAG", "TA", "GAA", "TA"],


["CATTAGGG", "ATTAG", "GGG", "TA"],
def task2:
["CATTAGGG", "ATTAG", "GGG", "TA"];


["AAGAUGGA", "GGAGCGCAUC", "AUCGCAAUAAGGA"],
def task3:
["AAGAUGGA", "GGAGCGCAUC", "AUCGCAAUAAGGA"];


def task4:
["ATGAAATGGATGTTCTGAGTTGGTCAGTCCCAATGTGCGGGGTTTCTTTTAGTACGTCGGGAGTGGTATTAT",
["ATGAAATGGATGTTCTGAGTTGGTCAGTCCCAATGTGCGGGGTTTCTTTTAGTACGTCGGGAGTGGTATTAT",
"GGTCGATTCTGAGGACAAAGGTCAAGATGGAGCGCATCGAACGCAATAAGGATCATTTGATGGGACGTTTCGTCGACAAAGT",
"GGTCGATTCTGAGGACAAAGGTCAAGATGGAGCGCATCGAACGCAATAAGGATCATTTGATGGGACGTTTCGTCGACAAAGT",
Line 368: Line 370:
"TTTCCAATTATGTAAGCGTTCCGAGACGGGGTGGTCGATTCTGAGGACAAAGGTCAAGATGGAGCGCATC",
"TTTCCAATTATGTAAGCGTTCCGAGACGGGGTGGTCGATTCTGAGGACAAAGGTCAAGATGGAGCGCATC",
"CTATGTTCTTATGAAATGGATGTTCTGAGTTGGTCAGTCCCAATGTGCGGGGTTTCTTTTAGTACGTCGGGAGTGGTATTATA",
"CTATGTTCTTATGAAATGGATGTTCTGAGTTGGTCAGTCCCAATGTGCGGGGTTTCTTTTAGTACGTCGGGAGTGGTATTATA",
"TCTCTTAAACTCCTGCTAAATGCTCGTGCTTTCCAATTATGTAAGCGTTCCGAGACGGGGTGGTCGATTCTGAGGACAAAGGTCAAGA"];
"TCTCTTAAACTCCTGCTAAATGCTCGTGCTTTCCAATTATGTAAGCGTTCCGAGACGGGGTGGTCGATTCTGAGGACAAAGGTCAAGA"]
];


def tasks:
def tasks:
def t: shortest_common_superstring | synopsis;
def t: shortest_common_superstring | synopsis;

"Task 1:", (task1|t),
examples
"\nTask 2:", (task2|t),
| . as $examples
"\nTask 3:", (task3|t),
| range(0;length) as $i
"\nTask 4:", (task4|t);
| "Task \($i+1):", ($examples[$i]|t), "";


tasks</lang>
tasks</lang>