2014-02-21 4 views
0

Python/프로그래밍에 익숙하지 않은 상태에서 스크립트 작업을하고 있지만 줄 바꿈 주위에 들여 쓰기가 발생했습니다. for line in csv.reader(open(filename), delimiter="\t"): 몇 가지 시도가 있었지만 약간의 도움이 필요했습니다.예기치 않은 들여 쓰기 오류

응답 내용을 설명해 주시겠습니까? 학습 과정에 도움을 주셔서 감사합니다.

#!/usr/bin/python 
import csv 
import pprint 
pp = pprint.PrettyPrinter(indent=4) 
import sys 
import getopt 
import re 

changes = {} 

import argparse 
parser = argparse.ArgumentParser() 

parser.add_argument ("infile", metavar="CSV", nargs="+", type=str, help="data file") 
args = parser.parse_args() 

sample_names = [] 

SIMILARITY_CUTOFF = 95 

# 
# Function that investigates the similarity between two samples. 
# 
# 
def similar_samples(sample_name1, sample_name2): 

    combined_changes = dict() 

    for change, fraction in changes[ sample_name1 ]: 
     if (change not in combined_changes): 
      combined_changes[change] = [] 

     combined_changes[change].append(float(fraction)) 

    for change, fraction in changes[ sample_name2 ]: 
     if (change not in combined_changes): 
      combined_changes[change] = [] 
     combined_changes[change].append(float(fraction)) 


    passed_changes = 0 
    failed_changes = 0 

    for change in combined_changes.keys(): 

     if (len(combined_changes[ change ]) == 1): 
      failed_changes +=1 
      continue 

     sum = 0 
     count = 0 
     for a in combined_changes[ change ]: 

      sum += a 
      count += 1 

      mean = sum/ count 


     for a in combined_changes[ change ]: 
      if (mean > a + 2 or mean < a - 2): 
       failed_changes += 1 
      else: 
       passed_changes += 1 


# print "passed changes: %d, failed changes: %d" % (passed_changes, failed_changes) 


    if (passed_changes * 100/(passed_changes + failed_changes) > SIMILARITY_CUTOFF): 
     print " vs ".join([sample_name1, sample_name2]) + " : Similar samples" 
     return 1 
    else: 
     print " vs ".join([sample_name1, sample_name2]) + " : Different samples" 
     return 0 



#  print "mean %.2f \n" % (sum/ count) 






for filename in args.infile: 
    sample_name = filename 
    #sample_name = re.search("^(.*)\_", filename).group(1) 
    changes[ sample_name ] = [] 
sample_names.append(sample_name) 

    for line in csv.reader(open(filename), delimiter="\t"): 
     for item in line[2:]: 

      if not item.strip(): 
       continue 

      item = item.split(":") 
      item[1] = item[1].rstrip("%") 

      changes[ sample_name].append([line[1]+item[0],item[1]]) 

for i in range(0, len(sample_names)): 
    for j in range(i+1, len(sample_names)): 

     similar = similar_samples(sample_names[ i ], sample_names[ j ]) 


exit() 
+1

파이썬에서'if' 조건을 괄호로 묶지 않아도됩니다. – filmor

+1

이 종류와 같이 구문 오류를 감지하려면 pylint를 사용하십시오. E : 92, 0 : 예기치 않은 들여 쓰기 (구문 오류) –

+2

정말 이상한 컴파일러 오류가 발생하는 경우 해당 줄에서 올 수없는 것처럼 보입니다. 이전 줄을보십시오. 세미콜론, 괄호 등을 다른 언어로 누락 한 경우에도 작동합니다. – RemcoGerlich

답변

1

하나 개 들여 쓰기 더

sample_names.append (sample_name)

이 줄 수 있어야 인용 한 전 라인 내 말은 ...

+0

많은 도움을 주셔서 감사합니다! – user3234810

2

들여 쓰기 오류.

시도 들여 쓰기

sample_names.append(sample_name) 

라인

+0

감사합니다. – user3234810

관련 문제