Кусок рабочего файла:
Код: Выделить всё
402 DC B 44 TYR A 14.78
402 DC B 297 GLN A 2.71
402 DC B 433 DG C 27.07
402 DC B 432 DG C 2.29
403 DC B 296 SER A 22.37
403 DC B 294 SER A 11.90
403 DC B 297 GLN A 16.23
403 DC B 433 DG C 11.81
403 DC B 432 DG C 26.74
403 DC B 431 DT C 2.74
404 DA B 296 SER A 24.73
404 DA B 432 DG C 18.04
404 DA B 430 DA C 10.79
404 DA B 431 DT C 23.49
405 DT B 258 ILE A 20.09
405 DT B 257 GLY A 14.46
405 DT B 430 DA C 17.97
405 DT B 431 DT C 0.86
405 DT B 255 GLY A 6.52
405 DT B 256 GLY A 5.46
405 DT B 429 DC C 2.33
405 DT B 254 TYR A 0.01
405 DT B 260 ALA A 5.57
405 DT B 261 LYS A 8.84
406 DG B 209 ARG A 18.35
406 DG B 258 ILE A 4.62
406 DG B 239 GLU A 4.29
Запощу-таки весь родительский скрипт:
Код: Выделить всё
if ! test -e test #создаём папку test, если она не существует
then mkdir test
fi
for i in `ls conservation`; do #прогоняем по всем папкам, имеющимся в conservation/
list=`ls -F conservation/$i | grep / | sed 's/\///'` #создаём список list по всем определённым файлам, имеющимся в каждой подпапке conservation/$i/
if ! test -e test/$i # создаём папку test/$i, если она не существует
then mkdir test/$i
fi
echo $i > test/$i/info.txt
echo chains: $list >> test/$i/info.txt
protein= #зануляем в начале цикла
for j in $list
do
if test -e conservation/$i/$j/consurf.grades #смысл if: если внутри conservation/$i/$j/ есть consurf.grades -
then #то добавляем имя подпапки $j к концу $protein
protein=$protein$j #можно было сделать через массив, но через index () показалось удобнее
fi
done
echo protein chains: $protein >> test/$i/info.txt
gawk '{
if ( index ('$protein', $3) && ! index ('$protein', $6)) {print $1, $2, $3, $4, $5, $6, $7, `test3.sh $i $j $3`}
if (! index ('$protein', $3) && index ('$protein', $6)) {print $4, $5, $6, $1, $2, $3, $7, `test3.sh $i $j $5`}
}' residue/$i | sort -n | uniq > test/$i/contacts.txt
#смысл: работаем с полями 3 и 6. $protein приобретает перед началом вызова awk значение типа ABD, т.е. некоторое кол-ва лат. заглавных букв.
#Если $3 содержится в $protein, а $6 нет - то выводим строчку как есть (про $0 я в курсе)
#Если $3 не содержится в $protein, а $6 да - то выводим строчку, меняя местами первую и сторую половину
#В конце строки надо приписать рез-т вып. test3.sh, но gawk ругается, что test3 ничего не воводит, т.е. $i и проч. в него не передаются.
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> test/$i/info.txt
done
test3.sh
Код: Выделить всё
awk '
NR=='$3'+15 { print $1, $2, $4, $5 }
' conservation/$1/$2/consurf.grades
кусок consurf.grades:
Код: Выделить всё
6 A ALA106:A 1.424 1 0.994, 2.317 1,1 301/301 F,S,T,N,K,E,V,Q,M,L,A,P,H,D,R,I,G
7 C CYS107:A -1.026 9 -1.035,-1.035 9,9 301/301 C
8 P PRO108:A -0.273 6 -0.684,-0.036 8,5 9/301 H,P
9 V VAL109:A 0.364 3* -0.216, 0.994 6,1 9/301 A,I,V
10 E GLU110:A 2.227 1 2.317, 2.317 1,1 301/301 S,T,N,K,E,V,Q,M,C,L,A,P,H,D,R,I,G
11 S SER111:A 0.463 3 0.504, 0.504 3,3 301/301 A,S,T,N,K,Y,E,V,H,Q,D,I,G,L
12 C CYS112:A -1.026 9 -1.035,-1.035 9,9 301/301 C
13 D ASP113:A -0.312 6 -0.363,-0.216 7,6 301/301 A,S,T,W,N,K,E,H,M,D,R,G