Python zip function

input: iteratables or containers (list, string) of the same lengths

return value: an iterator with mapped values of ith elements of the iteratables or containers (list, string) 

 

SCRIPT

# initializing lists

name = [ "Manjeet", "Nikhil", "Shambhavi", "Astha" ]

roll_no = [ 4, 1, 3, 2 ]

marks = [ 40, 50, 60, 70 ]

  

# using zip() to map values

mapped = zip(name, roll_no, marks)

  

# converting values to print as a set

mapped = set(mapped)

  

# printing resultant values 

print ("The zipped result is : ",end="")

print (mapped)

 

OUTPUT

The zipped result is : {('Shambhavi', 3, 60), ('Astha', 2, 70), ('Manjeet', 4, 40), ('Nikhil', 1, 50)}

 

SCRIPT: UNZIP

namz, roll_noz, marksz = zip(*mapped)

print ("The unzipped result: \n",end="")

  

# printing initial lists

print ("The name list is : ",end="")

print (namz)

print ("The roll_no list is : ",end="")

print (roll_noz)

print ("The marks list is : ",end="")

print (marksz)

 

OUTPUT: UNZIP

The unzipped result:

The name list is : ('Manjeet', 'Nikhil', 'Shambhavi', 'Astha')

The roll_no list is : (4, 1, 3, 2)

The marks list is : (40, 50, 60, 70)

 

[ref: https://www.geeksforgeeks.org/zip-in-python/]

 

 

'Programming' 카테고리의 다른 글

[python] Passing function with partial arguments  (0) 2019.09.25
[Linux] 메모리 관리  (0) 2018.05.22
[Linux] grep / find 사용하기  (0) 2018.04.26
R 기초  (0) 2018.01.24
[linux][펌] ctags 사용법  (0) 2017.09.26

Use lambda function or wrapper function

ex) 

xval_learning_alg(lambda data, labels: perceptron(data, labels, {"T": 50}), data, labels, k=10)

'Programming' 카테고리의 다른 글

[Python] zip()  (0) 2019.09.25
[Linux] 메모리 관리  (0) 2018.05.22
[Linux] grep / find 사용하기  (0) 2018.04.26
R 기초  (0) 2018.01.24
[linux][펌] ctags 사용법  (0) 2017.09.26

두 종류의 논문을 읽어 보았다.


<P Sethi et al., Translational Bioinformatics and Healthcare Informatics: Computational and Ethical Challenges (2009), Perspectives in Health Information Management>


The interdisciplinary area of bioinformatics, which involves managing, analyzing, and interpreting information from biological
sequences and structures, has opened doors for sophisticated technology that continues to support the
automation and miniaturization of modern instruments that bear large-scale biomedical data.
 


The fundamental challenge for genomics is to determine
how gene variations are linked to a certain disease and, on a broader perspective, to determine how the
interactions of genes vary with environment and lifestyle.
  

 

New data models and structures that can integrate genomic data in EHRs as well as interface
mechanisms that can link genotype-phenotype data
are needed to realize the benefits of new genome-based technologies for the benefits of patients.
  


We summarize our key conclusions as follows:

  • Significant strides have already been achieved in genomic- and proteomic-level data mining
    methods. These accomplishments have promoted the understanding of the genes associated with
    certain diseases and the identification of new target drugs.
  • A number of international and national workgroups and committees are promoting the inclusion
    of genetic information in EHRs.
    These efforts will have a broad impact on personalized medicine.
     
  •  Congress has passed GINA to protect citizens against discrimination based on their genetic information.
  • The adoption of sound privacy and security policies is imperative to protect the personalized
    nature of genomic data. The current incarnation of GINA has loopholes that may bar citizens
    from obtaining their genetic tests and consequently affect biomedical research.
  • Standards that enable interoperability standards among different formats of health records for
    genetic and clinical data
    are needed to realize the benefits of new genome-based technologies.
  • A collaborative research agenda for translational bioinformatics and healthcare informatics
    should be prioritized. Such a synergistic approach will promote faster and more advanced
    breakthroughs in medicine and healthcare.

Approximately 10 percent of pharmacy labels already contain information on how the drug will respond
to an individual‘s genetic variation.

Involving genetic data in addition to clinical data for medical decision making will lead to a paradigm shift toward evidence-based research—a realization for which scientists are hoping.

 

<V Kuznetsov et al., How bioinformatics influences health informatics: usage of biomolecular sequences, expression profiles and automated microscopic image analyses for clinical needs and public health (2013), Health Information Science and Systems

>

It remains a sad fact that many, if not most biomolecular mechanisms that translate the human genomic information into phenotypes are not known and, thus, most of the molecular and cellular data cannot be interpreted in terms of biomedically relevant conclusions.  


The temperate view suggests that biomedical applications that rely either on the comparison of biomolecular sequences and/or on the already known biomolecular mechanisms have much greater chances to enter clinical practice soon.  


Since the analysis of heterogeneous biomolecular data in context with clinical data will be increasingly critical, the role of
bioinformatics and computational biology will grow correspondingly in this process.
  

-> Clinical data 를 biomolecular data와 함께 분석하는 것이 중요할 것 같다.


The current deluge of quantified data is really a game changer and puts theoretical analysis detached from experimentation into general importance for the field for the first time.  


In fact, histologically similar cancers do not necessarily represent the same disease due to differences in the biomolecular mechanisms leading finally to similar clinical outcomes.  Consequently, among the list of 10 most important human diseases, the pharmacotherapy efficacy of cancer is very low except for a few rare subtypes.


So, it is the task of future bioinformatics projects to develop accurate and flexible solutions for clinical applications.  


Worldwide, cancers are responsible for one in eight deaths.  


Current clinical oncology needs 

(i) improvement of disease classification, 

(ii) increased specificity and sensitivity of early detection instruments/molecular diagnostics systems, 

(iii) improved disease risk profiling/prediction, 

(iv) improvement of cancer therapeutic methods including next generation drugs with higher specificity and lowered toxicity (ideally, inhibitors of the exact biomolecular mechanisms that drive individual cancer growth) and generally more stratified or even personalized therapies, 

(v) understanding of the anticancer immune response, 

(vi) adequate monitoring and rehabilitation during post-treatment recovery period and 

(viii) patientssocial adaptation.  


For practical purposes, it is sufficient to show a close correlation between the occurrence of the biomarker and the cancer type and development in model systems and in clinical trials. Yet, the likelihood of the biomarker actually being associated with the cancer subtype considered is dramatically increased if the biomarker plays a role in the biomolecular mechanisms driving cancer and not just in some secondary or tertiary effects of cancer growth. However, discovery of reliable diagnostic, prognostic and drug response cancer biomarkers faces big challenges due to patient heterogeneity, small sample sizes, and high data noises.  


Bioinformatics findings can be translated into innovations that are adopted by the healthcare system and biomedical industry in form of diagnostic kits, analysis programs, etc. after the validation in both bench and clinical studies. In this article, we present several examples of how clinically relevant conclusions can be drawn from sequencing, expression profiling or histopathological bioimaging data with computational biology algorithms.  


Unfortunately, considerable basic research is still necessary to make full use of the potential opportunities that are associated with the increasing availability of high-throughput technologies such as genome sequencing, mainly since most of the genomes hidden functional information is not known; the understanding of biomolecular mechanisms that translate genotype into phenotype is limited. But the progress in this field is uneven; pathogen sequencing can already provide important insights in contrast, for example, to sequencing of cancer samples.  


Similarly, analyzing the geographic, even better spatio-temporal distribution of disease occurrences can provide hints for environmental influences.  Generally, going beyond the patient-centric approach and the linking of biomolecular and clinical data of populations with geographic information, data on food and environment, etc. will be an important source for improving public health, for stopping epidemics, for finding sources of food or environmental poisoning and for improving life styles.  

'Bioinfo Articles' 카테고리의 다른 글

[Nature article] The clinical code-breakers  (0) 2018.12.19

https://www.nature.com/articles/d41586-018-06958-1


Current trend of personalized medicine in clinics


“We need to get to where genomics is a part of health care,” says Medne, “as opposed to now, where it’s a part of disease.”

'Bioinfo Articles' 카테고리의 다른 글

Bioinformatics & Healthcare  (0) 2018.12.26

1. top

process 별 메모리 사용량 확인 가능

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

    * PID : 프로세스 ID (PID)
    * USER : 프로세스를 실행시킨 사용자 ID
    * PRI : 프로세스의 우선순위 (priority)
    * NI : NICE 값. 일의 nice value값이다. 마이너스를 가지는 nice value는 우선순위가 높음.
    * VIRT : 가상 메모리의 사용량(SWAP+RES)
    * RES : 현재 페이지가 상주하고 있는 크기(Resident Size)
    * SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합.
    * S : 프로세스의 상태 [ S(sleeping), R(running), W(swapped out process), Z(zombies), D(uninterruptible sleep), T(traced or stopped) ]
    * %CPU : 프로세스가 사용하는 CPU의 사용율
    * %MEM : 프로세스가 사용하는 메모리의 사용율
    * COMMAND : 실행된 명령어


출처 : http://faq.hostway.co.kr/?mid=Linux_ETC&page=7&document_srl=1441



2. Storage 확인

전체 storage : df -h

user별 storage (폴더 하위 storage확인) : du -sh (-s : only print the total sum)


'Programming' 카테고리의 다른 글

[Python] zip()  (0) 2019.09.25
[python] Passing function with partial arguments  (0) 2019.09.25
[Linux] grep / find 사용하기  (0) 2018.04.26
R 기초  (0) 2018.01.24
[linux][펌] ctags 사용법  (0) 2017.09.26

grep -nrw --include=\*.{py,R} "pattern_to_find" ./

-r             : recursively find

--include   : files to include

--exclude   : files to exclude

-n                : print with line number

-i                 : case-insensitive

-w                : only show word match

-c                 : count the matches in file 

-l                  : only show matching files




> find             : output every file and folder into stdout


===tests======================================


-type d[f]         : find directory / file

-name     "*.sra"  : find file name of the format

-iname    "*.SRA"  : case insensitive name

-path     "*.sra"  : *.sra 패턴이 filename 뿐만 아니라 path에도 적용됨

-and  = -a

-or   = -o         : ex) find -name "*.sra" -or -name "*.fa"

-not  = \!         : ex) find -not -name "*.bam"

   여기서 operation 순서를 지정해 주려면 () 대신 \( \) 사용

   ex) find \( -name "*.sra" -type f \) -or -type d

-maxdepth 1        : 1일 시 현재 directory

-depth             : find의 결과 list에서 folder의 content가 folder보다 먼저 나오게 함



===actions====================================


-print                 : default option

-delete                : 해당 파일/폴더를 삭제

-exec command {} \;    : find 의 결과가 {}의 자리에 들어가서 command 가 실행된다.


출처: https://math2001.github.io/post/bashs-find-command/





'Programming' 카테고리의 다른 글

[python] Passing function with partial arguments  (0) 2019.09.25
[Linux] 메모리 관리  (0) 2018.05.22
R 기초  (0) 2018.01.24
[linux][펌] ctags 사용법  (0) 2017.09.26
[python] .pyc 파일은 무엇일까?  (0) 2017.09.26

0. Running R script

$ Rscript a.R    # command line output

$ R CMD BATCH a.R    # a.Rout 생성


1. Data frame

*데이터에 대한 정보 얻기

ls()                    #objects in working env

str(mydata)        #structure 보여줌

levels(mydata$v1)    #factor v1의 level을 보여줌

dim(object)            #object의 차원

class(object)            #object의 class (numeric, matrix, data frame, etc)

head(mydata, n=10)    #첫 10개 row를 보여줌

tail(mydata, n=5)        #끝 5개 row를 보여줌

*데이터 다루기

cbind(M,v): 서로 다른 column끼리 가로로 붙임

rbind(M,v): 서로 다른 row끼리 세로로 붙임

data.frame(col_name=integer(), col_name2=double()...) : 빈 data frame 만들기

colnames(m2) <- paste("Sub", colnames(m2), sep = "_")     # column name에 이어 붙이기

2. File IO

data <- read.table(file_name, header = T)

write.table( data, file_name, colname = T, rowname = F, append = F)

save( objects, to, save, file = 'file_dir.rda')    # save workspace : http://rfunction.com/archives/420


3. R functions

myfunction <- function(arg1, arg2, ... ){
statements
return(object)
}


4. Loop in R

for (i in list){

blah blah blah

}


5. Statistics

quantile( data, c(0.77,0.99,...) )     # quantile/precentile 계산

'Programming' 카테고리의 다른 글

[Linux] 메모리 관리  (0) 2018.05.22
[Linux] grep / find 사용하기  (0) 2018.04.26
[linux][펌] ctags 사용법  (0) 2017.09.26
[python] .pyc 파일은 무엇일까?  (0) 2017.09.26
[python] os 와 sys 모듈  (0) 2017.08.07

http://bowbowbow.tistory.com/15

흔히 "python 은 interpreted language다"라고들 배운다. 그러나 이 문장은 틀린 문장이다. 특정 프로그래밍 언어는 interpretor를 사용하거나, compiler를 사용하거나, 둘 다 사용하여 실행될 수 있다.


"Python"으로 알려진 일반적인 버전은 사실 CPython으로써, 실행될 경우 .pyc의 확장자를 가진 bytecode로 compile된다. 그 후 이 .pyc 파일은 interpreter로 알려진 virtual machine (CPython VM, Java VM 등)에 의해 기계어로 interpret된다.


이는 Java와 유사한 방식으로, python또한 interpretor와 compiler를 함께 사용한다고 볼 수 있다. Java와의 차이점은 CPython의 compile은 매우 간략하여 Java compiler보다 오류에 느슨하다는 점이다.


[출처] https://stackoverflow.com/questions/2998215/if-python-is-interpreted-what-are-pyc-files


1. sys 모듈

-sys.argv: 입력한 parameter[들]

ex) $xxxx.py foo1 foo2 --> sys.argv == [xxx.py, foo1, foo2]


2. os 모듈

-chdir('new/directory') : change directory to new directory

-getcwd() : get current working directory

-os.access(path, mode) : path의 존재/읽기/쓰기/실행 여부를 boolean으로 반환

modes (이 변수들도 os module의 일부이므로 import해야함)

1) F_OK : 존재 여부

2) R_OK : 읽기 가능 여부

3) W_OK : 쓰기 가능 여부

4) X_OK : 실행 가능 여부


- listdir('directory') : directory에 존재하는 파일 및 하위 디렉토리 이름을 string 리스트로 반환

- mkdir('path') : path라는 경로를 가지는 directory 생성

- mkdirs('high/to/low/dir') : high/to/low/dir라는 경로를 가지는 directory  생성

- remove('path/to/file') : 파일 삭제

- os.removedir('dir') : 빈 디렉토리 삭제

- os.removedirs('high/to/low/dir') : 디렉토리를 연쇄적으로 삭제\

- os.rename(old, new) : 파일 이름 수정

- os.renames(old, path/to/new) : 파일 이름 수정. 필요한 디렉터리 자동 생성

- popen('shell command', 'r') : shell command를 수행하고 파이프를 연다. from os import * 할 경우에는 popen import안됨

- system('shell command') : shell command 수행

- startfile('file/name') : os에서 지정된 프로그램으로 file/name 수행



[출처] http://devanix.tistory.com/304

쉘 스크립트를 작성하기 위해서는 셸 문법을 숙지하고 있어야 한다. 셸 문법이 어렵다면 파이썬으로 작성된 프로그램에서 쉘 명령어를 사용할 수도 있다.


1. 쉘 명령어 실행

import os

os.system('shell command')


2. 출력 결과 저장

import os

result = os.popen('shell command').read()


[출처] http://brownbears.tistory.com/197

http://dbastory.tistory.com/entry/bash-shell-%EB%AA%85%EB%A0%B9%EC%96%B4%ED%8E%8C


1. 스크립트 시작하기

vim등 텍스트 편집기 오픈

>

#!/bin/bash    #스크립트 번역에 bash 프로그래밍 언어를 사용하라는 뜻. 번역에 사용할 프로그램의 위치를 표시

echo "Hello World"

>

$chmod +x ./script_above.sh

$./script_above

Hello World


2. 변수

2-1. assignment : var=value    #공백 없이!

2-2. retrieve value : $var

*quotation mark안에서 사용가능    ex) echo "I have $var" --> I have value


3. if 문

#기본 syntax

if test -option file

then

#do something

elif test -option file

#do something

else

#do something

fi


#이렇게 쓸 수도 있다.

if [ -option file ]; then    #test 대신 공백+대괄호


*test -option들 (file에 대해)

-d: 파일이 디렉토리인지

-e: 파일이 존재하는지

-f: 파일이 정규 파일인지??

-g: 파일이 SGID 퍼미션을 가졌는지??

-r: 파일이 읽기 가능인지

-s: 파일이 빈 파일이 아닌지

-w: 파일이 쓰기 가능인지

-x: 파일이 실행 가능인지

-le: 


4. while문

#기본 syntax

while true; do

#do something

done


#true보다 :를 사용하는 것이 훨씬 빠르다.

while :; do

#do something

done


#조건문

while [ "$x" -le 10 ]; do    #x의 값이 10보다 작으면

#do something

done


*test -option들 (숫자비교)

x -eq y: x==y

x -ne y: x!=y

x -gt y: x>y

x -le y: x<y

*test -option들 (문자열비교)

x = y : x==y

x != y : x!=y

-n x : x!=null

-z x : x==null


5. argument passing

FILE1=$1

args=( "$@" )

for file in "$@"; do some_job; done

for (( i=0; i < $# ; i++)){

s=${args[$i]}

echo $s

}



[출처] http://coffeenix.net/doc/shell/introbashscript.htm

1. bash shell 에서는 오직 integer 계산만 할 수 있다.

$var1=3

$echo var1

3


2. float 계산의 경우 (여러 방법이 있으나) bc(best calculator)를 사용할 수 있다.

$var1=1

$var2=5

$echo "scale=3; $var1/$var2" | bc

.200

$c=$(echo "scale=3; $var1/$var2" | bc)

$echo c

.200

커서 이동

-ctrl+b: Page up

-ctrl+f: Page down

-gg or 1G: 문서 처음으로

-G: 문서 마지막 행으로 

-nG: 문서의 n번째 행으로

-^: 행의 첫번째 글자로

-$: 행의 마지막 글자로



삭제

-dd: 커서가 있는 행을 삭제


복사/붙여넣기

-Y: 커서가 있는 한 행 복사

-nY: 커서 위치부터 n행 복사

-p: 붙여넣기

-np: n번 붙여넣기



블록 지정

-v: 블록 지정

블록 지정 중 명령

-y: 블록 복사

-d: 블록 지우기

-<: 내어쓰기 (tab 제거)

->: 들여쓰기 (tab)



탐색 및 치환

-/word: 탐색

-:%s/old/new/g : 문서 전체에서 old->new 치환

-:%s/old/new/gc : 문서 전체에서 old->new 확인하며 치환

-:g/pattern/s/old/new/g : pattern이 있는 모든 행에서 old->new 치환



실행 취소/다시 실행

-u : 실행 취소

-ctrl+R : 다시 실행


[출처]http://gyuha.tistory.com/157 by 신규하

ls를 했을 때 bash가 띄워 주는 디렉토리 및 파일의 색상을 변경해주고 싶다면 홈 디렉토리의 .bashrc 파일을 바꾸어 주면 된다.


0. 현재 색상 설정 확인하기

$set | grep $LS_COLORS


1. 기본 색상으로 설정하기

홈 디렉토리의 .bashrc 파일에 다음 라인을 추가한다.


export LS_OPTIONS='--color=auto'

eval "`dircolors`"

alias ls='ls $LS_OPTIONS' 


2. 커스텀 설정으로 변경

.bashrc 파일에 다음을 추가합니다.

LS_COLORS=$LS_COLORS:'di=46:ex=96' ; export LS_COLORS


밑줄 친 부분에 사용자가 설정하고 싶은 색깔에 따라 다른 값을 입력해 주면 된다.

Blue = 34
Green = 32
Light Green = 1;32
Cyan = 36
Red = 31
Purple = 35
Brown = 33
Yellow = 1;33
white = 1;37
Light Grey = 0;37
Black = 30
Dark Grey= 1;30

색깔 뿐만 아니라 배경, 굵기 등 스타일도 지정해줄 수 있다.

0   = default colour
1   = bold
4   = underlined
5   = flashing text
7   = reverse field
40  = black background
41  = red background
42  = green background
43  = orange background
44  = blue background
45  = purple background
46  = cyan background
47  = grey background
100 = dark grey background
101 = light red background
102 = light green background
103 = yellow background
104 = light blue background
105 = light purple background
106 = turquoise background

추가 색상

31  = red
32  = green
33  = orange
34  = blue
35  = purple
36  = cyan
37  = grey
90  = dark grey
91  = light red
92  = light green
93  = yellow
94  = light blue
95  = light purple
96  = turquoise

여러 스타일을 동시에 적용하려면 ; 으로 구분하여 적어준다. ex) di=1;34

색상을 적용시킬 수 있는 항목은 다음과 같다.

di = directory
fi = file
ln = symbolic link
pi = fifo file
so = socket file
bd = block (buffered) special file
cd = character (unbuffered) special file
or = symbolic link pointing to a non-existent file (orphan)
mi = non-existent file pointed to by a symbolic link (visible when you type ls -l)
ex = file which is executable (ie. has 'x' set in permissions).
*.rpm = files with the ending .rpm


[출처] https://askubuntu.com/questions/466198/how-do-i-change-the-color-for-directories-with-ls-in-the-console


[출처] http://unabated.tistory.com/entry/Bash-Color-Chart

ssh를 사용한 서버 접속
$ssh username@hostaddress.ac.kr
*접속 종료: $exit

scp로 파일 전송하기
로컬 -> 서버
$scp [option] 현재파일주소 username@hostaddress.ac.kr:옮길파일위치[directory까지]
서버 -> 로컬
$scp [option] username@hostaddress.ac.kr:현재파일주소 옮길파일위치[directory까지]

*options
        -P ####: 포트번호
        -p : 원본파일 수정/사용시간 및 권한을 유지
        -r : 하위 디렉토리 및 파일 모두 복사

'Programming' 카테고리의 다른 글

[linux] bash에서 계산하기, bash calculation  (0) 2017.08.04
[linux] 간단한 vim조작법  (0) 2017.08.04
[linux] bash ls 색상 바꾸기  (0) 2017.08.04
[linux]파일 찾기 find  (0) 2017.08.03
executable file 만들기  (0) 2017.08.03

1. 파일명 검색

$find [/path/to/root] -name '*.py' [-ls] [-type d]

*path를 쓰지 않을 경우 현재 디렉토리에서 검색

*-ls를 붙일 경우 ls 형식으로 출력됨

*-type d 는 디렉토리를 검색할때 사용


[출처]http://mwultong.blogspot.com/2006/10/find-linux-file-find-command.html

  1.  chmod: Change access permissions, change mode. 

$chmod [option] [mode] [file]

*mode

symbolic 과 numeric mode가 있으나 symbolic이 사용하기 더 편함

- syntax: [ugoa] [[+-=][rwxXstugo]][...]

-r: read

-w: write

-x: execute

-X: execute only if the file is a directory

-s: set user or group ID on execution

* For more information, visit: https://ss64.com/bash/chmod.html

* example

$chmod a+x test: test 에 대한 execute permission을 모두에게 부여


2. PATH

executable file을 실행하려면 해당 파일이 있는 디렉토리에 가서 ./executable 로 실행하거나 linux의 PATH에 해당 디렉토리를 추가해 주어야 한다.


PATH란 무엇인가? linux에서 command line에 실행 명령이 들어왔을 때 executable을 찾는 위치이다.

(PATH is an environmental variable in Linux and other Unix-like operating systems that tells the shell which directories to search for executable files (i.e., ready-to-run programs) in response to commands issued by a user. It increases both the convenience and the safety of such operating systems and is widely considered to be the single most important environmental variable.[출처] http://www.linfo.org/path_env_var.html)


현재 자신의 PATH는 다음과 같이 확인해 볼 수 있다.

$echo $PATH


executable file을 PATH에 지정된 위치로 옮겨주는 것이 좋으나, ~/.profile 을 만들어 그 안에 PATH를 추가해 주어도 된다. 다음과 같은 line을 넣어주면 된다.

PATH = $PATH:$HOME/path/to/directory



http://german.kr/papers/paper_bibliography.htm

티스토리 블로그 첫 글.

지금은 많이 부족하지만, 하루하루 조금씩 더 나아가면 됩니다. 멈추지 않고 앞으로!

+ Recent posts