Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unexpected problem in simulation, output file does not exist #3

Open
siatjiasen opened this issue Oct 21, 2015 · 8 comments
Open

Unexpected problem in simulation, output file does not exist #3

siatjiasen opened this issue Oct 21, 2015 · 8 comments

Comments

@siatjiasen
Copy link

Hi,

I successfully installed Qt5.5 and sequencetree4_master on Ubuntu 14.04 LTS. No compilation error.

Then I run ./st4, then GUI was displayed. I started compiling SPGR.sts squence. I got the following output:
simulating...
Duration=0 seconds; 0 blocks; Rel.SAR=0
Simulation finished...
Unexpected problem in simulation, output file does not exist.

In the terminal running ./st4, I got:

Running: "/home/jiasen/sequencetree4/bin/simulator_executable2.exe" ("stat", "/home/jiasen/sequencetree4/bin/../tmp/sequence_parameters_in.txt", "/home/jiasen/sequencetree4/bin/../tmp/sequence_parameters_out.txt", "/home/jiasen/sequencetree4/bin/../tmp/simulation_output.dat", "/home/jiasen/sequencetree4/bin/../tmp/results_output_stat.txt", "-1", "-1")

There is simulator_executable2.exe, but no /tmp folder contains the txt files and dat file.

Is this error induced by my wrong installation of sequencetree4 and Qt4 , or the sequence parameters were not set correctly, or something else?

Thank you for help.
Best wishes,
Jia Sen

@magland
Copy link
Owner

magland commented Oct 21, 2015

Does the tmp folder exist? If not, try creating it manually. Otherwise I can try to reproduce on my ubuntu

@siatjiasen
Copy link
Author

Thank you very much for help.
The tmp folder didn't exist.
I created it manually, then compile SPGR.sts sequence, still:
Simulation finished...Unexpected problem in simulation, output file does not exist.
I attached the full log file recording the output of building and running ./st4.
Thank you again.Best wishes,Jia Sen

Date: Wed, 21 Oct 2015 05:54:39 -0700
From: [email protected]
To: [email protected]
CC: [email protected]
Subject: Re: [sequencetree4] Unexpected problem in simulation, output file does not exist (#3)

Does the tmp folder exist? If not, try creating it manually. Otherwise I can try to reproduce on my ubuntu


Reply to this email directly or view it on GitHub.

@siatjiasen
Copy link
Author

Thank you very much for help.

The tmp folder didn't exist.

I created it manually, then compile SPGR.sts sequence, still:

Simulation finished...
Unexpected problem in simulation, output file does not exist.

I attached the full log file recording the output of building and running ./st4.

Thank you again.
Best wishes,
Jia Sen

@licheng2002
Copy link
Collaborator

Did you attach the log file? Try to take a look at the simulator folder,
and delete the temporary object file, i.e. the file with extension ".o".
Then compile the sequence again.

On Wed, Oct 21, 2015 at 10:41 AM, siatjiasen [email protected]
wrote:

Thank you very much for help.

The tmp folder didn't exist.

I created it manually, then compile SPGR.sts sequence, still:

Simulation finished...
Unexpected problem in simulation, output file does not exist.

I attached the full log file recording the output of building and running
./st4.

Thank you again.
Best wishes,
Jia Sen


Reply to this email directly or view it on GitHub
#3 (comment)
.

Regards!

Cheng Li
Email: [email protected]

@siatjiasen
Copy link
Author

Thank you for help.

I did as you said. But I still got: Unexpected problem in simulation,
output files does not exist.

@licheng2002
Copy link
Collaborator

Hi,
I just tried a fresh compilation, it seems working fine on my PC,
Ubuntu 14.04, qmake v3.0 using Qt v5.2.1

Following the steps:

  1. git clone https://github.com/magland/sequencetree4.git

  2. cd sequence4/src

  3. qmake

  4. make

  5. cd ../

  6. mkdir tmp

  7. cd bin

  8. ./st4

    Could you please try again from a fresh download? Thanks!
    Cheng

On Thu, Oct 22, 2015 at 8:03 PM, siatjiasen [email protected]
wrote:

Thank you for help.

I did as you said. But I still got: Unexpected problem in simulation,
output files does not exist.

The log file was:

jiasen@jiasen:$ cd sequencetree4/
jiasen@jiasen:
/sequencetree4$ cd simulator/
jiasen@jiasen:/sequencetree4/simulator$ cd build
jiasen@jiasen:
/sequencetree4/simulator/build$ ls
createsequence.o foundationclasses.o main.o stsimscannerblocklist.o
customclasses.o loadparametersfile.o st4.o stsimscanner.o
jiasen@jiasen:/sequencetree4/simulator/build$ sudo rm *.o
[sudo] password for jiasen:
jiasen@jiasen:
/sequencetree4/simulator/build$ ls
jiasen@jiasen:/sequencetree4/simulator/build$ cd ..
jiasen@jiasen:
/sequencetree4/simulator$ cd ..
jiasen@jiasen:/sequencetree4$ ls
bin doc License.txt Resource_JS simulator stversion.txt
code examples README.txt sequences src templates
jiasen@jiasen:
/sequencetree4$ cd bin
jiasen@jiasen:/sequencetree4/bin$ ls
results_viewer simulator_executable1.exe st4 tmp
simulator simulator_executable2.exe st4controller VS
jiasen@jiasen:
/sequencetree4/bin$ cd ..
jiasen@jiasen:/sequencetree4$ sudo rm bin -r
jiasen@jiasen:
/sequencetree4$ ls
code examples README.txt sequences src templates
doc License.txt Resource_JS simulator stversion.txt
jiasen@jiasen:/sequencetree4$ cd src
jiasen@jiasen:
/sequencetree4/src$ ls
gui Makefile results_viewer st4controller todo.txt
install.x meta shared st4.pro VS
jiasen@jiasen:/sequencetree4/src$ make
cd gui/ && make -f Makefile
make[1]: Entering directory /home/jiasen/sequencetree4/src/gui' g++ -Wl,-O1 -Wl,-rpath,/opt/Qt/5.5/gcc_64 -Wl,-rpath,/opt/Qt/5.5/gcc_64/lib -o ../../bin/st4 build/main.o build/sstring.o build/slist.o build/stresources.o build/stsimscannerblocklist.o build/sttreeview.o build/stnodeview.o build/stparametertree.o build/stmainwindow.o build/stsequenceview.o build/stringchooserdlg.o build/stsimview.o build/stsimblockview.o build/steventlist.o build/stcompilelog.o build/stclassview.o build/stglobalview.o build/stpastedialog.o build/stconfigurationdlg.o build/openfilefromwebdlg.o build/readrawdatadlg.o build/distribute_raw_data.o build/staboutbox.o build/editresourcedlg.o build/streconstructionhighlighter.o build/stmetaclass.o build/stmetanode.o build/stmetasequence.o build/stmetasequencesimulator.o build/stsourceeditor.o build/cpphighlighter.o build/haiqtextedit.o build/defaulteditorwindow.o build/haiqtexteditgroup.o build/haiqmarker.o build/exporttoscannerdlg.o build/mda.o build/complex.o build/stpreferencesdlg.o build/qrc_st4.o build/moc_sttreeview.o build/moc_stnodeview.o build/moc_stparametertree.o build/moc_stmainwindow.o build/moc_stsequenceview.o build/moc_stringchooserdlg.o build/moc_stsimview.o build/moc_stsimblockview.o build/moc_steventlist.o build/moc_stcompilelog.o build/moc_stclassview.o build/moc_stglobalview.o build/moc_openfilefromwebdlg.o build/moc_readrawdatadlg.o build/moc_staboutbox.o build/moc_stmetasequencesimulator.o build/moc_stsourceeditor.o build/moc_haiqtextedit.o build/moc_defaulteditorwindow.o build/moc_haiqtexteditgroup.o -L/opt/Qt/5.5/gcc_64/lib -lQt5Widgets -L/usr/lib64 -lQt5Gui -lQt5Network -lQt5Core -lGL -lpthread make[1]: Leaving directory/home/jiasen/sequencetree4/src/gui'
cd VS/ && make -f Makefile
make[1]: Entering directory /home/jiasen/sequencetree4/src/VS' g++ -Wl,-O1 -Wl,-rpath,/opt/Qt/5.5/gcc_64 -Wl,-rpath,/opt/Qt/5.5/gcc_64/lib -o ../../bin/VS build/vsmain.o build/vsmainwindow.o build/vssequenceview.o build/vsphantomview.o build/vspropertyeditor.o build/run_virtual_scan.o build/vsabstractscanner.o build/vsobjectstate.o build/vsobjecttransformation.o build/vsphantom.o build/vsktermlist.o build/vsktermscanner.o build/stsimscannerblocklist.o build/stmetasequencesimulator.o build/stmetasequence.o build/stmetanode.o build/stmetaclass.o build/slist.o build/sstring.o build/stresources.o build/mda.o build/complex.o build/distribute_raw_data.o build/stringchooserdlg.o build/stconfigurationdlg.o build/stglobalview.o build/stcompilelog.o build/basicphantoms.o build/kspacefunction.o build/basickspacefunctions.o build/vsbasicphantoms.o build/vsphantomplugin.o build/qrc_st4.o build/moc_vsmainwindow.o build/moc_vssequenceview.o build/moc_vsphantomview.o build/moc_vspropertyeditor.o build/moc_vsabstractscanner.o build/moc_vsphantom.o build/moc_vsktermlist.o build/moc_stmetasequencesimulator.o build/moc_stringchooserdlg.o build/moc_stglobalview.o build/moc_stcompilelog.o build/moc_basicphantoms.o build/moc_basickspacefunctions.o build/moc_vsbasicphantoms.o -L../../bin -lgsl -lgslcblas -L/opt/Qt/5.5/gcc_64/lib -lQt5Widgets -L/usr/lib64 -lQt5Gui -lQt5Core -lGL -lpthread make[1]: Leaving directory/home/jiasen/sequencetree4/src/VS'
cd results_viewer/ && make -f Makefile
make[1]: Entering directory /home/jiasen/sequencetree4/src/results_viewer' g++ -Wl,-O1 -Wl,-rpath,/opt/Qt/5.5/gcc_64 -Wl,-rpath,/opt/Qt/5.5/gcc_64/lib -o ../../bin/results_viewer build/rvmain.o build/rvmainwindow.o build/rvfileview.o build/mda.o build/complex.o build/viewmdamodel.o build/viewmdawidget2d.o build/viewmdawidget1d.o build/viewmdawidget.o build/brightnesstool.o build/fftw_library.o build/apply_fft.o build/export_to_imagej.o build/qrc_st4.o build/moc_rvmainwindow.o build/moc_rvfileview.o build/moc_viewmdamodel.o build/moc_viewmdawidget2d.o build/moc_viewmdawidget1d.o build/moc_viewmdawidget.o build/moc_brightnesstool.o -L../../bin -lfftw3 -L/opt/Qt/5.5/gcc_64/lib -lQt5Widgets -L/usr/lib64 -lQt5Gui -lQt5Core -lGL -lpthread make[1]: Leaving directory/home/jiasen/sequencetree4/src/results_viewer'
cd st4controller/ && make -f Makefile
make[1]: Entering directory /home/jiasen/sequencetree4/src/st4controller' g++ -Wl,-O1 -Wl,-rpath,/opt/Qt/5.5/gcc_64 -Wl,-rpath,/opt/Qt/5.5/gcc_64/lib -o ../../bin/st4controller build/st4controllermain.o build/stcontrollermainwindow.o build/stcontrollerconfigdlg.o build/stcontroller.o build/rawdatafiletree.o build/sequencestree.o build/mda.o build/distribute_raw_data.o build/qrc_st4.o build/moc_stcontrollermainwindow.o build/moc_stcontroller.o -L/opt/Qt/5.5/gcc_64/lib -lQt5Widgets -L/usr/lib64 -lQt5Gui -lQt5Core -lGL -lpthread make[1]: Leaving directory/home/jiasen/sequencetree4/src/st4controller'
jiasen@jiasen:
/sequencetree4/src$ ls
gui Makefile results_viewer st4controller todo.txt
install.x meta shared st4.pro VS
jiasen@jiasen:/sequencetree4/src$ cd ..
jiasen@jiasen:
/sequencetree4$ ls
bin doc License.txt Resource_JS simulator stversion.txt
code examples README.txt sequences src templates
jiasen@jiasen:/sequencetree4$ cd bin
jiasen@jiasen:
/sequencetree4/bin$ ls
results_viewer st4 st4controller VS
jiasen@jiasen:~/sequencetree4/bin$ ./st4
libpng warning: iCCP: known incorrect sRGB profile
loadFromText
("++++++ HEADER ++++++", "STVERSION=4.1.14", "++++++ END HEADER ++++++",
"++++++ NOTES ++++++", "=== spgr.sts - Spoiled gradient echo ===", "",
"Global Parameters", " FOV [mm] - field of view", " readout_N - number of
points per readout", " PE1 - first phase encode iterator", " PE2 - second
phase encode iterator", " TE [us] - echo time", " TR [us] - repetition
time", " dwell_time [us] - readout dwell time", " RF_spoiling [0 or 1] -
turn on or off RF-spoiling (randomization of transmit/receive phase)", "
flip_angle [degrees] - flip angle", " slice_thickness [mm] - slice
thickness", " slice_gradient_amplitude [uT/mm] - amplitude of slice select
gradient", " spoiler_moment [uT/mm-us] - 3D moment of spoiler gradient at
end of each repetition", " prep_PE1 - iterator for preparation
repetetitions", "", "", "To perform 3D phase encoding", " For example, set
PE2 = -4:1:3, for 8 phase encodes", " To interchange the looping order, go
to the source code for the loop node and simply switch the order of PE1 and
PE2 iterators", "", "To switch to a non-selective pulse", " 1. set
slice_thickness=0", " 2. set slice_gradient_amplitude=(0,0,0)", " 3. If
you want a rectangular shape pulse, right click on the "RF" node and
select "promote node", then select STRF", "", "== Siemens User Interface
Directives =====",

"UIDOUBLE\tNAME=TE\t\tRANGE=1:1:100\tLABEL="TE"\t\tUNITS="ms"\tFACTOR=0.001",

"UIDOUBLE\tNAME=TR\t\tRANGE=10:10:3000\tLABEL="TR"\t\tUNITS="ms"\tFACTOR=0.001",
"UIDOUBLE\tNAME=flip_angle\tRANGE=0:5:180\tLABEL="Flip
angle"\tUNITS="deg"",
"UIDOUBLE\tNAME=slice_thickness\tRANGE=2:2:50\t\tLABEL="Slice
thickness"\tUNITS="mm"", "UICHECKBOX\tNAME=RF_spoiling\tLABEL="RF
Spoiling"", "============================", "", "++++++ END NOTES ++++++",
"++++++ GLOBAL ++++++", "FOV\t(256,256,50)\tmm", "readout_N\t256\t",
"PE1\t-128:1:127\t", "PE2\t0:1:0\t", "TE\t6000\tmicrosec",
"TR\t50000\tmicrosec", "dwell_time\t30\tmicrosec", "RF_spoiling\t1\t0 or
1", "flip_angle\t45\tdegrees", "slice_thickness\t10\tmm",
"slice_gradient_amplitude\t(0,0,10)\tuT/mm",
"spoiler_moment\t(0,0,100000)\tuT/mm-us", "prep_PE1\t1:1:10\t",
"FOV\t->\tRoot->FOV",
"readout_N\t->\tRoot->MainLoop->Block->Acquire->Readout->N",
"readout_N\t->\tRoot->PrepLoop->Block->Acquire->Readout->N",
"PE1\t->\tRoot->MainLoop->PE1", "PE2\t->\tRoot->MainLoop->PE2",
"TE\t->\tRoot->MainLoop->Block->TE", "TE\t->\tRoot->PrepLoop->Block->TE",
"TR\t->\tRoot->MainLoop->Block->TR", "TR\t->\tRoot->PrepLoop->Block->TR",
"dwell_time\t->\tRoot->MainLoop->Block->Acquire->Readout->dwell_time",
"dwell_time\t->\tRoot->PrepLoop->Block->Acquire->Readout->dwell_time",
"RF_spoiling\t->\tRoot->MainLoop->RF_spoiling",
"RF_spoiling\t->\tRoot->PrepLoop->RF_spoiling",
"flip_angle\t->\tRoot->PrepLoop->Block->Excite->RF->flip_angle",
"flip_angle\t->\tRoot->MainLoop->Block->Excite->RF->flip_angle",
"slice_thickness\t->\tRoot->MainLoop->Block->Excite->slice_thickness",
"slice_thickness\t->\tRoot->PrepLoop->Block->Excite->slice_thickness",

"slice_gradient_amplitude\t->\tRoot->MainLoop->Block->Excite->gradient_amplitude",

"slice_gradient_amplitude\t->\tRoot->PrepLoop->Block->Excite->gradient_amplitude",
"spoiler_moment\t->\tRoot->PrepLoop->Block->Rewind->moment",
"spoiler_moment\t->\tRoot->MainLoop->Block->Rewind->moment",
"prep_PE1\t->\tRoot->PrepLoop->PE1", "++++++ END GLOBAL ++++++", "++++++
RECONSTRUCTION ++++++", "function reconstruction(num_channels)", "if
(nargin<1) num_channels=1; end;", "", "if (num_channels==1)",
"\tX=readmda('ADC1.mda');", "\tX=fftshift(fftn(fftshift(X)));",
"\twritemda(X,'recon.mda');", "end;", "", "++++++ END NOTES ++++++",
"++++++ LINK GROUPS ++++++", "",
"GROUP\tRoot->PrepLoop->Block\tRoot->MainLoop->Block", "", "++++++ END LINK
GROUPS ++++++", "", "", "++++++ NODES ++++++", "",
"PARAMETER\tSTVector3\tFOV\t(256,256,50)\tmm\tactive\tFOV",
"PARAMETER\tSTReal\tmaxamp\t20\tuT/mm\tactive\t",
"PARAMETER\tSTReal\tramprate\t0.1\t[uT/mm]/us\tactive\t",
"PARAMETER\tSTReal\tgamma\t42.5764\tHz/uT\tactive\t",
"PARAMETER\tSTVector3\tFOV_shift\t(0,0,0)\tmm\tactive\t",
"PARAMETER\tSTVector3\tphase_shift\t237\tdegrees\tpassive\t",
"PARAMETER\tSTVector3\tFOV_shift_offset\t(0,0,0)\tmm; used
internally\tactive\t", "CHILD\tSPGRLoop\tPrepLoop", "
PARAMETER\tSTIterator\tPE1\t1:1:10\t\tactive\tprep_PE1", "
PARAMETER\tSTIterator\tPE2\t0:1:0\t\tactive\t", "
PARAMETER\tSTVector3\treadout_dir\t(1,0,0)\t\tactive\t", "
PARAMETER\tSTVector3\tPE1_dir\t(0,0,0)\t\tactive\t", "
PARAMETER\tSTVector3\tPE2_dir\t(0,0,1)\t\tactive\t", "
PARAMETER\tSTInteger\tRF_spoiling\t1\t0 or 1\tactive\tRF_spoiling", "
CHILD\tSTGradientEchoBlock\tBlock", "
PARAMETER\tSTReal\tTE\t6000\tmicrosec\tactive\tTE", "
PARAMETER\tSTReal\tTR\t50000\tmicrosec\tactive\tTR", "
PARAMETER\tSTVector3\tkspace_dir\t(1,0,0)\t\tpassive\t", "
PARAMETER\tSTVector3\tkspace_echo\t(0,0,0)\t\tpassive\t", "
PARAMETER\tSTReal\texcite_time\t1000\tmicrosec\tactive\t", "
CHILD\tSTExcite\tExcite", "

PARAMETER\tSTVector3\tgradient_amplitude\t(0,0,10)\tuT/mm\tactive\tslice_gradient_amplitude",
"
PARAMETER\tSTReal\tslice_thickness\t10\tmm\tactive\tslice_thickness", "
PARAMETER\tSTReal\tbandwidth\t4257.64\tHz\tpassive\t", "
PARAMETER\tSTInteger\tprephase\t1\t0 or 1\tactive\t", "
CHILD\tSTGradientMom\tPrephase", "
PARAMETER\tSTVector3\tramp_times_1\t(0,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tplateau_times\t(0,0,210)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tramp_times_2\t(0,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tstart_times\t(0,0,0)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tamplitude\t(0,0,-19.7561)\tuT/mm\tpassive\t", "
PARAMETER\tSTInteger\talignment\t0\t0=left; 1=right;
2=center\tactive\t", "
PARAMETER\tSTInteger\talways_min_dur\t0\t0 or 1\tactive\t", "
PARAMETER\tSTReal\tmaxamp\t0\t[uT/mm]\tactive\t", "
PARAMETER\tSTReal\tramprate\t0\t[uT/mm]/us\tactive\t", "
END", " CHILD\tSTGradientAmp\tSliceGradient", "
PARAMETER\tSTReal\tramp_time_1\t200\tmicrosec\tactive\t", "
PARAMETER\tSTReal\tplateau_time\t1400\tmicrosec\tpassive\t", "
PARAMETER\tSTReal\tramp_time_2\t200\tmicrosec\tactive\t", "
PARAMETER\tSTVector3\tamplitude\t(0,0,10)\tuT/mm\tpassive\t", "
END", " CHILD\tSTSincRF\tRF", "
PARAMETER\tSTReal\tnum_lobes_left\t2\t\tactive\t", "
PARAMETER\tSTReal\tnum_lobes_right\t2\t\tactive\t", "
PARAMETER\tSTReal\tflip_angle\t45\tdegrees\tactive\tflip_angle", "
PARAMETER\tSTReal\tpulse_duration\t1409.23\tmicrosec\tpassive\t", "
PARAMETER\tSTReal\treference_fraction\t0.5\t\tpassive\t", "
PARAMETER\tSTReal\tbandwidth\t4257.64\tHz\tpassive\t", "
PARAMETER\tSTReal\ttime_step\t10\tmicrosec\tactive\t", "
PARAMETER\tSTReal\tphase\t0\tdegrees\tactive\t", "
PARAMETER\tSTReal\tfrequency\t0\tHz\tactive\t", "
PARAMETER\tSTInteger\tpulse_type\t1\t1=Excite; 2=Refocus\tactive\t", "
PARAMETER\tSTVector3\tgradient_amplitude\t(0,0,10)\tuT/mm; for
internal use\tpassive\t", "
PARAMETER\tSTReal\tslice_thickness\t10\tmm; for internal use\tpassive\t",
" END", " END", "
CHILD\tSTAcquire\tAcquire", "
PARAMETER\tSTVector3\techo_moment\t(0,0,0)\t[uT/mm]-us\tpassive\t", "

PARAMETER\tSTVector3\tmoment_per_point\t(91.7468,0,0)\t[uT/mm]-us\tpassive\t",
" CHILD\tSTGradientMom\tEncode", "
PARAMETER\tSTVector3\tramp_times_1\t(200,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tplateau_times\t(410,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tramp_times_2\t(200,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tstart_times\t(0,0,0)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tamplitude\t(-19.7531,0,-19.75)\tuT/mm\tpassive\t", "
PARAMETER\tSTInteger\talignment\t0\t0=left; 1=right;
2=center\tactive\t", "
PARAMETER\tSTInteger\talways_min_dur\t0\t0 or 1\tactive\t", "
PARAMETER\tSTReal\tmaxamp\t0\t[uT/mm]\tactive\t", "
PARAMETER\tSTReal\tramprate\t0\t[uT/mm]/us\tactive\t", "
END", " CHILD\tSTGradientAmp\tReadoutGradient", "
PARAMETER\tSTReal\tramp_time_1\t200\tmicrosec\tactive\t", "
PARAMETER\tSTReal\tplateau_time\t7680\tmicrosec\tpassive\t", "
PARAMETER\tSTReal\tramp_time_2\t200\tmicrosec\tactive\t", "
PARAMETER\tSTVector3\tamplitude\t(3.05823,0,0)\tuT/mm\tpassive\t", "
END", " CHILD\tSTReadout\tReadout", "
PARAMETER\tSTReal\tdwell_time\t30\tmicrosec\tactive\tdwell_time", "
PARAMETER\tSTInteger\tN\t256\t\tactive\treadout_N", "
PARAMETER\tSTReal\treference_fraction\t0.5\t\tactive\t", "
PARAMETER\tSTReal\tactual_reference_fraction\t0.5\t\tpassive\t", "
PARAMETER\tSTReal\treference_sample\t128.5\t\tpassive\t", "
PARAMETER\tSTReal\tphase\t0\tdegrees\tactive\t", "
PARAMETER\tSTReal\tfrequency\t0\tHz\tactive\t", "
PARAMETER\tSTVector3\tgradient_amplitude\t(3.05823,0,0)\tuT/mm; for
internal use\tpassive\t", "
PARAMETER\tSTInteger\tround_up_reference_time\t1\t0 or 1\tactive\t", "
END", " END", " CHILD\tSTEncode\tRewind", "

PARAMETER\tSTVector3\tmoment\t(0,0,100000)\t[uT/mm]-us\tactive\tspoiler_moment",
" PARAMETER\tSTInteger\tdo_rewind\t1\t0 or 1\tactive\t", "
CHILD\tSTGradientMom\tGradient", "
PARAMETER\tSTVector3\tramp_times_1\t(200,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tplateau_times\t(410,0,4800)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tramp_times_2\t(200,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tstart_times\t(0,0,0)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tamplitude\t(-19.7531,0,20)\tuT/mm\tpassive\t", "
PARAMETER\tSTInteger\talignment\t0\t0=left; 1=right;
2=center\tactive\t", "
PARAMETER\tSTInteger\talways_min_dur\t0\t0 or 1\tactive\t", "
PARAMETER\tSTReal\tmaxamp\t0\t[uT/mm]\tactive\t", "
PARAMETER\tSTReal\tramprate\t0\t[uT/mm]/us\tactive\t", "
END", " END", " END", " END",
"CHILD\tSPGRLoop\tMainLoop", "
PARAMETER\tSTIterator\tPE1\t-128:1:127\t\tactive\tPE1", "
PARAMETER\tSTIterator\tPE2\t0:1:0\t\tactive\tPE2", "
PARAMETER\tSTVector3\treadout_dir\t(1,0,0)\t\tactive\t", "
PARAMETER\tSTVector3\tPE1_dir\t(0,1,0)\t\tactive\t", "
PARAMETER\tSTVector3\tPE2_dir\t(0,0,1)\t\tactive\t", "
PARAMETER\tSTInteger\tRF_spoiling\t1\t0 or 1\tactive\tRF_spoiling", "
CHILD\tSTGradientEchoBlock\tBlock", "
PARAMETER\tSTReal\tTE\t6000\tmicrosec\tactive\tTE", "
PARAMETER\tSTReal\tTR\t50000\tmicrosec\tactive\tTR", "
PARAMETER\tSTVector3\tkspace_dir\t(1,0,0)\t\tpassive\t", "
PARAMETER\tSTVector3\tkspace_echo\t(0,-88,0)\t\tpassive\t", "
PARAMETER\tSTReal\texcite_time\t1000\tmicrosec\tactive\t", "
CHILD\tSTExcite\tExcite", "

PARAMETER\tSTVector3\tgradient_amplitude\t(0,0,10)\tuT/mm\tactive\tslice_gradient_amplitude",
"
PARAMETER\tSTReal\tslice_thickness\t10\tmm\tactive\tslice_thickness", "
PARAMETER\tSTReal\tbandwidth\t4257.64\tHz\tpassive\t", "
PARAMETER\tSTInteger\tprephase\t1\t0 or 1\tactive\t", "
CHILD\tSTGradientMom\tPrephase", "
PARAMETER\tSTVector3\tramp_times_1\t(0,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tplateau_times\t(0,0,210)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tramp_times_2\t(0,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tstart_times\t(0,0,0)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tamplitude\t(0,0,-19.7561)\tuT/mm\tpassive\t", "
PARAMETER\tSTInteger\talignment\t0\t0=left; 1=right;
2=center\tactive\t", "
PARAMETER\tSTInteger\talways_min_dur\t0\t0 or 1\tactive\t", "
PARAMETER\tSTReal\tmaxamp\t0\t[uT/mm]\tactive\t", "
PARAMETER\tSTReal\tramprate\t0\t[uT/mm]/us\tactive\t", "
END", " CHILD\tSTGradientAmp\tSliceGradient", "
PARAMETER\tSTReal\tramp_time_1\t200\tmicrosec\tactive\t", "
PARAMETER\tSTReal\tplateau_time\t1400\tmicrosec\tpassive\t", "
PARAMETER\tSTReal\tramp_time_2\t200\tmicrosec\tactive\t", "
PARAMETER\tSTVector3\tamplitude\t(0,0,10)\tuT/mm\tpassive\t", "
END", " CHILD\tSTSincRF\tRF", "
PARAMETER\tSTReal\tnum_lobes_left\t2\t\tactive\t", "
PARAMETER\tSTReal\tnum_lobes_right\t2\t\tactive\t", "
PARAMETER\tSTReal\tflip_angle\t45\tdegrees\tactive\tflip_angle", "
PARAMETER\tSTReal\tpulse_duration\t1409.23\tmicrosec\tpassive\t", "
PARAMETER\tSTReal\treference_fraction\t0.5\t\tpassive\t", "
PARAMETER\tSTReal\tbandwidth\t4257.64\tHz\tpassive\t", "
PARAMETER\tSTReal\ttime_step\t10\tmicrosec\tactive\t", "
PARAMETER\tSTReal\tphase\t0\tdegrees\tactive\t", "
PARAMETER\tSTReal\tfrequency\t0\tHz\tactive\t", "
PARAMETER\tSTInteger\tpulse_type\t1\t1=Excite; 2=Refocus\tactive\t", "
PARAMETER\tSTVector3\tgradient_amplitude\t(0,0,10)\tuT/mm; for
internal use\tpassive\t", "
PARAMETER\tSTReal\tslice_thickness\t10\tmm; for internal use\tpassive\t",
" END", " END", "
CHILD\tSTAcquire\tAcquire", "
PARAMETER\tSTVector3\techo_moment\t(0,-8073.72,0)\t[uT/mm]-us\tpassive\t",
"

PARAMETER\tSTVector3\tmoment_per_point\t(91.7468,0,0)\t[uT/mm]-us\tpassive\t",
" CHILD\tSTGradientMom\tEncode", "
PARAMETER\tSTVector3\tramp_times_1\t(200,200,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tplateau_times\t(410,390,200)\tmicrosec\tpassive\t",
"
PARAMETER\tSTVector3\tramp_times_2\t(200,200,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tstart_times\t(0,0,0)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tamplitude\t(-19.7531,-13.6843,-19.75)\tuT/mm\tpassive\t",
" PARAMETER\tSTInteger\talignment\t0\t0=left; 1=right;
2=center\tactive\t", "
PARAMETER\tSTInteger\talways_min_dur\t0\t0 or 1\tactive\t", "
PARAMETER\tSTReal\tmaxamp\t0\t[uT/mm]\tactive\t", "
PARAMETER\tSTReal\tramprate\t0\t[uT/mm]/us\tactive\t", "
END", " CHILD\tSTGradientAmp\tReadoutGradient", "
PARAMETER\tSTReal\tramp_time_1\t200\tmicrosec\tactive\t", "
PARAMETER\tSTReal\tplateau_time\t7680\tmicrosec\tpassive\t", "
PARAMETER\tSTReal\tramp_time_2\t200\tmicrosec\tactive\t", "
PARAMETER\tSTVector3\tamplitude\t(3.05823,0,0)\tuT/mm\tpassive\t", "
END", " CHILD\tSTReadout\tReadout", "
PARAMETER\tSTReal\tdwell_time\t30\tmicrosec\tactive\tdwell_time", "
PARAMETER\tSTInteger\tN\t256\t\tactive\treadout_N", "
PARAMETER\tSTReal\treference_fraction\t0.5\t\tactive\t", "
PARAMETER\tSTReal\tactual_reference_fraction\t0.5\t\tpassive\t", "
PARAMETER\tSTReal\treference_sample\t128.5\t\tpassive\t", "
PARAMETER\tSTReal\tphase\t0\tdegrees\tactive\t", "
PARAMETER\tSTReal\tfrequency\t0\tHz\tactive\t", "
PARAMETER\tSTVector3\tgradient_amplitude\t(3.05823,0,0)\tuT/mm; for
internal use\tpassive\t", "
PARAMETER\tSTInteger\tround_up_reference_time\t1\t0 or 1\tactive\t", "
END", " END", " CHILD\tSTEncode\tRewind", "

PARAMETER\tSTVector3\tmoment\t(0,0,100000)\t[uT/mm]-us\tactive\tspoiler_moment",
" PARAMETER\tSTInteger\tdo_rewind\t1\t0 or 1\tactive\t", "
CHILD\tSTGradientMom\tGradient", "
PARAMETER\tSTVector3\tramp_times_1\t(200,200,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tplateau_times\t(410,390,4800)\tmicrosec\tpassive\t",
"
PARAMETER\tSTVector3\tramp_times_2\t(200,200,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tstart_times\t(0,0,0)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tamplitude\t(-19.7531,13.6843,20)\tuT/mm\tpassive\t",
" PARAMETER\tSTInteger\talignment\t0\t0=left; 1=right;
2=center\tactive\t", "
PARAMETER\tSTInteger\talways_min_dur\t0\t0 or 1\tactive\t", "
PARAMETER\tSTReal\tmaxamp\t0\t[uT/mm]\tactive\t", "
PARAMETER\tSTReal\tramprate\t0\t[uT/mm]/us\tactive\t", "
END", " END", " END", " END", "END", "", "++++++ END
NODES ++++++", "", "++++++ USERCLASS SPGRLoop ++++++", "", "++++++ HEADER",
"class ST_EXPORT SPGRLoop : public STLoop", "{", "public:", "\t/* BEGIN
SEQUENCETREE -- this section generated by SequenceTree -- do not edit /",
"\tSTIterator PE1;", "\tSTIterator PE2;", "\tSTVector3 readout_dir;",
"\tSTVector3 PE1_dir;", "\tSTVector3 PE2_dir;", "\tSTInteger RF_spoiling;",
"\tSTGradientEchoBlock *Block;", "\t/
END SEQUENCETREE -- this section
generated by SequenceTree -- do not edit /", "\t", "\tSPGRLoop();",
"\tbool prepare();", "\t", "\tbool loopRun();", "};", "", "", "++++++
SOURCE", "SPGRLoop::SPGRLoop() {", "\tST_CLASS(SPGRLoop,STLoop)", "\t/

ST_PARAMETERS /\t", "\tST_PARAMETER(STIterator,PE1,0:1:0,)",
"\tST_PARAMETER(STIterator,PE2,0:1:0,)",
"\tST_PARAMETER(STVector3,readout_dir,(1,0,0),)",
"\tST_PARAMETER(STVector3,PE1_dir,(0,1,0),)",
"\tST_PARAMETER(STVector3,PE2_dir,(0,0,1),)",
"\tST_PARAMETER(STInteger,RF_spoiling,0,0 or 1)", "\t/
ST_CHILDREN /",
"\tST_CHILD(STGradientEchoBlock,Block)", "}", "bool SPGRLoop::prepare() {",
"\tBlock->kspace_dir=readout_dir;", "\treturn STLoop::prepare();", "}", "",
"", "bool SPGRLoop::loopRun() {", " if (RF_spoiling) {", "
sequence()->phase_shift=rand()%360;", " }",
"\tBlock->kspace_echo=PE1_dir_PE1+PE2_dir_PE2;", "\treturn Block->run();",
"}", "", "++++++ END", "", "++++++ CLASS SPGRLoop_1 ++++++", "", "++++++
HEADER", "class ST_EXPORT SPGRLoop_1 : public STLoop", "{", "public:",
"\t/
BEGIN SEQUENCETREE -- this section generated by SequenceTree -- do
not edit /", "\tSTIterator PE1;", "\tSTIterator PE2;", "\tSTVector3
readout_dir;", "\tSTVector3 PE1_dir;", "\tSTVector3 PE2_dir;", "\tSTInteger
RF_spoiling;", "\tSTGradientEchoBlock *Block;", "\t/
END SEQUENCETREE --
this section generated by SequenceTree -- do not edit /", "\t",
"\tSPGRLoop_1();", "\tbool prepare();", "\t", "\tbool loopRun();", "};",
"", "", "++++++ SOURCE", "SPGRLoop_1::SPGRLoop_1() {",
"\tST_CLASS(SPGRLoop_1,STLoop)", "\t/
ST_PARAMETERS /\t",
"\tST_PARAMETER(STIterator,PE1,0:1:0,)",
"\tST_PARAMETER(STIterator,PE2,0:1:0,)",
"\tST_PARAMETER(STVector3,readout_dir,(1,0,0),)",
"\tST_PARAMETER(STVector3,PE1_dir,(0,1,0),)",
"\tST_PARAMETER(STVector3,PE2_dir,(0,0,1),)",
"\tST_PARAMETER(STInteger,RF_spoiling,0,0 or 1)", "\t/
ST_CHILDREN /",
"\tST_CHILD(STGradientEchoBlock,Block)", "}", "bool SPGRLoop_1::prepare()
{", "\tBlock->kspace_dir=readout_dir;", "\treturn STLoop::prepare();", "}",
"", "", "bool SPGRLoop_1::loopRun() {", " if (RF_spoiling) {", "
sequence()->phase_shift=rand()%360;", " }",
"\tBlock->kspace_echo=PE1_dir_PE1+PE2_dir_PE2;", "\treturn Block->run();",
"}", "", "++++++ END", "", "++++++ CLASS STRoot ++++++", "", "++++++
HEADER", "class STRoot : public STSequence", "{", "public:", "\t/
BEGIN
SEQUENCETREE -- this section generated by SequenceTree -- do not edit /",
"\tSPGRLoop *PrepLoop;", "\tSPGRLoop *MainLoop;", "\t/
END SEQUENCETREE --
this section generated by SequenceTree -- do not edit /", "\t",
"\tSTRoot();", "};", "", "", "++++++ SOURCE", "STRoot::STRoot() {",
"\tST_CLASS(STRoot,STSequence)", "\t/
ST_PARAMETERS /", "\t/ ST_CHILDREN
/", "\tST_CHILD(SPGRLoop,PrepLoop);", "\tST_CHILD(SPGRLoop,MainLoop);",
"}", "", "++++++ END", "", "++++++ USERCLASS SpinLockRF ++++++", "",
"++++++ HEADER", "class SpinLockRF : public STNode {", "public:", "\t/

BEGIN SEQUENCETREE -- this section generated by SequenceTree -- do not edit
/", "\tSTReal flip_angle_1;", "\tSTReal flip_angle_2;", "\tSTReal
pulse_duration_1;", "\tSTReal pulse_duration_2;", "\tSTInteger
alternating_phase;", "\tSTInteger frequency_offset;", "\tSTInteger
num_sl_pulses;", "\tSTReal inter_pulse_delay;", "\tSTReal time_step;",
"\tSTReal phase;", "\tSTReal frequency;", "\t/
END SEQUENCETREE -- this
section generated by SequenceTree -- do not edit /", "\t", "\t//events",
"\tSTScannerRFPulse *RF_bread;", "\tSTScannerRFPulse *RF_meat;",
"\t/////////////////////////////////////////////////////",
"\tSpinLockRF();", "\tvirtual ~SpinLockRF();", "\tbool initialize();",
"\tbool prepare();", "\tbool run();", "\tdouble duration();", "\tdouble
referenceTime();", "\tVector3 terminalMoment();", "\tVector3
gradientStartTimes(); ", "\tVector3 gradientEndTimes();", "\tdouble
SAR();", "private:", "\tvoid delete_events();", "};", "", "", "++++++
SOURCE", "SpinLockRF::SpinLockRF() {", "\tST_CLASS(SpinLockRF,STNode)",
"\tRF_bread=0;", "\tRF_meat=0;", "\t/
ST_PARAMETERS /",
"\tST_PARAMETER(STReal, flip_angle_1, 90, degrees)",
"\tST_PARAMETER(STReal, flip_angle_2, 360, degrees)",
"\tST_PARAMETER(STReal, pulse_duration_1, 300, microsec)",
"\tST_PARAMETER(STReal, pulse_duration_2, 1000, microsec)",
"\tST_PARAMETER(STInteger, alternating_phase, 0, 0 or 1) ",
"\tST_PARAMETER(STInteger, frequency_offset, 0, Hz)",
"\tST_PARAMETER(STInteger, num_sl_pulses, 10,)", "\tST_PARAMETER(STReal,
inter_pulse_delay, 60, microsec)", "\tST_PARAMETER(STReal, time_step, 10,
microsec)", "\tST_PARAMETER(STReal, phase, 0, degrees)",
"\tST_PARAMETER(STReal, frequency, 0, Hz)", "\t/
ST_CHILDREN _/", "}",
"SpinLockRF::~SpinLockRF() {", "\tdelete_events();", "}", "void
SpinLockRF::delete_events() {", "\tif (RF_bread) delete RF_bread;
RF_bread=0;", "\tif (RF_meat) delete RF_meat; RF_meat=0;", "}", "bool
SpinLockRF::initialize() {", "\tclearChildren();", "\tif (!scanner())
return false;", "\tdelete_events();",
"\tRF_bread=scanner()->allocateRFPulse(this);",
"\tRF_meat=scanner()->allocateRFPulse(this);", "\treturn true;", "}", "bool
SpinLockRF::prepare() {", "\tif (!RF_bread) return false;", "\tif
(!RF_meat) return false;", "\tif (time_step<=0) return false;", "\tif
(pulse_duration_1<=time_step) return false;", "\tif
(pulse_duration_2<=time_step) return false;", "\tif (!sequence()) return
false;", "\t\t", "\t\tlong N1=(long)(pulse_duration_1/time_step);",
"\t\tlong N2=(long)(pulse_duration_2/time_step);", "\t\t", "\t\tdouble
*data_mag_1=(double *)malloc(sizeof(double)_N1);", "\t\tdouble
_data_phase_1=(double *)malloc(sizeof(double)_N1);", "\t\tdouble
_data_mag_2=(double *)malloc(sizeof(double)_N2);", "\t\tdouble
_data_phase_2=(double *)malloc(sizeof(double)_N2);", "\t\tdouble
sum_re_1=0,sum_re_2=0;", "\t\tdouble sum_im_1=0,sum_im_2=0;", "\t\t{for
(long j=0; j<N1; j++) {", "\t\t\tdouble re=1,im=0;", "\t\t\tsum_re_1+=re;",
"\t\t\tsum_im_1+=im;", "\t\t\tdata_mag_1[j]=sqrt(re_re+im_im);",
"\t\t\tdata_phase_1[j]=atan2(im,re)/(2_3.1415926535)_360;", "\t\t}}",
"\t\t{for (long j=0; j<N2; j++) {", "\t\t\tdouble re=1,im=0;",
"\t\t\tsum_re_2+=re;", "\t\t\tsum_im_2+=im;",
"\t\t\tdata_mag_2[j]=sqrt(re_re+im_im);",
"\t\t\tdata_phase_2[j]=atan2(im,re)/(2_3.1415926535)_360;", "\t\t}}",
"\t\t//uT * sec * Hz/uT * degrees = degrees ", "\t\tdouble

factor1=sqrt(sum_re_1_sum_re_1+sum_im_1_sum_im_1)_time_step/1.0E6_sequence()->gamma*360/90;",
"\t\tdouble

factor2=sqrt(sum_re_2_sum_re_2+sum_im_2_sum_im_2)_time_step/1.0E6_sequence()->gamma*360/90;",
"\t\t{for (long j=0; j<N1; j++) {", "\t\t\tdata_mag_1[j]/=factor1;",
"\t\t}}", "\t\t{for (long j=0; j<N2; j++) {",
"\t\t\tdata_mag_2[j]/=factor2;", "\t\t}}",

"\t\tRF_bread->setPulse(N1,data_mag_1,data_phase_1,time_step,90,pulse_duration_1/2);",

"\t\tRF_meat->setPulse(N2,data_mag_2,data_phase_2,time_step,90,pulse_duration_2/2);",
"\t\tfree(data_mag_1);", "\t\tfree(data_phase_1);",
"\t\tfree(data_mag_2);", "\t\tfree(data_phase_2);", "\t",
"\tRF_bread->setFlipAngle(flip_angle_1);",
"\tRF_meat->setFlipAngle(flip_angle_2);", "\t", "\tsetModified(false);",
"\treturn true;", "}", "bool SpinLockRF::run() {", "\tif (!RF_bread) return
false;", "\tif (!RF_meat) return false;", "\tif (!scanner()) return
false;", "\tif (!sequence()) return false;", "", "\tdouble ph=phase;",
"\tVector3 totmom=initialTotalMoment();",
"\tph+=sequence()->phaseAdjustment();",
"\tph+=(totmom.x()_sequence()->getFOVShiftX()",
"\t\t+totmom.y()_sequence()->getFOVShiftY()",
"\t\t+totmom.z()_sequence()->getFOVShiftZ())sequence()->gamma/1.0E6_360;",
"\tRF_bread->setPhase(ph);", "\tRF_meat->setPhase(ph);", "\t",
"\tRF_bread->setFrequency(frequency);",
"\tRF_meat->setFrequency(frequency);", "\t", "", "\t//The excite pulse ",
"\tdouble time_offset=0;",
"\tRF_bread->setStartTime(startTime()+time_offset);", "\tif
(RF_bread->pulseCount()) scanner()->addEvent(RF_bread);",
"\ttime_offset+=pulse_duration_1+inter_pulse_delay;", "", "\t//inner
pulses", "\tfor (int j=0; j<num_sl_pulses; j++) {", "\t\tif
(alternating_phase) {", "\t\t\tif (j%2==0) {",
"\t\t\t\tRF_meat->setPhase(ph+0);",
"\t\t\t\tRF_meat->setFrequency(frequency_offset);", "\t\t\t}", "\t\t\telse
{", "\t\t\t\tRF_meat->setPhase(ph+180);",
"\t\t\t\tRF_meat->setFrequency(frequency_offset);", "\t\t\t}", "\t\t}",
"\t\tRF_meat->setStartTime(startTime()+time_offset);", "\t\tif
(RF_meat->pulseCount()) scanner()->addEvent(RF_meat);",
"\t\ttime_offset+=pulse_duration_2+inter_pulse_delay;", "\t}", "", "\t//The
store pulse", "\tRF_bread->setStartTime(startTime()+time_offset);", "\tif
(RF_bread->pulseCount()) scanner()->addEvent(RF_bread);",
"\ttime_offset+=pulse_duration_1+inter_pulse_delay;", "\t", "\treturn
true;", "}", "double SpinLockRF::duration() {", "\tif
((!RF_meat)||(RF_bread)) return 0;", "\treturn pulse_duration_1_2 +
pulse_duration_2_num_sl_pulses + inter_pulse_delay
(num_sl_pulses+1);",
"}", "double SpinLockRF::referenceTime() {", "\treturn 0;", "}", "Vector3
SpinLockRF::terminalMoment() {", "\treturn Vector3();", "}", "", "Vector3
SpinLockRF::gradientStartTimes() {", "\treturn Vector3(0,0,0);", "}",
"Vector3 SpinLockRF::gradientEndTimes() {", "\tdouble dur=duration();",
"\treturn Vector3(dur,dur,dur);", "}", "", "double SpinLockRF::SAR() {",
"\tif ((!RF_bread)||(!RF_meat)) return 0;", "\treturn RF_bread->SAR()_2 +
RF_meat->SAR()_num_sl_pulses;", "}", "", "++++++ END", "++++++ RESOURCES
++++++", "", "", "", "++++++ END RESOURCES ++++++", "", "")
"Writing
/home/jiasen/sequencetree4/bin/../simulator/foundationclasses.h..."
"Writing
/home/jiasen/sequencetree4/bin/../simulator/foundationclasses.cpp.."
"Writing /home/jiasen/sequencetree4/bin/../simulator/customclasses.h..."
"Writing /home/jiasen/sequencetree4/bin/../simulator/customclasses.cpp.."
"Writing /home/jiasen/sequencetree4/bin/../simulator/createsequence.cpp.."
"Writing
/home/jiasen/sequencetree4/bin/../simulator/loadparametersfile.cpp.."
"Running /bin/sh
"/home/jiasen/sequencetree4/bin/../simulator/compile-linux.sh".."
Running: "/home/jiasen/sequencetree4/bin/simulator_executable1.exe"
("stat",
"/home/jiasen/sequencetree4/bin/../tmp/sequence_parameters_in.txt",
"/home/jiasen/sequencetree4/bin/../tmp/sequence_parameters_out.txt",
"/home/jiasen/sequencetree4/bin/../tmp/simulation_output.dat",
"/home/jiasen/sequencetree4/bin/../tmp/results_output_stat.txt", "-1",
"-1")

Best wishes,
Jia Sen

On Wed, Oct 21, 2015 at 11:01 PM, licheng2002 [email protected]
wrote:

Did you attach the log file? Try to take a look at the simulator folder,
and delete the temporary object file, i.e. the file with extension ".o".
Then compile the sequence again.

On Wed, Oct 21, 2015 at 10:41 AM, siatjiasen [email protected]
wrote:

Thank you very much for help.

The tmp folder didn't exist.

I created it manually, then compile SPGR.sts sequence, still:

Simulation finished...
Unexpected problem in simulation, output file does not exist.

I attached the full log file recording the output of building and
running
./st4.

Thank you again.
Best wishes,
Jia Sen


Reply to this email directly or view it on GitHub
<
#3 (comment)

.

Regards!
Cheng Li
Email: [email protected]


Reply to this email directly or view it on GitHub
<
https://github.com/magland/sequencetree4/issues/3#issuecomment-149924546>
.


Reply to this email directly or view it on GitHub
#3 (comment)
.

Regards!

Cheng Li
Email: [email protected]

@siatjiasen
Copy link
Author

Hi,

Thank you so much for help.

I did as what you said. Now I can compile and simulate the sequences (I
tried with both qt4 and qt5.5).

[image: Inline image 1]

Best wishes,
Jia Sen

On Fri, Oct 23, 2015 at 11:13 PM, licheng2002 [email protected]
wrote:

Hi,
I just tried a fresh compilation, it seems working fine on my PC,
Ubuntu 14.04, qmake v3.0 using Qt v5.2.1

Following the steps:

  1. git clone https://github.com/magland/sequencetree4.git
  2. cd sequence4/src
  3. qmake
  4. make
  5. cd ../
  6. mkdir tmp
  7. cd bin
  8. ./st4

Could you please try again from a fresh download? Thanks!
Cheng

On Thu, Oct 22, 2015 at 8:03 PM, siatjiasen [email protected]
wrote:

Thank you for help.

I did as you said. But I still got: Unexpected problem in simulation,
output files does not exist.

The log file was:

jiasen@jiasen:$ cd sequencetree4/
jiasen@jiasen:
/sequencetree4$ cd simulator/
jiasen@jiasen:/sequencetree4/simulator$ cd build
jiasen@jiasen:
/sequencetree4/simulator/build$ ls
createsequence.o foundationclasses.o main.o stsimscannerblocklist.o
customclasses.o loadparametersfile.o st4.o stsimscanner.o
jiasen@jiasen:/sequencetree4/simulator/build$ sudo rm *.o
[sudo] password for jiasen:
jiasen@jiasen:
/sequencetree4/simulator/build$ ls
jiasen@jiasen:/sequencetree4/simulator/build$ cd ..
jiasen@jiasen:
/sequencetree4/simulator$ cd ..
jiasen@jiasen:/sequencetree4$ ls
bin doc License.txt Resource_JS simulator stversion.txt
code examples README.txt sequences src templates
jiasen@jiasen:
/sequencetree4$ cd bin
jiasen@jiasen:/sequencetree4/bin$ ls
results_viewer simulator_executable1.exe st4 tmp
simulator simulator_executable2.exe st4controller VS
jiasen@jiasen:
/sequencetree4/bin$ cd ..
jiasen@jiasen:/sequencetree4$ sudo rm bin -r
jiasen@jiasen:
/sequencetree4$ ls
code examples README.txt sequences src templates
doc License.txt Resource_JS simulator stversion.txt
jiasen@jiasen:/sequencetree4$ cd src
jiasen@jiasen:
/sequencetree4/src$ ls
gui Makefile results_viewer st4controller todo.txt
install.x meta shared st4.pro VS
jiasen@jiasen:/sequencetree4/src$ make
cd gui/ && make -f Makefile
make[1]: Entering directory /home/jiasen/sequencetree4/src/gui' g++ -Wl,-O1 -Wl,-rpath,/opt/Qt/5.5/gcc_64 -Wl,-rpath,/opt/Qt/5.5/gcc_64/lib -o ../../bin/st4 build/main.o build/sstring.o build/slist.o build/stresources.o build/stsimscannerblocklist.o build/sttreeview.o build/stnodeview.o build/stparametertree.o build/stmainwindow.o build/stsequenceview.o build/stringchooserdlg.o build/stsimview.o build/stsimblockview.o build/steventlist.o build/stcompilelog.o build/stclassview.o build/stglobalview.o build/stpastedialog.o build/stconfigurationdlg.o build/openfilefromwebdlg.o build/readrawdatadlg.o build/distribute_raw_data.o build/staboutbox.o build/editresourcedlg.o build/streconstructionhighlighter.o build/stmetaclass.o build/stmetanode.o build/stmetasequence.o build/stmetasequencesimulator.o build/stsourceeditor.o build/cpphighlighter.o build/haiqtextedit.o build/defaulteditorwindow.o build/haiqtexteditgroup.o build/haiqmarker.o build/exporttoscannerdlg.o build/mda.o build/complex.o build/stpreferencesdlg.o build/qrc_st4.o build/moc_sttreeview.o build/moc_stnodeview.o build/moc_stparametertree.o build/moc_stmainwindow.o build/moc_stsequenceview.o build/moc_stringchooserdlg.o build/moc_stsimview.o build/moc_stsimblockview.o build/moc_steventlist.o build/moc_stcompilelog.o build/moc_stclassview.o build/moc_stglobalview.o build/moc_openfilefromwebdlg.o build/moc_readrawdatadlg.o build/moc_staboutbox.o build/moc_stmetasequencesimulator.o build/moc_stsourceeditor.o build/moc_haiqtextedit.o build/moc_defaulteditorwindow.o build/moc_haiqtexteditgroup.o -L/opt/Qt/5.5/gcc_64/lib -lQt5Widgets -L/usr/lib64 -lQt5Gui -lQt5Network -lQt5Core -lGL -lpthread make[1]: Leaving directory/home/jiasen/sequencetree4/src/gui'
cd VS/ && make -f Makefile
make[1]: Entering directory /home/jiasen/sequencetree4/src/VS' g++ -Wl,-O1 -Wl,-rpath,/opt/Qt/5.5/gcc_64 -Wl,-rpath,/opt/Qt/5.5/gcc_64/lib -o ../../bin/VS build/vsmain.o build/vsmainwindow.o build/vssequenceview.o build/vsphantomview.o build/vspropertyeditor.o build/run_virtual_scan.o build/vsabstractscanner.o build/vsobjectstate.o build/vsobjecttransformation.o build/vsphantom.o build/vsktermlist.o build/vsktermscanner.o build/stsimscannerblocklist.o build/stmetasequencesimulator.o build/stmetasequence.o build/stmetanode.o build/stmetaclass.o build/slist.o build/sstring.o build/stresources.o build/mda.o build/complex.o build/distribute_raw_data.o build/stringchooserdlg.o build/stconfigurationdlg.o build/stglobalview.o build/stcompilelog.o build/basicphantoms.o build/kspacefunction.o build/basickspacefunctions.o build/vsbasicphantoms.o build/vsphantomplugin.o build/qrc_st4.o build/moc_vsmainwindow.o build/moc_vssequenceview.o build/moc_vsphantomview.o build/moc_vspropertyeditor.o build/moc_vsabstractscanner.o build/moc_vsphantom.o build/moc_vsktermlist.o build/moc_stmetasequencesimulator.o build/moc_stringchooserdlg.o build/moc_stglobalview.o build/moc_stcompilelog.o build/moc_basicphantoms.o build/moc_basickspacefunctions.o build/moc_vsbasicphantoms.o -L../../bin -lgsl -lgslcblas -L/opt/Qt/5.5/gcc_64/lib -lQt5Widgets -L/usr/lib64 -lQt5Gui -lQt5Core -lGL -lpthread make[1]: Leaving directory/home/jiasen/sequencetree4/src/VS'
cd results_viewer/ && make -f Makefile
make[1]: Entering directory
/home/jiasen/sequencetree4/src/results_viewer' g++ -Wl,-O1 -Wl,-rpath,/opt/Qt/5.5/gcc_64 -Wl,-rpath,/opt/Qt/5.5/gcc_64/lib -o ../../bin/results_viewer build/rvmain.o build/rvmainwindow.o build/rvfileview.o build/mda.o build/complex.o build/viewmdamodel.o build/viewmdawidget2d.o build/viewmdawidget1d.o build/viewmdawidget.o build/brightnesstool.o build/fftw_library.o build/apply_fft.o build/export_to_imagej.o build/qrc_st4.o build/moc_rvmainwindow.o build/moc_rvfileview.o build/moc_viewmdamodel.o build/moc_viewmdawidget2d.o build/moc_viewmdawidget1d.o build/moc_viewmdawidget.o build/moc_brightnesstool.o -L../../bin -lfftw3 -L/opt/Qt/5.5/gcc_64/lib -lQt5Widgets -L/usr/lib64 -lQt5Gui -lQt5Core -lGL -lpthread make[1]: Leaving directory /home/jiasen/sequencetree4/src/results_viewer'
cd st4controller/ && make -f Makefile
make[1]: Entering directory
/home/jiasen/sequencetree4/src/st4controller' g++ -Wl,-O1 -Wl,-rpath,/opt/Qt/5.5/gcc_64 -Wl,-rpath,/opt/Qt/5.5/gcc_64/lib -o ../../bin/st4controller build/st4controllermain.o build/stcontrollermainwindow.o build/stcontrollerconfigdlg.o build/stcontroller.o build/rawdatafiletree.o build/sequencestree.o build/mda.o build/distribute_raw_data.o build/qrc_st4.o build/moc_stcontrollermainwindow.o build/moc_stcontroller.o -L/opt/Qt/5.5/gcc_64/lib -lQt5Widgets -L/usr/lib64 -lQt5Gui -lQt5Core -lGL -lpthread make[1]: Leaving directory/home/jiasen/sequencetree4/src/st4controller'
jiasen@jiasen:
/sequencetree4/src$ ls
gui Makefile results_viewer st4controller todo.txt
install.x meta shared st4.pro VS
jiasen@jiasen:/sequencetree4/src$ cd ..
jiasen@jiasen:
/sequencetree4$ ls
bin doc License.txt Resource_JS simulator stversion.txt
code examples README.txt sequences src templates
jiasen@jiasen:/sequencetree4$ cd bin
jiasen@jiasen:
/sequencetree4/bin$ ls
results_viewer st4 st4controller VS
jiasen@jiasen:~/sequencetree4/bin$ ./st4
libpng warning: iCCP: known incorrect sRGB profile
loadFromText
("++++++ HEADER ++++++", "STVERSION=4.1.14", "++++++ END HEADER ++++++",
"++++++ NOTES ++++++", "=== spgr.sts - Spoiled gradient echo ===", "",
"Global Parameters", " FOV [mm] - field of view", " readout_N - number of
points per readout", " PE1 - first phase encode iterator", " PE2 - second
phase encode iterator", " TE [us] - echo time", " TR [us] - repetition
time", " dwell_time [us] - readout dwell time", " RF_spoiling [0 or 1] -
turn on or off RF-spoiling (randomization of transmit/receive phase)", "
flip_angle [degrees] - flip angle", " slice_thickness [mm] - slice
thickness", " slice_gradient_amplitude [uT/mm] - amplitude of slice
select
gradient", " spoiler_moment [uT/mm-us] - 3D moment of spoiler gradient at
end of each repetition", " prep_PE1 - iterator for preparation
repetetitions", "", "", "To perform 3D phase encoding", " For example,
set
PE2 = -4:1:3, for 8 phase encodes", " To interchange the looping order,
go
to the source code for the loop node and simply switch the order of PE1
and
PE2 iterators", "", "To switch to a non-selective pulse", " 1. set
slice_thickness=0", " 2. set slice_gradient_amplitude=(0,0,0)", " 3. If
you want a rectangular shape pulse, right click on the "RF" node and
select "promote node", then select STRF", "", "== Siemens User
Interface
Directives =====",

"UIDOUBLE\tNAME=TE\t\tRANGE=1:1:100\tLABEL="TE"\t\tUNITS="ms"\tFACTOR=0.001",

"UIDOUBLE\tNAME=TR\t\tRANGE=10:10:3000\tLABEL="TR"\t\tUNITS="ms"\tFACTOR=0.001",
"UIDOUBLE\tNAME=flip_angle\tRANGE=0:5:180\tLABEL="Flip
angle"\tUNITS="deg"",
"UIDOUBLE\tNAME=slice_thickness\tRANGE=2:2:50\t\tLABEL="Slice
thickness"\tUNITS="mm"", "UICHECKBOX\tNAME=RF_spoiling\tLABEL="RF
Spoiling"", "============================", "", "++++++ END NOTES
++++++",
"++++++ GLOBAL ++++++", "FOV\t(256,256,50)\tmm", "readout_N\t256\t",
"PE1\t-128:1:127\t", "PE2\t0:1:0\t", "TE\t6000\tmicrosec",
"TR\t50000\tmicrosec", "dwell_time\t30\tmicrosec", "RF_spoiling\t1\t0 or
1", "flip_angle\t45\tdegrees", "slice_thickness\t10\tmm",
"slice_gradient_amplitude\t(0,0,10)\tuT/mm",
"spoiler_moment\t(0,0,100000)\tuT/mm-us", "prep_PE1\t1:1:10\t",
"FOV\t->\tRoot->FOV",
"readout_N\t->\tRoot->MainLoop->Block->Acquire->Readout->N",
"readout_N\t->\tRoot->PrepLoop->Block->Acquire->Readout->N",
"PE1\t->\tRoot->MainLoop->PE1", "PE2\t->\tRoot->MainLoop->PE2",
"TE\t->\tRoot->MainLoop->Block->TE", "TE\t->\tRoot->PrepLoop->Block->TE",
"TR\t->\tRoot->MainLoop->Block->TR", "TR\t->\tRoot->PrepLoop->Block->TR",
"dwell_time\t->\tRoot->MainLoop->Block->Acquire->Readout->dwell_time",
"dwell_time\t->\tRoot->PrepLoop->Block->Acquire->Readout->dwell_time",
"RF_spoiling\t->\tRoot->MainLoop->RF_spoiling",
"RF_spoiling\t->\tRoot->PrepLoop->RF_spoiling",
"flip_angle\t->\tRoot->PrepLoop->Block->Excite->RF->flip_angle",
"flip_angle\t->\tRoot->MainLoop->Block->Excite->RF->flip_angle",
"slice_thickness\t->\tRoot->MainLoop->Block->Excite->slice_thickness",
"slice_thickness\t->\tRoot->PrepLoop->Block->Excite->slice_thickness",

"slice_gradient_amplitude\t->\tRoot->MainLoop->Block->Excite->gradient_amplitude",

"slice_gradient_amplitude\t->\tRoot->PrepLoop->Block->Excite->gradient_amplitude",
"spoiler_moment\t->\tRoot->PrepLoop->Block->Rewind->moment",
"spoiler_moment\t->\tRoot->MainLoop->Block->Rewind->moment",
"prep_PE1\t->\tRoot->PrepLoop->PE1", "++++++ END GLOBAL ++++++", "++++++
RECONSTRUCTION ++++++", "function reconstruction(num_channels)", "if
(nargin<1) num_channels=1; end;", "", "if (num_channels==1)",
"\tX=readmda('ADC1.mda');", "\tX=fftshift(fftn(fftshift(X)));",
"\twritemda(X,'recon.mda');", "end;", "", "++++++ END NOTES ++++++",
"++++++ LINK GROUPS ++++++", "",
"GROUP\tRoot->PrepLoop->Block\tRoot->MainLoop->Block", "", "++++++ END
LINK
GROUPS ++++++", "", "", "++++++ NODES ++++++", "",
"PARAMETER\tSTVector3\tFOV\t(256,256,50)\tmm\tactive\tFOV",
"PARAMETER\tSTReal\tmaxamp\t20\tuT/mm\tactive\t",
"PARAMETER\tSTReal\tramprate\t0.1\t[uT/mm]/us\tactive\t",
"PARAMETER\tSTReal\tgamma\t42.5764\tHz/uT\tactive\t",
"PARAMETER\tSTVector3\tFOV_shift\t(0,0,0)\tmm\tactive\t",
"PARAMETER\tSTVector3\tphase_shift\t237\tdegrees\tpassive\t",
"PARAMETER\tSTVector3\tFOV_shift_offset\t(0,0,0)\tmm; used
internally\tactive\t", "CHILD\tSPGRLoop\tPrepLoop", "
PARAMETER\tSTIterator\tPE1\t1:1:10\t\tactive\tprep_PE1", "
PARAMETER\tSTIterator\tPE2\t0:1:0\t\tactive\t", "
PARAMETER\tSTVector3\treadout_dir\t(1,0,0)\t\tactive\t", "
PARAMETER\tSTVector3\tPE1_dir\t(0,0,0)\t\tactive\t", "
PARAMETER\tSTVector3\tPE2_dir\t(0,0,1)\t\tactive\t", "
PARAMETER\tSTInteger\tRF_spoiling\t1\t0 or 1\tactive\tRF_spoiling", "
CHILD\tSTGradientEchoBlock\tBlock", "
PARAMETER\tSTReal\tTE\t6000\tmicrosec\tactive\tTE", "
PARAMETER\tSTReal\tTR\t50000\tmicrosec\tactive\tTR", "
PARAMETER\tSTVector3\tkspace_dir\t(1,0,0)\t\tpassive\t", "
PARAMETER\tSTVector3\tkspace_echo\t(0,0,0)\t\tpassive\t", "
PARAMETER\tSTReal\texcite_time\t1000\tmicrosec\tactive\t", "
CHILD\tSTExcite\tExcite", "

PARAMETER\tSTVector3\tgradient_amplitude\t(0,0,10)\tuT/mm\tactive\tslice_gradient_amplitude",
"
PARAMETER\tSTReal\tslice_thickness\t10\tmm\tactive\tslice_thickness", "
PARAMETER\tSTReal\tbandwidth\t4257.64\tHz\tpassive\t", "
PARAMETER\tSTInteger\tprephase\t1\t0 or 1\tactive\t", "
CHILD\tSTGradientMom\tPrephase", "
PARAMETER\tSTVector3\tramp_times_1\t(0,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tplateau_times\t(0,0,210)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tramp_times_2\t(0,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tstart_times\t(0,0,0)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tamplitude\t(0,0,-19.7561)\tuT/mm\tpassive\t", "
PARAMETER\tSTInteger\talignment\t0\t0=left; 1=right;
2=center\tactive\t", "
PARAMETER\tSTInteger\talways_min_dur\t0\t0 or 1\tactive\t", "
PARAMETER\tSTReal\tmaxamp\t0\t[uT/mm]\tactive\t", "
PARAMETER\tSTReal\tramprate\t0\t[uT/mm]/us\tactive\t", "
END", " CHILD\tSTGradientAmp\tSliceGradient", "
PARAMETER\tSTReal\tramp_time_1\t200\tmicrosec\tactive\t", "
PARAMETER\tSTReal\tplateau_time\t1400\tmicrosec\tpassive\t", "
PARAMETER\tSTReal\tramp_time_2\t200\tmicrosec\tactive\t", "
PARAMETER\tSTVector3\tamplitude\t(0,0,10)\tuT/mm\tpassive\t", "
END", " CHILD\tSTSincRF\tRF", "
PARAMETER\tSTReal\tnum_lobes_left\t2\t\tactive\t", "
PARAMETER\tSTReal\tnum_lobes_right\t2\t\tactive\t", "
PARAMETER\tSTReal\tflip_angle\t45\tdegrees\tactive\tflip_angle", "
PARAMETER\tSTReal\tpulse_duration\t1409.23\tmicrosec\tpassive\t", "
PARAMETER\tSTReal\treference_fraction\t0.5\t\tpassive\t", "
PARAMETER\tSTReal\tbandwidth\t4257.64\tHz\tpassive\t", "
PARAMETER\tSTReal\ttime_step\t10\tmicrosec\tactive\t", "
PARAMETER\tSTReal\tphase\t0\tdegrees\tactive\t", "
PARAMETER\tSTReal\tfrequency\t0\tHz\tactive\t", "
PARAMETER\tSTInteger\tpulse_type\t1\t1=Excite; 2=Refocus\tactive\t", "
PARAMETER\tSTVector3\tgradient_amplitude\t(0,0,10)\tuT/mm; for
internal use\tpassive\t", "
PARAMETER\tSTReal\tslice_thickness\t10\tmm; for internal use\tpassive\t",
" END", " END", "
CHILD\tSTAcquire\tAcquire", "
PARAMETER\tSTVector3\techo_moment\t(0,0,0)\t[uT/mm]-us\tpassive\t", "

PARAMETER\tSTVector3\tmoment_per_point\t(91.7468,0,0)\t[uT/mm]-us\tpassive\t",
" CHILD\tSTGradientMom\tEncode", "
PARAMETER\tSTVector3\tramp_times_1\t(200,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tplateau_times\t(410,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tramp_times_2\t(200,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tstart_times\t(0,0,0)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tamplitude\t(-19.7531,0,-19.75)\tuT/mm\tpassive\t",
"
PARAMETER\tSTInteger\talignment\t0\t0=left; 1=right;
2=center\tactive\t", "
PARAMETER\tSTInteger\talways_min_dur\t0\t0 or 1\tactive\t", "
PARAMETER\tSTReal\tmaxamp\t0\t[uT/mm]\tactive\t", "
PARAMETER\tSTReal\tramprate\t0\t[uT/mm]/us\tactive\t", "
END", " CHILD\tSTGradientAmp\tReadoutGradient", "
PARAMETER\tSTReal\tramp_time_1\t200\tmicrosec\tactive\t", "
PARAMETER\tSTReal\tplateau_time\t7680\tmicrosec\tpassive\t", "
PARAMETER\tSTReal\tramp_time_2\t200\tmicrosec\tactive\t", "
PARAMETER\tSTVector3\tamplitude\t(3.05823,0,0)\tuT/mm\tpassive\t", "
END", " CHILD\tSTReadout\tReadout", "
PARAMETER\tSTReal\tdwell_time\t30\tmicrosec\tactive\tdwell_time", "
PARAMETER\tSTInteger\tN\t256\t\tactive\treadout_N", "
PARAMETER\tSTReal\treference_fraction\t0.5\t\tactive\t", "
PARAMETER\tSTReal\tactual_reference_fraction\t0.5\t\tpassive\t", "
PARAMETER\tSTReal\treference_sample\t128.5\t\tpassive\t", "
PARAMETER\tSTReal\tphase\t0\tdegrees\tactive\t", "
PARAMETER\tSTReal\tfrequency\t0\tHz\tactive\t", "
PARAMETER\tSTVector3\tgradient_amplitude\t(3.05823,0,0)\tuT/mm; for
internal use\tpassive\t", "
PARAMETER\tSTInteger\tround_up_reference_time\t1\t0 or 1\tactive\t", "
END", " END", " CHILD\tSTEncode\tRewind", "

PARAMETER\tSTVector3\tmoment\t(0,0,100000)\t[uT/mm]-us\tactive\tspoiler_moment",
" PARAMETER\tSTInteger\tdo_rewind\t1\t0 or 1\tactive\t", "
CHILD\tSTGradientMom\tGradient", "
PARAMETER\tSTVector3\tramp_times_1\t(200,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tplateau_times\t(410,0,4800)\tmicrosec\tpassive\t",
"

PARAMETER\tSTVector3\tramp_times_2\t(200,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tstart_times\t(0,0,0)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tamplitude\t(-19.7531,0,20)\tuT/mm\tpassive\t", "
PARAMETER\tSTInteger\talignment\t0\t0=left; 1=right;
2=center\tactive\t", "
PARAMETER\tSTInteger\talways_min_dur\t0\t0 or 1\tactive\t", "
PARAMETER\tSTReal\tmaxamp\t0\t[uT/mm]\tactive\t", "
PARAMETER\tSTReal\tramprate\t0\t[uT/mm]/us\tactive\t", "
END", " END", " END", " END",
"CHILD\tSPGRLoop\tMainLoop", "
PARAMETER\tSTIterator\tPE1\t-128:1:127\t\tactive\tPE1", "
PARAMETER\tSTIterator\tPE2\t0:1:0\t\tactive\tPE2", "
PARAMETER\tSTVector3\treadout_dir\t(1,0,0)\t\tactive\t", "
PARAMETER\tSTVector3\tPE1_dir\t(0,1,0)\t\tactive\t", "
PARAMETER\tSTVector3\tPE2_dir\t(0,0,1)\t\tactive\t", "
PARAMETER\tSTInteger\tRF_spoiling\t1\t0 or 1\tactive\tRF_spoiling", "
CHILD\tSTGradientEchoBlock\tBlock", "
PARAMETER\tSTReal\tTE\t6000\tmicrosec\tactive\tTE", "
PARAMETER\tSTReal\tTR\t50000\tmicrosec\tactive\tTR", "
PARAMETER\tSTVector3\tkspace_dir\t(1,0,0)\t\tpassive\t", "
PARAMETER\tSTVector3\tkspace_echo\t(0,-88,0)\t\tpassive\t", "
PARAMETER\tSTReal\texcite_time\t1000\tmicrosec\tactive\t", "
CHILD\tSTExcite\tExcite", "

PARAMETER\tSTVector3\tgradient_amplitude\t(0,0,10)\tuT/mm\tactive\tslice_gradient_amplitude",
"
PARAMETER\tSTReal\tslice_thickness\t10\tmm\tactive\tslice_thickness", "
PARAMETER\tSTReal\tbandwidth\t4257.64\tHz\tpassive\t", "
PARAMETER\tSTInteger\tprephase\t1\t0 or 1\tactive\t", "
CHILD\tSTGradientMom\tPrephase", "
PARAMETER\tSTVector3\tramp_times_1\t(0,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tplateau_times\t(0,0,210)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tramp_times_2\t(0,0,200)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tstart_times\t(0,0,0)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tamplitude\t(0,0,-19.7561)\tuT/mm\tpassive\t", "
PARAMETER\tSTInteger\talignment\t0\t0=left; 1=right;
2=center\tactive\t", "
PARAMETER\tSTInteger\talways_min_dur\t0\t0 or 1\tactive\t", "
PARAMETER\tSTReal\tmaxamp\t0\t[uT/mm]\tactive\t", "
PARAMETER\tSTReal\tramprate\t0\t[uT/mm]/us\tactive\t", "
END", " CHILD\tSTGradientAmp\tSliceGradient", "
PARAMETER\tSTReal\tramp_time_1\t200\tmicrosec\tactive\t", "
PARAMETER\tSTReal\tplateau_time\t1400\tmicrosec\tpassive\t", "
PARAMETER\tSTReal\tramp_time_2\t200\tmicrosec\tactive\t", "
PARAMETER\tSTVector3\tamplitude\t(0,0,10)\tuT/mm\tpassive\t", "
END", " CHILD\tSTSincRF\tRF", "
PARAMETER\tSTReal\tnum_lobes_left\t2\t\tactive\t", "
PARAMETER\tSTReal\tnum_lobes_right\t2\t\tactive\t", "
PARAMETER\tSTReal\tflip_angle\t45\tdegrees\tactive\tflip_angle", "
PARAMETER\tSTReal\tpulse_duration\t1409.23\tmicrosec\tpassive\t", "
PARAMETER\tSTReal\treference_fraction\t0.5\t\tpassive\t", "
PARAMETER\tSTReal\tbandwidth\t4257.64\tHz\tpassive\t", "
PARAMETER\tSTReal\ttime_step\t10\tmicrosec\tactive\t", "
PARAMETER\tSTReal\tphase\t0\tdegrees\tactive\t", "
PARAMETER\tSTReal\tfrequency\t0\tHz\tactive\t", "
PARAMETER\tSTInteger\tpulse_type\t1\t1=Excite; 2=Refocus\tactive\t", "
PARAMETER\tSTVector3\tgradient_amplitude\t(0,0,10)\tuT/mm; for
internal use\tpassive\t", "
PARAMETER\tSTReal\tslice_thickness\t10\tmm; for internal use\tpassive\t",
" END", " END", "
CHILD\tSTAcquire\tAcquire", "

PARAMETER\tSTVector3\techo_moment\t(0,-8073.72,0)\t[uT/mm]-us\tpassive\t",
"

PARAMETER\tSTVector3\tmoment_per_point\t(91.7468,0,0)\t[uT/mm]-us\tpassive\t",
" CHILD\tSTGradientMom\tEncode", "
PARAMETER\tSTVector3\tramp_times_1\t(200,200,200)\tmicrosec\tpassive\t",
"

PARAMETER\tSTVector3\tplateau_times\t(410,390,200)\tmicrosec\tpassive\t",
"
PARAMETER\tSTVector3\tramp_times_2\t(200,200,200)\tmicrosec\tpassive\t",
"

PARAMETER\tSTVector3\tstart_times\t(0,0,0)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tamplitude\t(-19.7531,-13.6843,-19.75)\tuT/mm\tpassive\t",
" PARAMETER\tSTInteger\talignment\t0\t0=left; 1=right;
2=center\tactive\t", "
PARAMETER\tSTInteger\talways_min_dur\t0\t0 or 1\tactive\t", "
PARAMETER\tSTReal\tmaxamp\t0\t[uT/mm]\tactive\t", "
PARAMETER\tSTReal\tramprate\t0\t[uT/mm]/us\tactive\t", "
END", " CHILD\tSTGradientAmp\tReadoutGradient", "
PARAMETER\tSTReal\tramp_time_1\t200\tmicrosec\tactive\t", "
PARAMETER\tSTReal\tplateau_time\t7680\tmicrosec\tpassive\t", "
PARAMETER\tSTReal\tramp_time_2\t200\tmicrosec\tactive\t", "
PARAMETER\tSTVector3\tamplitude\t(3.05823,0,0)\tuT/mm\tpassive\t", "
END", " CHILD\tSTReadout\tReadout", "
PARAMETER\tSTReal\tdwell_time\t30\tmicrosec\tactive\tdwell_time", "
PARAMETER\tSTInteger\tN\t256\t\tactive\treadout_N", "
PARAMETER\tSTReal\treference_fraction\t0.5\t\tactive\t", "
PARAMETER\tSTReal\tactual_reference_fraction\t0.5\t\tpassive\t", "
PARAMETER\tSTReal\treference_sample\t128.5\t\tpassive\t", "
PARAMETER\tSTReal\tphase\t0\tdegrees\tactive\t", "
PARAMETER\tSTReal\tfrequency\t0\tHz\tactive\t", "
PARAMETER\tSTVector3\tgradient_amplitude\t(3.05823,0,0)\tuT/mm; for
internal use\tpassive\t", "
PARAMETER\tSTInteger\tround_up_reference_time\t1\t0 or 1\tactive\t", "
END", " END", " CHILD\tSTEncode\tRewind", "

PARAMETER\tSTVector3\tmoment\t(0,0,100000)\t[uT/mm]-us\tactive\tspoiler_moment",
" PARAMETER\tSTInteger\tdo_rewind\t1\t0 or 1\tactive\t", "
CHILD\tSTGradientMom\tGradient", "
PARAMETER\tSTVector3\tramp_times_1\t(200,200,200)\tmicrosec\tpassive\t",
"

PARAMETER\tSTVector3\tplateau_times\t(410,390,4800)\tmicrosec\tpassive\t",
"
PARAMETER\tSTVector3\tramp_times_2\t(200,200,200)\tmicrosec\tpassive\t",
"

PARAMETER\tSTVector3\tstart_times\t(0,0,0)\tmicrosec\tpassive\t", "

PARAMETER\tSTVector3\tamplitude\t(-19.7531,13.6843,20)\tuT/mm\tpassive\t",
" PARAMETER\tSTInteger\talignment\t0\t0=left; 1=right;
2=center\tactive\t", "
PARAMETER\tSTInteger\talways_min_dur\t0\t0 or 1\tactive\t", "
PARAMETER\tSTReal\tmaxamp\t0\t[uT/mm]\tactive\t", "
PARAMETER\tSTReal\tramprate\t0\t[uT/mm]/us\tactive\t", "
END", " END", " END", " END", "END", "", "++++++ END
NODES ++++++", "", "++++++ USERCLASS SPGRLoop ++++++", "", "++++++
HEADER",
"class ST_EXPORT SPGRLoop : public STLoop", "{", "public:", "\t/* BEGIN
SEQUENCETREE -- this section generated by SequenceTree -- do not edit
/",
"\tSTIterator PE1;", "\tSTIterator PE2;", "\tSTVector3 readout_dir;",
"\tSTVector3 PE1_dir;", "\tSTVector3 PE2_dir;", "\tSTInteger
RF_spoiling;",
"\tSTGradientEchoBlock *Block;", "\t/
END SEQUENCETREE -- this section
generated by SequenceTree -- do not edit /", "\t", "\tSPGRLoop();",
"\tbool prepare();", "\t", "\tbool loopRun();", "};", "", "", "++++++
SOURCE", "SPGRLoop::SPGRLoop() {", "\tST_CLASS(SPGRLoop,STLoop)", "\t/

ST_PARAMETERS /\t", "\tST_PARAMETER(STIterator,PE1,0:1:0,)",
"\tST_PARAMETER(STIterator,PE2,0:1:0,)",
"\tST_PARAMETER(STVector3,readout_dir,(1,0,0),)",
"\tST_PARAMETER(STVector3,PE1_dir,(0,1,0),)",
"\tST_PARAMETER(STVector3,PE2_dir,(0,0,1),)",
"\tST_PARAMETER(STInteger,RF_spoiling,0,0 or 1)", "\t/
ST_CHILDREN /",
"\tST_CHILD(STGradientEchoBlock,Block)", "}", "bool SPGRLoop::prepare()
{",
"\tBlock->kspace_dir=readout_dir;", "\treturn STLoop::prepare();", "}",
"",
"", "bool SPGRLoop::loopRun() {", " if (RF_spoiling) {", "
sequence()->phase_shift=rand()%360;", " }",
"\tBlock->kspace_echo=PE1_dir_PE1+PE2_dir_PE2;", "\treturn
Block->run();",
"}", "", "++++++ END", "", "++++++ CLASS SPGRLoop_1 ++++++", "", "++++++
HEADER", "class ST_EXPORT SPGRLoop_1 : public STLoop", "{", "public:",
"\t/
BEGIN SEQUENCETREE -- this section generated by SequenceTree -- do
not edit /", "\tSTIterator PE1;", "\tSTIterator PE2;", "\tSTVector3
readout_dir;", "\tSTVector3 PE1_dir;", "\tSTVector3 PE2_dir;",
"\tSTInteger
RF_spoiling;", "\tSTGradientEchoBlock *Block;", "\t/
END SEQUENCETREE --
this section generated by SequenceTree -- do not edit /", "\t",
"\tSPGRLoop_1();", "\tbool prepare();", "\t", "\tbool loopRun();", "};",
"", "", "++++++ SOURCE", "SPGRLoop_1::SPGRLoop_1() {",
"\tST_CLASS(SPGRLoop_1,STLoop)", "\t/
ST_PARAMETERS /\t",
"\tST_PARAMETER(STIterator,PE1,0:1:0,)",
"\tST_PARAMETER(STIterator,PE2,0:1:0,)",
"\tST_PARAMETER(STVector3,readout_dir,(1,0,0),)",
"\tST_PARAMETER(STVector3,PE1_dir,(0,1,0),)",
"\tST_PARAMETER(STVector3,PE2_dir,(0,0,1),)",
"\tST_PARAMETER(STInteger,RF_spoiling,0,0 or 1)", "\t/
ST_CHILDREN /",
"\tST_CHILD(STGradientEchoBlock,Block)", "}", "bool SPGRLoop_1::prepare()
{", "\tBlock->kspace_dir=readout_dir;", "\treturn STLoop::prepare();",
"}",
"", "", "bool SPGRLoop_1::loopRun() {", " if (RF_spoiling) {", "
sequence()->phase_shift=rand()%360;", " }",
"\tBlock->kspace_echo=PE1_dir_PE1+PE2_dir_PE2;", "\treturn
Block->run();",
"}", "", "++++++ END", "", "++++++ CLASS STRoot ++++++", "", "++++++
HEADER", "class STRoot : public STSequence", "{", "public:", "\t/
BEGIN
SEQUENCETREE -- this section generated by SequenceTree -- do not edit
*/",

"\tSPGRLoop PrepLoop;", "\tSPGRLoop *MainLoop;", "\t/ END SEQUENCETREE

this section generated by SequenceTree -- do not edit /", "\t",
"\tSTRoot();", "};", "", "", "++++++ SOURCE", "STRoot::STRoot() {",
"\tST_CLASS(STRoot,STSequence)", "\t/
ST_PARAMETERS /", "\t/
ST_CHILDREN
/", "\tST_CHILD(SPGRLoop,PrepLoop);", "\tST_CHILD(SPGRLoop,MainLoop);",
"}", "", "++++++ END", "", "++++++ USERCLASS SpinLockRF ++++++", "",
"++++++ HEADER", "class SpinLockRF : public STNode {", "public:", "\t/

BEGIN SEQUENCETREE -- this section generated by SequenceTree -- do not
edit
/", "\tSTReal flip_angle_1;", "\tSTReal flip_angle_2;", "\tSTReal
pulse_duration_1;", "\tSTReal pulse_duration_2;", "\tSTInteger
alternating_phase;", "\tSTInteger frequency_offset;", "\tSTInteger
num_sl_pulses;", "\tSTReal inter_pulse_delay;", "\tSTReal time_step;",
"\tSTReal phase;", "\tSTReal frequency;", "\t/
END SEQUENCETREE -- this
section generated by SequenceTree -- do not edit /", "\t", "\t//events",
"\tSTScannerRFPulse *RF_bread;", "\tSTScannerRFPulse *RF_meat;",
"\t/////////////////////////////////////////////////////",
"\tSpinLockRF();", "\tvirtual ~SpinLockRF();", "\tbool initialize();",
"\tbool prepare();", "\tbool run();", "\tdouble duration();", "\tdouble
referenceTime();", "\tVector3 terminalMoment();", "\tVector3
gradientStartTimes(); ", "\tVector3 gradientEndTimes();", "\tdouble
SAR();", "private:", "\tvoid delete_events();", "};", "", "", "++++++
SOURCE", "SpinLockRF::SpinLockRF() {", "\tST_CLASS(SpinLockRF,STNode)",
"\tRF_bread=0;", "\tRF_meat=0;", "\t/
ST_PARAMETERS /",
"\tST_PARAMETER(STReal, flip_angle_1, 90, degrees)",
"\tST_PARAMETER(STReal, flip_angle_2, 360, degrees)",
"\tST_PARAMETER(STReal, pulse_duration_1, 300, microsec)",
"\tST_PARAMETER(STReal, pulse_duration_2, 1000, microsec)",
"\tST_PARAMETER(STInteger, alternating_phase, 0, 0 or 1) ",
"\tST_PARAMETER(STInteger, frequency_offset, 0, Hz)",
"\tST_PARAMETER(STInteger, num_sl_pulses, 10,)", "\tST_PARAMETER(STReal,
inter_pulse_delay, 60, microsec)", "\tST_PARAMETER(STReal, time_step, 10,
microsec)", "\tST_PARAMETER(STReal, phase, 0, degrees)",
"\tST_PARAMETER(STReal, frequency, 0, Hz)", "\t/
ST_CHILDREN _/", "}",
"SpinLockRF::~SpinLockRF() {", "\tdelete_events();", "}", "void
SpinLockRF::delete_events() {", "\tif (RF_bread) delete RF_bread;
RF_bread=0;", "\tif (RF_meat) delete RF_meat; RF_meat=0;", "}", "bool
SpinLockRF::initialize() {", "\tclearChildren();", "\tif (!scanner())
return false;", "\tdelete_events();",
"\tRF_bread=scanner()->allocateRFPulse(this);",
"\tRF_meat=scanner()->allocateRFPulse(this);", "\treturn true;", "}",
"bool
SpinLockRF::prepare() {", "\tif (!RF_bread) return false;", "\tif
(!RF_meat) return false;", "\tif (time_step<=0) return false;", "\tif
(pulse_duration_1<=time_step) return false;", "\tif
(pulse_duration_2<=time_step) return false;", "\tif (!sequence()) return
false;", "\t\t", "\t\tlong N1=(long)(pulse_duration_1/time_step);",
"\t\tlong N2=(long)(pulse_duration_2/time_step);", "\t\t", "\t\tdouble
*data_mag_1=(double *)malloc(sizeof(double)_N1);", "\t\tdouble
_data_phase_1=(double *)malloc(sizeof(double)_N1);", "\t\tdouble
_data_mag_2=(double *)malloc(sizeof(double)_N2);", "\t\tdouble
_data_phase_2=(double *)malloc(sizeof(double)_N2);", "\t\tdouble
sum_re_1=0,sum_re_2=0;", "\t\tdouble sum_im_1=0,sum_im_2=0;", "\t\t{for
(long j=0; j<N1; j++) {", "\t\t\tdouble re=1,im=0;",
"\t\t\tsum_re_1+=re;",
"\t\t\tsum_im_1+=im;", "\t\t\tdata_mag_1[j]=sqrt(re_re+im_im);",
"\t\t\tdata_phase_1[j]=atan2(im,re)/(2_3.1415926535)_360;", "\t\t}}",
"\t\t{for (long j=0; j<N2; j++) {", "\t\t\tdouble re=1,im=0;",
"\t\t\tsum_re_2+=re;", "\t\t\tsum_im_2+=im;",
"\t\t\tdata_mag_2[j]=sqrt(re_re+im_im);",
"\t\t\tdata_phase_2[j]=atan2(im,re)/(2_3.1415926535)_360;", "\t\t}}",
"\t\t//uT * sec * Hz/uT * degrees = degrees ", "\t\tdouble

factor1=sqrt(sum_re_1_sum_re_1+sum_im_1_sum_im_1)_time_step/1.0E6_sequence()->gamma*360/90;",
"\t\tdouble

factor2=sqrt(sum_re_2_sum_re_2+sum_im_2_sum_im_2)_time_step/1.0E6_sequence()->gamma*360/90;",
"\t\t{for (long j=0; j<N1; j++) {", "\t\t\tdata_mag_1[j]/=factor1;",
"\t\t}}", "\t\t{for (long j=0; j<N2; j++) {",
"\t\t\tdata_mag_2[j]/=factor2;", "\t\t}}",

"\t\tRF_bread->setPulse(N1,data_mag_1,data_phase_1,time_step,90,pulse_duration_1/2);",

"\t\tRF_meat->setPulse(N2,data_mag_2,data_phase_2,time_step,90,pulse_duration_2/2);",
"\t\tfree(data_mag_1);", "\t\tfree(data_phase_1);",
"\t\tfree(data_mag_2);", "\t\tfree(data_phase_2);", "\t",
"\tRF_bread->setFlipAngle(flip_angle_1);",
"\tRF_meat->setFlipAngle(flip_angle_2);", "\t", "\tsetModified(false);",
"\treturn true;", "}", "bool SpinLockRF::run() {", "\tif (!RF_bread)
return
false;", "\tif (!RF_meat) return false;", "\tif (!scanner()) return
false;", "\tif (!sequence()) return false;", "", "\tdouble ph=phase;",
"\tVector3 totmom=initialTotalMoment();",
"\tph+=sequence()->phaseAdjustment();",
"\tph+=(totmom.x()_sequence()->getFOVShiftX()",
"\t\t+totmom.y()_sequence()->getFOVShiftY()",

"\t\t+totmom.z()_sequence()->getFOVShiftZ())sequence()->gamma/1.0E6_360;",
"\tRF_bread->setPhase(ph);", "\tRF_meat->setPhase(ph);", "\t",
"\tRF_bread->setFrequency(frequency);",
"\tRF_meat->setFrequency(frequency);", "\t", "", "\t//The excite pulse ",
"\tdouble time_offset=0;",
"\tRF_bread->setStartTime(startTime()+time_offset);", "\tif
(RF_bread->pulseCount()) scanner()->addEvent(RF_bread);",
"\ttime_offset+=pulse_duration_1+inter_pulse_delay;", "", "\t//inner
pulses", "\tfor (int j=0; j<num_sl_pulses; j++) {", "\t\tif
(alternating_phase) {", "\t\t\tif (j%2==0) {",
"\t\t\t\tRF_meat->setPhase(ph+0);",
"\t\t\t\tRF_meat->setFrequency(frequency_offset);", "\t\t\t}",
"\t\t\telse
{", "\t\t\t\tRF_meat->setPhase(ph+180);",
"\t\t\t\tRF_meat->setFrequency(frequency_offset);", "\t\t\t}", "\t\t}",
"\t\tRF_meat->setStartTime(startTime()+time_offset);", "\t\tif
(RF_meat->pulseCount()) scanner()->addEvent(RF_meat);",
"\t\ttime_offset+=pulse_duration_2+inter_pulse_delay;", "\t}", "",
"\t//The
store pulse", "\tRF_bread->setStartTime(startTime()+time_offset);", "\tif
(RF_bread->pulseCount()) scanner()->addEvent(RF_bread);",
"\ttime_offset+=pulse_duration_1+inter_pulse_delay;", "\t", "\treturn
true;", "}", "double SpinLockRF::duration() {", "\tif
((!RF_meat)||(RF_bread)) return 0;", "\treturn pulse_duration_1_2 +
pulse_duration_2_num_sl_pulses + inter_pulse_delay
(num_sl_pulses+1);",
"}", "double SpinLockRF::referenceTime() {", "\treturn 0;", "}", "Vector3
SpinLockRF::terminalMoment() {", "\treturn Vector3();", "}", "", "Vector3
SpinLockRF::gradientStartTimes() {", "\treturn Vector3(0,0,0);", "}",
"Vector3 SpinLockRF::gradientEndTimes() {", "\tdouble dur=duration();",
"\treturn Vector3(dur,dur,dur);", "}", "", "double SpinLockRF::SAR() {",
"\tif ((!RF_bread)||(!RF_meat)) return 0;", "\treturn RF_bread->SAR()_2 +
RF_meat->SAR()_num_sl_pulses;", "}", "", "++++++ END", "++++++ RESOURCES
++++++", "", "", "", "++++++ END RESOURCES ++++++", "", "")
"Writing
/home/jiasen/sequencetree4/bin/../simulator/foundationclasses.h..."
"Writing
/home/jiasen/sequencetree4/bin/../simulator/foundationclasses.cpp.."
"Writing /home/jiasen/sequencetree4/bin/../simulator/customclasses.h..."
"Writing /home/jiasen/sequencetree4/bin/../simulator/customclasses.cpp.."
"Writing
/home/jiasen/sequencetree4/bin/../simulator/createsequence.cpp.."
"Writing
/home/jiasen/sequencetree4/bin/../simulator/loadparametersfile.cpp.."
"Running /bin/sh
"/home/jiasen/sequencetree4/bin/../simulator/compile-linux.sh".."
Running: "/home/jiasen/sequencetree4/bin/simulator_executable1.exe"
("stat",
"/home/jiasen/sequencetree4/bin/../tmp/sequence_parameters_in.txt",
"/home/jiasen/sequencetree4/bin/../tmp/sequence_parameters_out.txt",
"/home/jiasen/sequencetree4/bin/../tmp/simulation_output.dat",
"/home/jiasen/sequencetree4/bin/../tmp/results_output_stat.txt", "-1",
"-1")

Best wishes,
Jia Sen

On Wed, Oct 21, 2015 at 11:01 PM, licheng2002 [email protected]
wrote:

Did you attach the log file? Try to take a look at the simulator
folder,
and delete the temporary object file, i.e. the file with extension
".o".
Then compile the sequence again.

On Wed, Oct 21, 2015 at 10:41 AM, siatjiasen <[email protected]

wrote:

Thank you very much for help.

The tmp folder didn't exist.

I created it manually, then compile SPGR.sts sequence, still:

Simulation finished...
Unexpected problem in simulation, output file does not exist.

I attached the full log file recording the output of building and
running
./st4.

Thank you again.
Best wishes,
Jia Sen


Reply to this email directly or view it on GitHub
<

#3 (comment)

.

Regards!
Cheng Li
Email: [email protected]


Reply to this email directly or view it on GitHub
<
#3 (comment)

.


Reply to this email directly or view it on GitHub
<
https://github.com/magland/sequencetree4/issues/3#issuecomment-150391446>
.

Regards!
Cheng Li
Email: [email protected]


Reply to this email directly or view it on GitHub
#3 (comment)
.

@siatjiasen
Copy link
Author

Hi,

May I suggest to update the install instructions in "Readme.txt" file? The following steps you provided really help me:
Following the steps:

  1. git clone https://github.com/magland/sequencetree4.git
  2. cd sequence4/src
  3. qmake
  4. make
  5. cd ../
  6. mkdir tmp
  7. cd bin
  8. ./st4

Thank you.
Best wishes,
Jia Sen

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants