나는 아래 Newick 형식으로 작성된 나무이며, 하나 개의 항목으로 구성된 파이썬에서 목록이 :이 아래와 같이 나타납니다사용 파이썬은 Newick 형식에서 지점 길이를 추출
['(BMNH833953:0.16529463651919140688,(((BMNH833883:0.22945757727367316336,(BMNH724182a:0.18028180766761139897,(BMNH724182b:0.21469677818346077913,BMNH724082:0.54350916483644962085):0.00654573856803835914):0.04530853441176059537):0.02416511342888815264,(((BMNH794142:0.21236619242575086042,(BMNH743008:0.13421900772403019819,BMNH724591:0.14957653992840658219):0.02592135486124686958):0.02477670174791116522,BMNH703458a:0.22983459269245612444):0.00000328449424529074,BMNH703458b:0.29776257618061197086):0.09881729077887969892):0.02257522897558370684,BMNH833928:0.21599133163597591945):0.02365043128986757739,BMNH724053:0.16069861523756587274):0.0;']
트리 형식을 :
나는 목록 항목을 통해보고 0 (또는 < 예를 들어 0.001)의 지점 길이에 의해 결합되어있는 ID를 (BMNHxxxxxx가) (빨간색으로 강조 표시) 반환 코드를 작성하는 것을 시도하고있다. 내가 같은 정규식을 사용하는 방법에 대한 생각 :
항목 A가 될 다른 StackOverflow의 답변에서 가져온으로JustTree = []
with JustTree as f:
for match in re.finditer(r"(?<=Item\sA)(?:(?!Item\sB).){50,}", subject, re.I):
f.extend(match.group()+"\n")
':'분기 길이가 항상 후 나타나는 : 및 항목 B는이 될 것이다 ','나 ')'또는 ';' 이 세 문자로 그것을 구분하지만, Im은 이것을 수행하는 정규 표현식에서 충분히 경험하지 못했습니다.
이 경우 분기 길이 0을 사용하면 [ 'BMNH703458a', 'BMNH703458b'] 코드를 출력하고 싶습니다. 만약 ID가 0.01의 사용자 정의 값의 브랜치 길이에 의해 합쳐 지도록 이것을 포함하도록 변경하면 매우 유용 할 것입니다.
누군가 입력이 있거나 유용한 답변을 제공 할 수 있다면 매우 감사하겠습니다.
\b[0-9]+(?:\.[0-9]+)?\b
\b
의이 다른 숫자, 글자가 없음을 확인 또는 오른쪽 옆에 숫자 주위에 밑줄 :
그러나 나에게이 두 ID는 '0'의 브랜치 길이로 결합되지 않고 '0'의 브랜치 길이로 결합됩니다.00000328449424529074'. 당신이 중요하지 않다고 생각하는 정도의 정도가 있습니까? – Jerry
@ 제리 사과, 아픈 내 질문을 편집, 예, 나는 0.00000328449424529074가 0에서 크게 차이가 없었습니다 – PaulBarr
이 특정 예제에서는 작동하지 않지만 모든 예제에서 작동합니다. 그래서 newick 형식을 설명하기 위해 우리는 A, B, C라는 세 종의 나무를 가지고 있다고 말합니다. A와 B는 C보다 더 관련이 있습니다. 업로드 된 트리에서 빨간색 강조 표시된 지점 바로 위에있는 세 종을 직접 보았습니다. 내말은. Newick 체재에서 이것은 ((A, B), C)로 쓰여질 것입니다. 가지 길이를 포함 시키려면 ':'다음에 길이를 추가하십시오. 따라서이 예에서 예제가 작동하는 동안 변수 0 \ .000을 늘리면 밀접하게 연관된 ID를 조합하기 시작합니다. – PaulBarr