juliakorea / talks

게시판
https://github.com/juliakorea/talks/wiki/Welcome
14 stars 5 forks source link

또 질문 들고 왔어요ㅠㅠ #8

Closed 2339yey closed 4 years ago

2339yey commented 4 years ago

아무래도 여기에 저혼자 계속 질문올리는 것 같아서 좀 창피하지만 julia 코드 배우려면 창피를 무릅쓰고라도 질문을 올려야 할 것 같아서 염치 불구하고 올려요ㅠㅠ https://docs.julialang.org/ 에 들어가서 항상 읽으면서 코드 짜고 "이번엔 무리없이 성공이다" 근자감으로 코드 실행시켰더니 돌아오는 건 또 에러네요... Matlab이나 R 코딩하면서 한번도 못느껴본 좌절감을 Julia 배우면서 느끼는 중입니다ㅠㅠ 한국은 교수님들은 프로그래밍 처음시작할 때 이런이런 식으로 하는 거다라고 예시라도 보여주셨었는데... 여기 교수님은 "이거 해놔!"라고만 하고 하나부터 열까지 혼자 찾아가면서 해야하는 시스템이라 Julia 같은 경우는 파이썬이나 R, Matlab처럼 예제 코드도 많이 없고 기껏해야 배울 수 있는 곳이 julialang뿐인 것 같아서 진짜 돌아버리기 일보직전입니다ㅠㅠ 생물학 배우러 와서 코딩만 주구장창 하는 것 같아서 현타가 거하게 오고 맨땅에 헤딩하는 것 같아서 좌절감만 늘어가지만 일단 졸업은 해야겠기에 배우는 중입니다.ㅠㅠ 너무 개인적인 사연을 길게 늘어놓은 것 같은데 에러와 제 코드 함께 첨부하였는데 봐주시면 정말 감사하겠습니다!ㅠㅠ

LoadError: Failed to precompile Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80]

error(::String) at error.jl:33 compilecache(::Base.PkgId, ::String) at loading.jl:1283 _require(::Base.PkgId) at loading.jl:1024 require(::Base.PkgId) at loading.jl:922 require(::Module, ::Symbol) at loading.jl:917

using Plots
using DifferentialEquations

function MAPKK(t,m,dm,p,k,ATP)
    dm[1] = -k[1]*m[1]*m[10]*ATP+p[1]*m[2]
    dm[2] = k[1]*m[1]*m[10]*ATP-k[2]*m[2]*ATP+p[2]*m[3]-p[1]*m[2]
    dm[3] = k[2]*m[2]*ATP-p[2]*m[3]
    dm[4] = -k[3]*m[4]*m[2]*ATP+p[3]*m[5]
    dm[5] = k[3]*m[4]*m[2]*ATP-k[4]*m[5]*ATP+p[4]*m[6]-p[3]*m[5]
    dm[6] = k[4]*m[5]*m[2]*ATP-p[4]*m[6]
    dm[7] = -k[5]*m[7]*m[6]*ATP+p[5]*m[8]
    dm[8] = k[5]*m[7]*m[6]*ATP-k[6]*m[8]*ATP+p[6]*m[9]-p[5]*m[8]
    dm[9] = k[6]*m[8]*m[6]*ATP-p[6]*m[9]
    end

k[1]=0.0001
k[2]=1.0
k[3]=0.0001
k[4]=0.0001
k[5]=0.01
k[6]=0.01

p[1]=0.000001
p[2]=0.000001
p[3]=1.0
p[4]=1.0
p[5]=1.0
p[6]=1.0

m[1]=10000.0
m[2]=0.0
m[3]=0.0
m[4]=10000.0
m[5]=0.0
m[6]=0.0
m[7]=10000.0
m[8]=0.0
m[9]=0.0
m[10]=0.0

ATP=1.0

timespan = (0.0, 20.0, 0.001)

prob = ODEProblem(MAPKK,timespan,m,dm,p,k,ATP)
sol = solve(prob)
plot(sol)
wookay commented 4 years ago

전혀 부끄러워 할 것 없습니다. 😄 Plots 설치가 제대로 안됐는데 아래 명령을 Julia REPL에서 입력하고 결과를 알려주세요. 아래 명령 전체를 긁어서 복사해서 Julia REPL에 붙여 놓으면 prompt pasting이 됩니다

julia> using Pkg

julia> Pkg.status("Plots")

julia> versioninfo()
wookay commented 4 years ago

생물학이면 https://biojulia.net/ 즐겨찾기 하시면. http://openlook.org/wp/ 여기도.

2339yey commented 4 years ago

답변 감사드려요!! 아래 붙여넣었더니 이렇게 뜨네요ㅠㅠ Stacktrace:

julia> using Pkg

julia> Pkg.status("Plots") Status C:\Users\Stella\.julia\environments\v1.3\Project.toml [91a5bcdd] Plots v0.28.1

julia> versioninfo() Julia Version 1.3.0 Commit 46ce4d7933 (2019-11-26 06:09 UTC) Platform Info: OS: Windows (x86_64-w64-mingw32) CPU: Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-6.0.1 (ORCJIT, skylake) Environment: JULIA_EDITOR = "C:\Users\Stella\AppData\Local\atom\app-1.41.0\atom.exe" -a JULIA_NUM_THREADS = 4

wookay commented 4 years ago
julia> using Pkg
julia> Pkg.update()
julia> Pkg.rm("Plots")
julia> GC.gc()
julia> Pkg.add("Plots")

우선은 위를 긁어서 Plots를 다시 설치해 보세요.

2339yey commented 4 years ago
julia> using Pkg
julia> Pkg.update()
julia> Pkg.rm("Plots")
julia> GC.gc()
julia> Pkg.add("Plots")

우선은 위를 긁어서 Plots를 다시 설치해 보세요.

그래도 같은 오류가 떠요ㅠㅠ error(::String) at error.jl:33 compilecache(::Base.PkgId, ::String) at loading.jl:1283 _require(::Base.PkgId) at loading.jl:1024 require(::Base.PkgId) at loading.jl:922 require(::Module, ::Symbol) at loading.jl:917

wookay commented 4 years ago
julia> Pkg.build("Plots", verbose=true)

흠.. 이 빌드 결과 좀 알려주세요.

2339yey commented 4 years ago
julia> Pkg.build("Plots", verbose=true)

흠.. 이 빌드 결과 좀 알려주세요.

아까 뜨던 오류들은 이제 사라지고 새로운 오류가 뜨네요ㅠㅠ k 값 멀쩡히 잘 정의 되어 있는데 왜 이런 오류가 뜰까요??ㅠㅠ

ERROR: LoadError: UndefVarError: k not defined Stacktrace: [1] top-level scope at C:\Users\Stella\Desktop\TT\EZ.jl:16 in expression starting at C:\Users\Stella\Desktop\TT\EZ.jl:16

wookay commented 4 years ago

빌드로 해결되었어도 나중에 다른 사람들을 위해 위 빌드 결과는 여기에 알려주시고요. 위의 코드를 참고한 사이트가 있으면 알려주시면 좋습니다.

2339yey commented 4 years ago

빌드로 해결되었어도 나중에 다른 사람들을 위해 위 빌드 결과는 여기에 알려주시고요. 위의 코드를 참고한 사이트가 있으면 알려주시면 좋습니다. 빌드 결과가 이걸 말하는게 맞나요??

WARNING: replacing module Anon. [ Info: Downloading https://github.com/JuliaIO/x265Builder/releases/download/v3.0.0-static/x265Builder.v3.0.0.x86_64-w64-mingw32.tar.gz to C:\Users\Stella.julia\packages\FFMPEG\bkWgb\deps\usr\downloads\x265Builder.v3.0.0.x86_64-w64-mingw32.tar.gz... WARNING: replacing module Anon. [ Info: Downloading https://github.com/JuliaIO/FFMPEGBuilder/releases/download/v4.1.0/FFMPEG.v4.1.0.x86_64-w64-mingw32.tar.gz to C:\Users\Stella.julia\packages\FFMPEG\bkWgb\deps\usr\downloads\FFMPEG.v4.1.0.x86_64-w64-mingw32.tar.gz... Building Plots ─→ C:\Users\Stella\.julia\packages\Plots\AXUqs\deps\build.log false

2339yey commented 4 years ago

빌드로 해결되었어도 나중에 다른 사람들을 위해 위 빌드 결과는 여기에 알려주시고요. 위의 코드를 참고한 사이트가 있으면 알려주시면 좋습니다. cap atp

이 kinase cascade를 만들려고 해서 비슷한 코드가 깃허브에 있는것 같아서 https://github.com/varnerlab/HL60_TF_model_JuPOETs 이 링크를 참고해서 만들었습니다....완전 수준이 다르긴 하지만요ㅠㅠ

2339yey commented 4 years ago

빌드로 해결되었어도 나중에 다른 사람들을 위해 위 빌드 결과는 여기에 알려주시고요. 위의 코드를 참고한 사이트가 있으면 알려주시면 좋습니다.

코드에 멀쩡히 k가 잘 정의되어 있는데 왜 k가 not definied라고 뜨는 걸까요??ㅠㅠ

wookay commented 4 years ago

k[1] 앞에

m, dm, p, k = zeros(10), zeros(9), zeros(6), zeros(6)

이런 식으로 초기화를 해보세요.

2339yey commented 4 years ago

k[1] 앞에

m, dm, p, k = zeros(10), zeros(9), zeros(6), zeros(6)

이런 식으로 초기화를 해보세요.

전부 Float64로 타입이 같은데 메소드가 매칭이 안된다고 뜨는 경우는 왜 그런걸까요?? LoadError: MethodError: no method matching ODEProblem(::typeof(MAPKK), ::Tuple{Float64,Float64,Float64}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Float64) Closest candidates are: ODEProblem(!Matched::DiffEqBase.AbstractODEFunction, ::Any, ::Any, ::Any...; kwargs...) at C:\Users\Stella.julia\packages\DiffEqBase\E16PL\src\problems\ode_problems.jl:72 ODEProblem(::Any, ::Any, ::Any, ::Any; kwargs...) at C:\Users\Stella.julia\packages\DiffEqBase\E16PL\src\problems\ode_problems.jl:76 ODEProblem(::Any, ::Any, ::Any) at C:\Users\Stella.julia\packages\DiffEqBase\E16PL\src\problems\ode_problems.jl:76 in expression starting at C:\Users\Stella\Desktop\TT\EZ.jl:47 top-level scope at EZ.jl:47

wookay commented 4 years ago

이 부분은

prob = ODEProblem(MAPKK,timespan,m,dm,p,k,ATP)

우선은 differential equations 자료를 보면서 해당 패키지에 대해 익숙해 지는게 좋을 것 같습니다. 작게 돌아가는 프로그램부터 따라하면서 함수와 모듈, 패키지 사용에 대해 알아가보세요.

그리고 ODE, 생물학 분야는 다른 전공자님께서 도와주셔야 할 듯 해요. 😭

2339yey commented 4 years ago

이 부분은

prob = ODEProblem(MAPKK,timespan,m,dm,p,k,ATP)

우선은 differential equations 자료를 보면서 해당 패키지에 대해 익숙해 지는게 좋을 것 같습니다. 작게 돌아가는 프로그램부터 따라하면서 함수와 모듈, 패키지 사용에 대해 알아가보세요.

그리고 ODE, 생물학 분야는 다른 전공자님께서 도와주셔야 할 듯 해요. 😭

보내주신 유트브 링크 보면서 코드를 아래와 같이 수정해서 에러없이 플롯은 성공했는데....plot이 된 그래프가 뭔가 이상해요.....ㅠㅠ idontknow

using Plots
using DifferentialEquations

function MAPKK(dm,m,t,p)
    dm[1] = -0.0001*m[1]*m[10]*1.0+0.000001*m[2]
    dm[2] = 0.0001*m[1]*m[10]*1.0-1.0*m[2]*1.0+0.000001*m[3]-0.000001*m[2]
    dm[3] = 1.0*m[2]*1.0-0.000001*m[3]
    dm[4] = -0.0001*m[4]*m[2]*1.0+1.0*m[5]
    dm[5] = 0.0001*m[4]*m[2]*1.0-0.0001*m[5]*1.0+1.0*m[6]-1.0*m[5]
    dm[6] = 0.0001*m[5]*m[2]*1.0-1.0*m[6]
    dm[7] = -1.0*m[7]*m[6]*1.0+1.0*m[8]
    dm[8] = 0.01*m[7]*m[6]*1.0-0.01*m[8]*1.0+1.0*m[9]-1.0*m[8]
    dm[9] = 1.0*m[8]*m[6]*1.0-1.0*m[9]
    end

m0=[10000.0;0.0;0.0;10000.0;0.0;0.0;10000.0;0.0;0.0;0.0]

tspan = (0.0,20.0)

prob = ODEProblem(MAPKK,m0,tspan,0.001)
sol = solve(prob)
plot(sol)