Selective vulnerability of cerebral vasculature to <i>NOTCH3</i> variants in small vessel disease and rescue by phosphodiesterase-5 inhibitor.
The 2 matches
- [1] § MATERIALS AND METHODS › F-actin staining and quantification ↔ BlueAreaCenter2dis_2.py, lines 23–73 · score 0.66 · gradient magnitude, Gaussian, Sobel, Canny, filter, resize
- [2] § MATERIALS AND METHODS › F-actin staining and quantification ↔ Spatial dispersion.py, lines 6–71 · score 0.50 · spatial dispersion, probability, etp, dsp
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 233 lines · 10 KB · MIT · 1 match
- import math
- import cv2
- import imutils
- import numpy as np
- import csv
- # 读取图像
- # image = cv2.imread('D:/PycharmProjects/segment-anything-main/finish/is/isogenic control_24.png')
- # image = cv2.imread('./finish/Arg153Cys-3/Arg153Cys/stack-30.png')
- # output_path = './finish/Arg153Cys-3/Arg-red/stack-30.png'
- # lunkuo_path = './finish/Arg153Cys-3/Arg-red/lunkuo/stack-30.png'
- # dis_a ngle_csv = './finish/Arg153Cys-3/data/Arg/patient_30_dis.csv'
- # image = cv2.imread('./finish/Arg153Cys-3/isogenic/isogenic control_14.png')
- # output_path = './finish/Arg153Cys-3/iso-red/stack-14.png'
- # lunkuo_path = './finish/Arg153Cys-3/iso-red/lunkuo/stack-14.png'
- # dis_angle_csv = './finish/Arg153Cys-3/data/iso/iso_14_dis.csv'
- for p in range(1, 43):
- # image = cv2.imread("./finish/Arg153Cys-3/Arg153Cys/stack-" + str(p) + ".png")
- # output_path = "./finish/Arg153Cys-3/11.23/Arg/Arg-red/stack-" + str(p) + ".png"
- # lunkuo_path = "./finish/Arg153Cys-3/11.23/Arg/Arg-red/lunkuo/stack-" + str(p) + ".png"
- # dis_csv = "./finish/Arg153Cys-3/11.23/Arg/patient_" + str(p) + "_dis.csv"
- # angle_csv = "./finish/Arg153Cys-3/11.23/Arg/patient_" + str(p) + "_angle.csv"
- if p < 10:
- image = cv2.imread("./R153C/R153C_SNAP(Treatment 2)/0" + str(p) + "_R153C_SNAP.png")
- # print("./R153C/C224Y(patient)/0" + str(p) + "_C224Y.png")
- output_path = "./R153C/result/R153C_SNAP(Treatment 2)/image/0" + str(p) + "_R153C_SNAP.png"
- lunkuo_path = "./R153C/result/R153C_SNAP(Treatment 2)/image/outline/0" + str(p) + "_R153C_SNAP.png"
- dis_csv = "./R153C/result/R153C_SNAP(Treatment 2)/distance/0" + str(p) + "_R153C_SNAP.csv"
- angle_csv = "./R153C/result/R153C_SNAP(Treatment 2)/angle/0" + str(p) + "_R153C_SNAP.csv"
- else:
- image = cv2.imread("./R153C/R153C_SNAP(Treatment 2)/" + str(p) + "_R153C_SNAP.png")
- # print("./C224Y/C224Y(patient)/0" + str(p) + "_C224Y.png")
- output_path = "./R153C/result/R153C_SNAP(Treatment 2)/image/" + str(p) + "_R153C_SNAP.png"
- lunkuo_path = "./R153C/result/R153C_SNAP(Treatment 2)/image/outline/" + str(p) + "_R153C_SNAP.png"
- dis_csv = "./R153C/result/R153C_SNAP(Treatment 2)/distance/" + str(p) + "_R153C_SNAP.csv"
- angle_csv = "./R153C/result/R153C_SNAP(Treatment 2)/angle/" + str(p) + "_R153C_SNAP.csv"
- # 图像预处理
- image = imutils.resize(image, height=512)
- # 计算图像的梯度
- gradient_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=3)
- gradient_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=3)
- gradient_magnitude = np.sqrt(gradient_x**2 + gradient_y**2)
- # 计算梯度的均值和标准差
- mean_gradient = np.mean(gradient_magnitude)
- stddev_gradient = np.std(gradient_magnitude)
- # 根据梯度的统计信息自适应计算阈值
- threshold = mean_gradient + 2 * stddev_gradient
- gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
- # gray = cv2.GaussianBlur(gray, (5, 5), 0)
- gray = cv2.bilateralFilter(gray, 5, sigmaColor=100, sigmaSpace=100)
- print('thereshold:', threshold)
- binary = cv2.Canny(gray, threshold1=(threshold / 2.5), threshold2=int(threshold))
- # binary = cv2.Canny(gray, threshold1=30, threshold2=120)
- # 轮廓检索
- green_contours, hierarchy = cv2.findContours(binary,
- cv2.RETR_EXTERNAL,
- cv2.CHAIN_APPROX_SIMPLE)
- green_contours_len = len(green_contours)
- print("green_contours-len:", green_contours_len)
- # cv2.imshow('binary', binary)
- cv2.imwrite(lunkuo_path, binary)
- # 转换颜色空间(BGR到HSV)
- hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
- # 定义蓝色的HSV范围
- lower_blue = np.array([75, 50, 50])
- upper_blue = np.array([130, 255, 255])
- # 创建蓝色掩码
- blue_mask = cv2.inRange(hsv_image, lower_blue, upper_blue)
- # 寻找蓝色区域的轮廓
- blue_contours, _ = cv2.findContours(blue_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
- average_distances = [] # 存放所有中心点到每一个绿色轮廓的平均值
- angle_list = [] # 存储所有绿色轮廓的角度
- all_distances = []
- temp_n = 1 # 全局变量用于限制计算angle_list的个数
- # 遍历蓝色区域的轮廓
- for blue_contour in blue_contours:
- # 计算每个蓝色区域的面积
- blue_area = cv2.contourArea(blue_contour)
- # 设置一个阈值,仅绘制较大的蓝色区域
- if blue_area > 400: # 更改阈值以匹配您的需求
- # 计算中心坐标
- M = cv2.moments(blue_contour)
- if M["m00"] != 0: # 零阶矩“m00”的含义比较直观,它表示一个轮廓的面积
- cX = int(M["m10"] / M["m00"])
- cY = int(M["m01"] / M["m00"])
- # 在图像上绘制中心坐标
- cv2.circle(image, (cX, cY), 5, (0, 0, 255), -1) # 绘制中心坐标
- cv2.drawContours(image, [blue_contour], -1, (0, 0, 255), 2) # 绘制蓝色区域
- distances = [] # 存储到所有绿色线条的距离
- n = 0
- for i in range(len(green_contours)):
- # 筛掉面积过小的轮廓
- # area = cv2.contourArea(green_contours[i])
- green_area = cv2.arcLength(green_contours[i], False)
- if green_contours_len < 200:
- if green_area < 100:
- n += 0
- continue
- n += 1
- # rect = cv2.minAreaRect(green_contours[i]) # 返回一个Box2D结构,其中包括以下详细信息–(中心(x,y),(宽度、高度)、旋转角度)
- (x, y), (w, h), angle = cv2.minAreaRect(green_contours[i])
- # print('angle:', angle)
- # # 计算矩形框的四个顶点坐标
- # box = cv2.boxPoints(rect)
- # box = np.int0(box)
- if angle != 90:
- if h > w:
- angle = angle + 90
- else:
- if h > w:
- angle = 0
- if temp_n == 1: # 只在第一次计入角度
- angle_list.append(angle)
- dist = cv2.pointPolygonTest(green_contours[i], (cX, cY), True)
- distances.append(abs(dist))
- # # 绘制轮廓
- cv2.drawContours(image, [green_contours[i]], -1, (0, 0, 255), 1)
- else:
- if green_area < 200:
- n += 0
- continue
- n += 1
- # rect = cv2.minAreaRect(green_contours[i])
- (x, y), (w, h), angle = cv2.minAreaRect(green_contours[i])
- # print('angle:', angle)
- # # 计算矩形框的四个顶点坐标
- # box = cv2.boxPoints(rect)
- # box = np.int0(box)
- # # 计算矩形框的四个顶点坐标
- # box = cv2.boxPoints(rect)
- # box = np.int0(box)
- # box0 = box[0]
- # box1 = box[1]
- if angle != 90:
- if h > w:
- angle = angle + 90
- else:
- if h > w:
- angle = 0
- if temp_n == 1: # 只在第一次计入角度
- angle_list.append(angle)
- # # 计算矩形框的四个顶点坐标
- # box = cv2.boxPoints(rect)
- # box = np.int0(box)
- dist = cv2.pointPolygonTest(green_contours[i], (cX, cY), True)
- distances.append(abs(dist))
- # # 绘制轮廓
- cv2.drawContours(image, [green_contours[i]], -1, (0, 0, 255), 1)
- temp_n = 0
- all_distances.append(distances) # 所有距离
- print('dist:', distances)
- print('dist-len:', len(distances))
- temp = sum(distances)/len(distances) # 一个中心点到所有绿色轮廓距离的平均值
- print('eachline-average-len:', temp)
- average_distances.append(temp)
- # # 将列表转换为 NumPy 数组
- # array = np.array(all_distances)
- # # 计算每一列的平均值
- # column_means = np.mean(array, axis=0)
- # print('column_means:', column_means)
- # print(len(column_means))
- #
- # dis_angle = []
- # dis_angle.append(column_means.tolist())
- # dis_angle.append(angle_list)
- # print('dis_angle:', dis_angle)
- #
- # # 距离写入csv
- # with open(dis_angle_csv, mode='a', newline='') as file:
- # writer = csv.writer(file)
- # # 使用zip函数将数据按列写入CSV文件
- # for row in zip(*dis_angle):
- # writer.writerow(row)
- # 距离写入csv
- with open(dis_csv, mode='a', newline='') as file:
- writer = csv.writer(file)
- # 使用zip函数将数据按列写入CSV文件
- for row in zip(*all_distances):
- writer.writerow(row)
- # 角度写入csv
- with open(angle_csv, mode='a', newline='') as file1:
- writer = csv.writer(file1)
- # 遍历一维列表,并将每个元素写入CSV文件的指定列的不同行
- for item in angle_list:
- # 创建一个包含空字符串的列表,用于表示CSV文件的一行
- row = ["" for _ in range(len(angle_list))]
- # 在指定列中插入要写入的值
- row[0] = item
- writer.writerow(row)
- # 显示带有标记的图像
- print('average_distances:', average_distances)
- all_averge_distances = sum(average_distances)/len(average_distances)
- print("n=", n)
- print('angle_list_len:', len(angle_list))
- print('angle_list:', angle_list)
- print('all-averge-distances:', all_averge_distances)
- cv2.imwrite(output_path, image)
- # cv2.imshow('Marked Image', image)
- # cv2.waitKey(0)
- # cv2.destroyAllWindows()
BlueAreaCenter2dis_2.py at commit 6a9db28, under MIT · at the source
Overview
- Division of Evolution, Infection and Genomic Sciences, School of Biological Sciences, Faculty of Biology, Medicine, and Health, The University of Manchester, Manchester, UK
- Children’s Hospital of Chongqing Medical University, Chongqing 400014, P.R. China
- Genome Editing Unit, Faculty of Biology, Medicine and Health, The University of Manchester, Manchester, UK
- College of Computer Science and Technology, Qingdao University, Qingdao, P.R. China
- School of Computing and Mathematical Sciences, University of Leicester, Leicester, UK
- Institute of Cardiovascular Research, Royal Holloway, University of London, Ashford and St Peter’s NHS Foundation Trust, and Imperial College Healthcare NHS Trust, London, UK
- Manchester Centre for Genomic Medicine, Manchester University NHS Foundation Trust, Manchester, UK
- Geoffrey Jefferson Brain Research Centre, Manchester Academic Health Science Centre, Northern Care Alliance and University of Manchester, Manchester, UK
Abstract
NOTCH3 variants cause CADASIL (cerebral autosomal dominant arteriopathy and subcortical infarcts and leukoencephalopathy), the most common monogenetic form of small vessel disease (SVD) and vascular dementia (VaD). The molecular mechanisms driving CADASIL pathogenesis remain poorly understood, and no specific treatments are currently available. NOTCH3 is mainly expressed in vascular smooth muscle cells (VSMCs) that arise from different embryonic origins. Using human induced pluripotent stem cell (iPSC) models, we generated origin-specific VSMCs and found that cerebral, but not peripheral, VSMC mimics are selectively vulnerable to NOTCH3 variants. CADASIL iPSC–derived brain-specific VSMCs acquired a synthetic phenotype, accompanied with extensive extracellular matrix accumulation and impaired cell adhesion leading to anoikis. Furthermore, an endothelial-independent nitric oxide signaling was substantially impaired in CADASIL iPSC–derived VSMCs. Phosphodiesterase-5 inhibition successfully reversed the functional abnormality and survival of mutant VSMCs. Our findings uncovered mechanistic insights and suggest a viable therapeutic strategy for NOTCH3-associated SVD/
Reproduced under the paper's license (CC BY), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 2 matches between paragraphs and lines of code.
zhaoaite/ActinDetection
6a9db28608a0c96d4bf720998b81af74dc0fb0cf, 13 December 2025Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
5 files
- BlueAreaCenter2dis_2.py, Python, 233 lines, 1 match
- Spatial dispersion.py, Python, 84 lines, 1 match
- dis_mean.py, Python, 52 lines
- LICENSE, License, 21 lines
- readme.txt, Text, 32 lines
doi:10.5061/dryad.2280gb66p
Availability: 1 check, the latest on 28 September 2026: the link answers (HTTP 200)
- 28 September 2026: the link answers (HTTP 200)
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 3 scripts, each with its path and the digest of its content;
- 2 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
Datasets cited
- arrayexpress:E-MTAB-1630
3 , at ArrayExpress; found in “Data, code, and materials availability:”
Data, code, and materials availability
All data and code needed to evaluate and reproduce the results in the paper are present in the paper and/
Reproduced under the paper's license (CC BY), from the paper cited above.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 28 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 7 authors, 9 MeSH terms, 2 funders, 72 references, 1 RRID.
Cite
This paper
Zhao, X., Yu, C., Adamson, A., Zhao, A., Zhou, H., Sharma, P., & Wang, T. (2026). Selective vulnerability of cerebral vasculature to &
BibTeX
@article{zhao2026selecti
author = {Zhao, Xiangjun and Yu, Chaowen and Adamson, Antony and Zhao, Aite and Zhou, Huiyu and Sharma, Pankaj and Wang, Tao},
title = {{Selective vulnerability of cerebral vasculature to \&
journal = {Science advances},
year = {2026},
month = apr,
volume = {12},
number = {14},
pages = {eaeb1134},
publisher = {American Association for the Advancement of Science},
issn = {2375-2548},
doi = {10.1126/
url = {https://
pmid = {41931622},
pmcid = {PMC13048245}
}
RIS
TY - JOUR
AU - Zhao, Xiangjun
AU - Yu, Chaowen
AU - Adamson, Antony
AU - Zhao, Aite
AU - Zhou, Huiyu
AU - Sharma, Pankaj
AU - Wang, Tao
TI - Selective vulnerability of cerebral vasculature to &
T2 - Science advances
J2 - Sci Adv
PY - 2026
DA - 2026/
VL - 12
IS - 14
SP - eaeb1134
SN - 2375-2548
PB - American Association for the Advancement of Science
DO - 10.1126/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1126/
"type": "article-journal",
"title": "Selective vulnerability of cerebral vasculature to &
"container-title": "Science advances",
"author": [
{
"family": "Zhao",
"given": "Xiangjun"
},
{
"family": "Yu",
"given": "Chaowen"
},
{
"family": "Adamson",
"given": "Antony"
},
{
"family": "Zhao",
"given": "Aite"
},
{
"family": "Zhou",
"given": "Huiyu"
},
{
"family": "Sharma",
"given": "Pankaj"
},
{
"family": "Wang",
"given": "Tao"
}
],
"container-title-short":
"volume": "12",
"issue": "14",
"page": "eaeb1134",
"DOI": "10.1126/
"PMID": "41931622",
"PMCID": "PMC13048245",
"ISSN": "2375-2548",
"publisher": "American Association for the Advancement of Science",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
3
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1038/s44161-026-00844-0 [code]
- Pericyte K&
lt;sub& gt;ATP& lt;/ sub& gt; channel hyperactivity redistributes cortical blood flow in a CADASIL mouse model. Journal: Nature cardiovascular researchIn common: stroke, cellular / molecular, 3 references - [2] doi:10.1242/dev.204969 [code]
- Oscillatory co-expression of HES1 and HES5 enables a hybrid state in a cross-repressive transcription factor regulatory motif.Journal: Development (Cambridge, England)In common: cellular / molecular, author Antony D Adamson
- [3] doi:10.1093/braincomms/fcag309 [code]
- Neurovascular effects of tadalafil in patients with cerebral small vessel disease: ETLAS-2 substudy.Journal: Brain communicationsIn common: pandas, NumPy, stroke, 2 references
- [4] doi:10.1093/brain/awag033
- Impairment of hippocampal gamma oscillations, mitochondria and neurovascular function in CADASIL.Journal: Brain : a journal of neurologyIn common: stroke, cellular / molecular, 2 references
- [5] doi:10.1186/s12938-026-01555-0 [code]
- Incorporating normal periventricular changes for enhanced pathological white matter hyperintensity segmentation: on multiclass deep learning approaches.Journal: Biomedical engineering onlineIn common: OpenCV, pandas, NumPy, stroke
- [6] doi:10.1212/wnl.0000000000218472 [code]
- Lesion-Level Subtypes of White Matter Hyperintensity Evolution Beyond Spatial Location.Journal: NeurologyIn common: pandas, NumPy, stroke, 1 reference
- [7] doi:10.1002/alz.71530 [code]
- Differential associations of plasma biomarkers with Alzheimer's disease and small vessel disease: A multimodal imaging study.Journal: Alzheimer's & dementia : the journal of the Alzheimer's AssociationIn common: pandas, NumPy, stroke, 1 reference
- [8] doi:10.1021/acs.jmedchem.6c00231 [code]
- Applying Deep-Learning-Driven &
lt;i& gt;De Novo& lt;/ i& gt; Design to Hit Identification: A Case Study on A& lt;sub& gt;2A& lt;/ sub& gt; Adenosine Receptor Antagonists. Journal: Journal of medicinal chemistryIn common: pandas, NumPy, cellular / molecular, 1 reference - [9] doi:10.1002/cns.71114 [code]
- Dynamic Functional Connectivity Changes in Cortical and Cortico-Striatal Strokes in Mice.Journal: CNS neuroscience & therapeuticsIn common: OpenCV, pandas, NumPy, stroke
- [10] doi:10.1186/s12951-026-04551-7
- The role of AI-assisted drug repurposing in neurological disorders: a systematic review of validation strategies, challenges and opportunities.Journal: Journal of nanobiotechnologyIn common: 2 references
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 2 repositories of the authors' code, each at its verified commit and with its license, 3 scripts, and 2 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:2f1564546abce58c…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
