Render.ru

Picotechnology. Как ввести массив чисел из txt-файла?

Александр Кушелев 1

Пользователь сайта
Рейтинг
2
#1
Уважаемые коллеги! Помогите правильно ввести массив числе из файла.

Я пытаюсь ввести массив kk натуральных чисел с помощью такого фрагмента скрипта:

fs=openFile ”Composite9\lysozyme_code9.txt”
kk = #()
for jj = 1 to 839 do
(kk[jj] = readValue fs)
close fs

Однако мне нужно будет вводить массив произвольной длины, узнавать имя файла и потом выводить результаты (координаты атомов) в виде стандартного файла PDB. Есть скрипт, которые делает такой вывод, но мне нужно сделать вывод из другого скрипта, а для этого нужно правильно скопировать все нужные строки, относящиеся к выводу из этого файла: http://nanoworld.narod.ru/EMBLReader023L_20101113.txt

Готов материально компенсировать Вашу помощь...
 
Рейтинг
229
#2
Уважаемые коллеги! Помогите правильно ввести массив числе из файла.

Я пытаюсь ввести массив kk натуральных чисел с помощью такого фрагмента скрипта:

Готов материально компенсировать Вашу помощь...
Пока не очень понятна задача. Могу написать скрипт по вашему ТЗ.

Для контактов: telegram: RGhost77
contact@veda3d.com
 

Александр Кушелев 1

Пользователь сайта
Рейтинг
2
#3
Благодарю! Сейчас напишу по почте. Моя почта kushelev20120@yandex.ru

Здесь я тоже продублирую, т.к. кому-то может пригодиться тот скрипт, что уже есть.

Этот скрипт рабочий:

newmat = multimaterial name:"MyMultiMat" numsubs: (999)
newmat[1].faceted = on
newmat[2].faceted = on
newmat[3].faceted = on
newmat[4].faceted = on
newmat[5].faceted = on
newmat[6].faceted = on
newmat[7].faceted = on
newmat[8].faceted = on
newmat[9].faceted = on
newmat[1].diffuse = (color 255 0 0)
newmat[2].diffuse = (color 0 255 0)
newmat[3].diffuse = (color 0 0 255)
newmat[4].diffuse = (color 180 100 0)
newmat[5].diffuse = (color 255 0 0)
newmat[6].diffuse = (color 255 0 255)
newmat[7].diffuse = (color 0 0 255)
newmat[8].diffuse = (color 0 255 0)
newmat[9].diffuse = (color 255 255 0)
angx=#(-10,0,0,-10,-10,-1,0,0,-10); angy=#(30,120,30,30,30,50,30,120,30); angz=#(-97,-120,60,-80,-97,-97,60,-120,-97)
dx=#(-1.5,-1,-1.6,-1.5,-1.5,-1.5,-1.6,-1,-1.5); dy=#(0,-0.5,-0.3,0,0,0,-0.3,-0.5,0); dz=#(-1.2,1,1.2,-1.2,-1.2,-1.2,1.2,1,-1.2)
kk=#(5,5,7,5,7,5,7,5,5,7,7,7,5,5,8,5,7,1,1,1,1,4,1,7,8,5,7,5,7,1,1,1,1,7,8,1,1,1,1,1,7,7,5,5,7,4,4,4,7,7,
5,5,7,5,8,7,5,5,7,1,6,1,1,7,7,5,7,1,4,4,1,1,1,7,1,1,1,1,1,7,7,5,7,5,5,5,7,5,7,8,7,5,7,5,5,5,8,5,5,5,
7,5,5,7,7,7,5,5,5,8,5,5,7,7,1,1,1,1,1,1,7,5,7,1,1,1,1,1,1,4,1,1,4,4,1,1,4,1,1,1,1,1,1,4,7,1,1,1,1,7,
5,8,5,5,8,5,5,7,5,5,7,5,5,5,7,5,5,7,4,1,1,1,1,7,7,4,1,4,1,7,5,5,5,8,7,1,4,1,1,7,5,7,5,5,5,8,1,1,1,1,
1,1,1,8,8,7,5,7,5,7,7,1,4,1,6,8,4,4,1,1,1,4,1,7,8,8,7,5,5,7,7,7,1,4,1,1,1,1,7,5,7,5,5,7,5,5,5,7,7,1,
4,1,4,1,4,7,4,1,1,1,1,4,1,7,4,1,1,4,4,1,1,1,1,1,7,8,5,5,7,8,5,7,4,4,1,1,4,4,4,1,1,7,4,4,4,8,7,5,8,7,
1,1,1,1,1,4,8,1,6,1,1,1,1,4,1,4,4,1,7,5,5,5,8,5,5,8,7,7,1,1,1,1,1,4,7,8,5,5,7,5,7,5,5,7,5,5,7,4,1,1,
1,1,7,1,1,1,1,1,1,7,8,1,1,4,1,4,1,1,1,1,7,7,5,5,7,4,1,4,1,1,1,7,7,1,4,1,1,7,5,5,7,5,5,7,8,4,4,1,4,1,
1,1,7,5,7,1,1,1,1,1,1,1,6,7,1,4,1,1,1,1,8,1,4,1,1,1,1,1,7,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,
4,7,7,5,7,5,7,5,7,1,1,1,9,7,5,5,7,5,5,7,5,5,7,5,7,5,7,8,4,4,4,7,5,2,2,2,1,1,1,1,1,8,5,5,5,7,1,4,1,1,
8,8,5,5,5,7,5,7,4,1,1,1,7,5,8,7,5,7,8,5,8,4,1,6,4,4,7,5,8,4,1,1,1,7,5,5,5,7,5,7,1,6,4,1,1,4,1,6,1,1,
1,1,6,1,1,1,1,8,8,1,1,1,6,1,1,7,7,5,5,7,1,1,6,1,1,7,5,5,7,5,7,1,1,1,1,1,4,1,1,7,8,7,5,8,5,8,5,8,5,5,
5,7,5,5,7,5,8,5,7,5,5,5,8,8,5,5,7,5,8,7,5,5,5,8,7,5,7,1,1,1,4,7,5,8,7,4,1,4,1,1,1,1,1,1,6,7,1,4,1,1,
1,1,1,7,5,5,5,7,1,1,1,1,4,7,5,5,7,5,7,1,1,1,1,1,4,1,1,6,1,7,7,1,6,1,1,7,5,5,5,7,8,7,1,1,1,1,1,1,1,4,
1,8,1,1,1,1,4,7,8,5,5,7,1,4,1,1,6,1,1,1,1,1,1,1,1,4,4,1,4,4,1,4,4,1,1,1,7,1,1,4,1,1,1,1,4,7,1,4,1,1,
7,1,1,1,1,1,4,1,1,1,1,1,1,8,5,5,7,1,1,1,1,1,1,4,1,1,1,4,4,8,5,8,7,8,5,7,1,1,1,1,7,5,5,7,5,7,5,5,5,8,
5,7,8,7,5,7,1,1,1,9,7,7,7,1,4,1,1,7,5,8,5,7,5,8,5,7,7,1,1,1,1,7,5,5,5,8,5,5,7)
--
pro=#(0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0)
angp=#()
angp[14]=0
angp[15]=0
angp[24]=0
angp[25]=0
angp[29]=0
angp[33]=0
angp[34]=0
angp[35]=0
angp[64]=0
angp[74]=0
angp[91]=0
angp[109]=0
angp[110]=0
angp[152]=0
angp[244]=0
angp[275]=0
angp[322]=0
angp[337]=0
angp[361]=0
angp[457]=0
angp[463]=0
angp[502]=0
angp[609]=0
angp[613]=0
angp[614]=0
angp[624]=0
angp[764]=0
angp[795]=0
angp[810]=0
angp[824]=0
angp[836]=0
peptide=box length:0.1 width:0.1 height:0.1 position:[0,0,-.5] wirecolor:[250,250,250]; Converttomesh peptide
peptide.material = newmat[1]
for k = 1 to 839 do(
newmat[k].faceted = on
element = sphere radius:0.7 pos:[0,0,0]; Converttomesh element
element.material = newmat[kk[k]]
attach peptide element; peptide.pivot = [0,0,0]; move peptide [dx[kk[k]],dy[kk[k]],dz[kk[k]]]
rotate peptide angx[kk[k]] [1,0,0]; rotate peptide angy[kk[k]] [0,1,0]; rotate peptide angz[kk[k]] [0,0,1])

***
На первом этапе нужно читать массив kk из файла с неизвестным названием, который находится в подкаталоге Composite9 и имеет расширение txt.

После того, как эта модификация получится, можно будет продолжить совершенствование скрипта. В частности, нужно будет за менить box на 4 объекта, как в этом скрипте:

-- spheres
-- C-alpha
mp4 = sphere radius:0.3 position:[0,2.41,-3.82] wirecolor:[0,0,0]
c8 = Cylinder heightsegs:5 capsegs:1 sides:18 height:3 radius:0.1 position:[0,2.41,-3.82] wirecolor:[255,255,255]
rotate c8 118.7 [1,0,0]
rotate c8 68 [0,0,1]
-- OH-group
mp5 = sphere radius:0.3 position:[0,0,-1.41] wirecolor:[255,0,0]
c5 = Cylinder heightsegs:5 capsegs:1 sides:18 height:3 radius:0.1 position:[0,0,-1.41] wirecolor:[255,255,255]
rotate c5 -80 [1,0,0]
-- c9 = Cylinder heightsegs:5 capsegs:1 sides:18 height:3 radius:0.1 position:[0,0,-1.41] wirecolor:[255,255,255]
-- mp10 = sphere radius:0.3 position:[0,0,1.41] wirecolor:[0,0,0]
--
-- CO-group
mp6 = sphere radius:0.3 position:[0,2.9,-0.9] wirecolor:[0,0,0]
mp7 = sphere radius:0.3 position:[0,4.3,0.5] wirecolor:[255,0,0]
c6 = Cylinder heightsegs:5 capsegs:1 sides:18 height:2 radius:0.1 position:[0,2.9,-0.9] wirecolor:[255,255,255]
rotate c6 -45 [1,0,0]
c7 = Cylinder heightsegs:5 capsegs:1 sides:18 height:3 radius:0.1 position:[0,2.9,-0.9] wirecolor:[255,255,255]
rotate c7 170 [1,0,0]
--
-- NH-group
mp8 = sphere radius:0.3 position:[2.3,1.5,-5.2] wirecolor:[0,0,255]

***
Если вторая модификация тоже пройдёт успешно, тогда нужно будет сделать вывод координат в стандарте PDB, как это сделано в скрипте: http://nanoworld.narod.ru/EMBLReader023L_20101113.txt

***

Учитывая, что научная работа имеет только начало, понадобится ещё много модификаций скрипта, каждая из которых будет компенсироваться материально.
 

Александр Кушелев 1

Пользователь сайта
Рейтинг
2
#4
Пример файла txt, из которого нужно прочесть массив kk:

5,5,7,5,7,5,7,5,5,7,7,7,5,95,98,5,7,1,1,1,1,4,1,97,98,5,7,5,97,1,1,1,9,97,98,1,1,1,1,1,7,7,5,5,7,4,4,4,7,7,
5,5,7,5,8,7,5,5,7,1,6,1,1,97,7,5,7,1,4,4,1,1,1,97,1,1,1,1,1,7,7,5,7,5,5,5,7,5,7,8,97,5,7,5,5,5,8,5,5,5,
7,5,5,7,7,7,5,5,95,98,5,5,7,7,1,1,1,1,1,1,7,5,7,1,1,1,1,1,1,4,1,1,4,4,1,1,4,1,1,1,1,1,1,4,7,1,1,1,1,7,
5,98,5,5,8,5,5,7,5,5,7,5,5,5,7,5,5,7,4,1,1,1,1,7,7,4,1,4,1,7,5,5,5,8,7,1,4,1,1,7,5,7,5,5,5,8,1,1,1,1,
1,1,1,8,8,7,5,7,5,7,7,1,4,1,1,8,4,4,1,1,1,4,1,7,8,8,7,5,5,7,7,7,1,4,1,1,1,1,7,5,7,5,5,97,5,5,5,7,7,1,
4,1,4,1,4,7,4,1,1,1,1,4,1,7,4,1,1,4,4,1,1,1,1,1,97,8,5,5,7,8,5,7,4,4,1,1,4,4,4,1,1,7,4,4,4,8,7,5,8,7,
1,1,1,1,1,4,8,1,6,1,1,1,1,4,1,4,4,1,7,5,5,95,8,5,5,8,7,7,1,1,1,1,1,4,7,8,95,5,7,5,7,5,5,7,5,5,7,4,1,1,
1,1,7,1,1,1,1,1,1,7,98,1,1,4,1,4,1,1,1,1,7,7,5,5,7,4,1,4,1,1,1,7,7,1,4,1,1,7,5,5,7,5,5,7,8,4,4,1,4,1,
1,1,7,5,7,1,1,1,1,1,1,1,1,7,1,4,1,1,1,1,8,1,4,1,1,1,1,1,7,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,6,1,1,1,1,
4,7,7,5,7,5,97,5,7,1,1,1,9,7,5,5,7,5,5,7,5,5,7,5,7,5,7,8,4,4,4,7,5,2,2,2,1,1,1,1,1,8,5,5,5,7,1,4,1,1,
8,98,5,5,5,7,5,7,4,1,1,1,7,5,8,7,5,7,8,5,8,4,1,6,4,4,7,5,8,4,1,1,1,7,5,5,5,7,5,7,1,6,4,1,1,4,1,6,1,1,
1,1,6,1,1,1,1,8,8,1,1,1,6,1,1,7,7,5,5,7,1,1,6,1,1,7,5,5,7,5,7,6,1,1,1,1,4,1,1,7,8,7,5,8,5,8,5,8,5,5,
5,7,5,5,7,5,8,5,97,5,5,5,98,98,5,5,7,5,8,7,5,5,5,98,7,5,7,1,1,1,4,7,5,8,7,4,1,4,1,1,1,1,1,1,1,7,1,4,1,1,
1,1,1,7,5,5,5,7,1,1,1,1,4,7,5,5,7,5,7,1,1,1,1,1,4,1,1,6,1,7,7,1,6,1,1,7,5,5,5,7,8,7,1,1,1,1,1,1,1,4,
1,8,1,1,1,1,4,7,8,5,5,7,1,4,1,1,6,1,1,1,1,1,1,1,1,4,4,1,4,4,1,4,4,1,1,1,7,1,1,4,1,1,1,1,4,7,1,4,1,1,
7,1,1,1,1,1,4,1,1,1,1,1,1,98,5,5,7,1,1,1,1,1,1,4,1,1,1,4,4,8,5,8,7,8,5,7,1,1,1,1,7,5,5,7,95,7,5,5,5,8,
5,7,8,7,5,7,1,1,1,9,7,7,7,1,4,1,1,7,5,8,5,7,5,98,5,7,7,1,1,1,1,7,5,5,5,98,5,5,7,0,

***
Ещё нужно определить количество чисел в файле и подставить это число в цикл.
 
Сверху