Worried about losing your cells due to growth or thawing difficulties, or even a random freezer breakdown? Enjoy peace of mind knowing that you can be covered under abm's Cell Line Insurance.
Sale of this item is subjected to the completion of a Material Transfer Agreement (MTA) by the purchasing institution.
For for-profit organizations, please contact quotes@abmgood.com for pricing.
Human Hair Follicle Dermal Papilla cells are highly active mesenchymal cells isolated from the hair papilla embedded in extracellular matrix of scalp hair follicles. Dermal Papilla Cells play a significant role in controlling the hair growth cycle and production by involving in the epithelial-mesenchymal interaction of hair follicle cells. Their survival is regulated by signal transduction pathways such as ERK and Akt. These cells can be used for development and evaluation of hair growth products and identifying cell populations within the hair follicle.
Organism
Human (H. sapiens)
Tissue
Hair Follicle
Donor History
Female, 56, Caucasian
Growth Properties
Adherent, multipolar
Cell Type
Immortalized Cells
Unit
1x106 cells / 1.0 ml
Storage Condition
Vapor phase of liquid nitrogen, or below -130°C.
Shipping Conditions
Ship with dry ice.
Product Format
Frozen
Intended Use
This product is intended for laboratory research use only. It is not intended for any animal or human therapeutic use, any human or animal consumption, or any diagnostic use.
BioSafety
II
Certificate of Analysis
For batch-specific test results, refer to the applicable certificate of analysis that can be found at www.abmgood.com.
Growth Conditions
Use of PriCoat™ T25 Flasks (G299) or Applied Cell Extracellular Matrix (G422) is required for cell adhesion to the culture vessels. PriGrow III (TM003) + 10% FBS + 1% Penicillin/Streptomycin Solution (G255), 37.0°C, 5% CO₂
Unpacking and Storage Instructions
1. Visually examine the packaging containers for signs of leakage or breakage.
2. Immediately transfer frozen cells from dry ice packaging to a temperature below -130°C, preferably in liquid nitrogen vapor phase storage, until ready for use.
To ensure the highest level of viability, thaw the vial and initiate culture as soon as possible upon receipt. If continued storage is desired, the vial should only be stored below -130°C or in liquid nitrogen vapor phase. Do not store at -70°C, as it will result in loss of viability.
Thawing Protocol
1. Thaw cells quickly in a 37°C water bath while agitating gently (maximum 2 minutes). The vial cap should be kept above the water level to minimize the risk of contamination.
2. Decontaminate the vial by spraying and wiping the exterior of the vial with 70% ethanol. From this point onwards, all operations should be strictly carried out inside a biological safety cabinet using aseptic conditions.
3. Transfer the cell suspension into a 15ml sterile conical tube containing 5ml of pre-warmed, complete growth media. Centrifuge cells at 125xg for 5-7 minutes.
4. Aspirate the supernatant without disturbing the cell pellet. Re-suspend the cell pellet in the recommended pre-warmed, complete growth media and dispense into a T25 culture flask.
5. Incubate the cells at the recommended conditions.
Subculture Protocol
Volumes given below are for a T75 flask; proportionally increase or decrease the volume as required per culture vessel size. Subculture cells once the culture vessel is 80% confluent.
1. Aspirate the culture media, and add 2-3ml of pre-warmed 0.25% Trypsin-EDTA to the culture vessel.
2. Observe the cells under a microscope to confirm detachment (typically within 2-10 minutes). Cells that are difficult to detach can be put in 37°C, for several minutes to facilitate detachment.
3. Neutralize Trypsin-EDTA by adding an equal volume of the complete growth media into the culture vessel.
4. Transfer the culture suspension into a sterile centrifuge tube, and centrifuge at 125xg for 5 minutes. The actual centrifuge duration and speed may vary depending on the cell type.
5. Aspirate the supernatant, and re-suspend the pellet with pre-warmed fresh complete growth media. Add appropriate aliquots of the cell suspension to new culture vessels, as desired.
6. Incubate the cells at the recommended conditions.
Cryopreservation
Cryopreservation Medium (TM024), or complete growth media with 10% DMSO.
Seeding Density (cells/cm2)
10,000
Population Doubling Time (h)
40 - 42
Immortalization Method
Serial passaging and transduction with recombinant lentiviruses carrying hTERT gene
Expression
SFRP2, smooth muscle actin-α
Warranty
abm warrants that cell lines shall be viable upon initiation of culture for a period of thirty (30) days after shipment and that they shall meet the specifications on the applicable abm Material Product Information sheet, certificate of analysis, and/or catalog description. Such thirty (30) day period is referred to herein as the "Warranty Period”.
Disclaimer
1. Sale of this item is subjected to the completion of a Material Transfer Agreement (MTA) by the purchasing individual/institution for each order. If you have any questions regarding this, please contact us at licensing@abmgood.com.
2. All test parameters provided in the CoA are conducted using abm's standardized culture system and procedures. The stated values may vary under the end-user's culture conditions. Please verify that the product is suitable for your studies by referencing published papers or ordering RNA (0.5 μg, Cat.# C207, $450.00) or cell lysate (100 μg, Cat.# C206, $600.00) to perform preliminary experiments, or alternatively use our Gene Expression Assay Service (Cat# C138). All sales are final.
3. We recommend live cell shipments for ease of cell transfer and this option can be requested at the time of ordering. Please note that the end-user will need to evaluate the feasibility of live cell shipment by taking into account the final destination's temperature variation and its geographical location. In addition, we thoroughly test our cell lines for freeze-thaw recovery. If frozen cells were received and not recovered in your lab under the exact, specified conditions (using recommended culture vessel, media, additional supplements, and atmospheric conditions), a live cell replacement is possible at a cost (plus shipping).
4. All of abm's cell biology products are for research use ONLY and NOT for therapeutic/diagnostic applications. abm is not liable for any repercussions arising from the use of its cell biology product(s) in therapeutic/diagnostic application(s). Please contact a technical service representative for more information.
5. abm makes no warranties or representations as to the accuracy of the information on this site. Citations from literature and provided for informational purposes only. abm does not warrant that such information has been shown to be accurate.
6. abm warrants that cell lines shall be viable upon initiation of culture for a period of thirty (30) days after shipment and that they shall meet the specifications on the applicable abm Material Product Information sheet, certificate of analysis, and/or catalog description. Such thirty (30) day period is referred to herein as the "Warranty Period."
Application
Research Use Only.
Material Citation
If use of this material results in a scientific publication, please cite the material in the following manner: Applied Biological Materials Inc, Cat. No. T0501
We do not perform extensive downstream characterization, or gene expression profiling of our cell lines. However, you can check the ‘References’ tab to see if a publication is available, or you can contact us to see if RNA or cell lysates are available for your cell line of interest. Please directly contact us for further information at quotes@abmgood.com.
We strongly encourage using the recommended media and culture conditions described in the "Growth Conditions" section as they have been optimized for cell growth. Other supplier's media and coating conditions have not been tested.
We strongly recommend thawing cells in the T25 flasks specified on the cell-specific product page to ensure optimal post-thaw recovery of the frozen cells before testing other culture vessels.
For a protocol on how to coat plates and dishes with Applied Cell Extracellular Matrix (Cat. No. G422), please download the “Applied Cell Extracellular Matrix Data Sheet” from here.
The standard concentration used for subculturing is 0.25% Trypsin-EDTA, available at abm (Cat. No. TM050). Yes, Trypsin-EDTA containing phenol red can be used as it does not interfere with trypsinization.
We follow the CDC-NIH recommendations that all mammalian sourced products should be handled at the Biological Safety Level 2 to minimize exposure of potentially infectious products. This information can be found in 'Biosafety in Microbiological and Biomedical Laboratories' (1999). Your institution's Safety Officer or Technical Services will be able to make the call as to whether BioSafety Level I is possible with these cells at your site, if desired.
Cells that are properly frozen using an effective cryoprotective agent can be stored in liquid nitrogen vapor phase (or below -130°C) indefinitely without affecting viability.
Live cells: acclimatize for 3-5 hours at the recommended temperature and CO2 conditions stated for the cell line under the Growth Conditions section, and then change media afterwards. For more information on how to handle live cells, please view our detailed instructions here (https://www.abmgood.com/uploads/document/Cell_Handling_Instructions_Upon_Arrival_150623.pdf).
Frozen cells: Upon receipt, immediately place cells in liquid nitrogen; or below -130°C.
Live cells are shipped as a live culture in a T12.5 flask. Cells are seeded at an optimal confluency to avoid metabolic waste build up during transport. In addition, we thoroughly test our cell lines for functional freeze-thaw recovery. For more information on how to handle live cells, please view our detailed instructions here (https://www.abmgood.com/uploads/document/Cell_Handling_Instructions_Upon_Arrival_150623.pdf).
Cells form clumps and display attachment issues when the trypsinization agent is not effectively neutralized. To completely neutralize the trypsin agent, add an equal amount of complete growth media prior to centrifugation. Subtle changes in culture conditions, particularly in pH and the quality of serum used in the growth medium, may also affect the amount of clumping exhibited by the cells.
It is important to ensure cell clumps are broken up through gentle re-suspension by pipetting up and down several times after pelleting cells by centrifugation. This will ensure a homogenous single cell suspension for even plating.
KITIYANANT, V., LOTRAKUL, P., KANCHANABANCA, C., PADUNGROS, P., PUNNAPAYAK, H., PRASONGSUK, S., & CHANVORACHOTE, P. (2019). Fusigen Reduces Intracellular Reactive Oxygen Species and Nitric Oxide Levels. In Vivo, 33(2), 425–432. https://doi.org/10.21873/invivo.11490
Lee, Y. H., Nam, G., Kim, M. K., Cho, S. C., & Choi, B. Y. (2020). Broussonetia papyrifera Promotes Hair Growth Through the Regulation of β-Catenin and STAT6 Target Proteins: A Phototrichogram Analysis of Clinical Samples. Cosmetics, 7(2), 40.
This product has no review yet.
Other Cell Lines
SELECT CATEGORY
SPECIES
BIO SYSTEM
CELL TYPE
SEARCH RESULT
{"id":40343,"cat_no":"T0501","retired_cat_no":"","old_cat_no":"T0501","name":"Immortalized Hair Follicle Dermal Papilla Cells - hTERT","price":"0.0000","price_before_discount":"0.0000","academic_price":"4950.00","commercial_price":"0.00","distributor_price_note":"","unit_quantity":"1x10\u003Csup\u003E6\u003C\/sup\u003E cells \/ 1.0 ml","category_id":19,"category_name":"Immortalized Cell Lines","frontend_category_id":22,"frontend_category_ids":"20,21,22","gene_id":0,"ncbi_id":0,"gene_name":"","gene_full_name":"","alias":"","accession_number":"","species_id":6,"species":"Human (H. sapiens)","real_species_id":0,"cell_type_id":1,"cell_type":"Immortalized Cells","product_type":"","tissue_id":7,"tissue":"Hair Follicle","tissue_system":"Integumentary System","source":null,"keywords":"Hair Follicle Dermal Papilla Cells, Hair Follicle, dermal, papilla cells, dermal cells, hair cells, hair follicle cells","invisible_search_keywords":"","filter_group_id":13,"filter_group_name":"Cell Lines","filter_name":"Immortalized Cells","search_filter_ids":"41,42,102,108","search_filter_keys":"41-42,102-108","temp_field":null,"filter_id":14,"customization":0,"filter_table_id":11629,"filter_table_name":"","related_group_id":0,"operator":"","status":1,"is_ko":0,"need_remove":0,"units":null,"document_sort":"","price_old":"0.0000","price2024":"0.0000","created_at":null,"updated_at":"2025-04-04 18:19:36","points_rule":5,"Confirmed":"Tony Confirmed","application_no_use":null,"application_id_no_use":null,"raised_in":null,"raised_in_id":null,"geo_price_before_discount":"0.00","geo_titer7_price_before_discount":"149.00","cate_url":"Immortalized-Cell-Lines.html","frontendBreadcrumbs":[{"id":20,"pid":86,"name":"Cellular Materials","page_id":18,"page_type":"App\\Models\\Category","href":"","sort":20,"show_in_nav":1,"show_in_homepage":1,"has_children":1,"status":1,"related_table":null,"created_at":null,"updated_at":null,"url_key":"cellular-materials.html","url":"cellular-materials.html"},{"id":21,"pid":20,"name":"Cell Library Collections","page_id":221,"page_type":"App\\Models\\Category","href":null,"sort":21,"show_in_nav":1,"show_in_homepage":1,"has_children":1,"status":1,"related_table":null,"created_at":null,"updated_at":"2025-02-12 01:11:16","url_key":"cellular-collections.html","url":"cellular-collections.html"},{"id":22,"pid":21,"name":"Immortalized Cell Lines","page_id":19,"page_type":"App\\Models\\Category","href":null,"sort":22,"show_in_nav":1,"show_in_homepage":1,"has_children":0,"status":1,"related_table":null,"created_at":null,"updated_at":null,"url_key":"Immortalized-Cell-Lines.html","url":"Immortalized-Cell-Lines.html"}],"price_flag":0,"builderURL":"","builderViewerURL":"","mapURL":"","viewerURL":"","builderType":"","productType":"App\\Models\\CatalogBaseCells","info_family":"","geo_price":"Inquiry","geo_price_symbol":"Inquiry","category":{"id":19,"categories":"Immortalized Cell Lines","pid":18,"url_key":"Immortalized-Cell-Lines.html","css":null,"wid":0,"breadcrumbs":"[{\u0022url\u0022:\u0022https:\/\/www.abmgood.com\u0022,\u0022title\u0022:\u0022Home\u0022},{\u0022url\u0022:\u0022https:\/\/www.abmgood.com\/cellular-materials.html\u0022,\u0022title\u0022:\u0022Cellular Materials\u0022},{\u0022url\u0022:\u0022https:\/\/www.abmgood.com\/Immortalized-Cell-Lines.html\u0022,\u0022title\u0022:\u0022Immoralized Cell Lines\u0022}]","breadcrumbsIdJson":"\u003Cscript type=\u0022application\/ld+json\u0022\u003E{\u0022@context\u0022:\u0022https:\/\/schema.org\u0022,\u0022@type\u0022:\u0022BreadcrumbList\u0022,\u0022itemListElement\u0022:[{\u0022@type\u0022:\u0022ListItem\u0022,\u0022position\u0022:1,\u0022name\u0022:\u0022Home\u0022,\u0022item\u0022:\u0022https:\/\/www.abmgood.com\u0022},{\u0022@type\u0022:\u0022ListItem\u0022,\u0022position\u0022:2,\u0022name\u0022:\u0022Cellular Materials\u0022,\u0022item\u0022:\u0022https:\/\/www.abmgood.com\/cellular-materials.html\u0022},{\u0022@type\u0022:\u0022ListItem\u0022,\u0022position\u0022:3,\u0022name\u0022:\u0022Immoralized Cell Lines\u0022}]}\u003C\/script\u003E","breadcrumbsHtml":"\u003Cul class=\u0022abm-breadcrumb\u0022\u003E\u003Cli\u003E\u003Ca href=\u0022https:\/\/www.abmgood.com\u0022\u003EHome\u003C\/a\u003E\u003C\/li\u003E\u003Cli\u003E\u003Ca href=\u0022https:\/\/www.abmgood.com\/cellular-materials.html\u0022\u003ECellular Materials\u003C\/a\u003E\u003C\/li\u003E\u003Cli class=\u0022active\u0022\u003EImmoralized Cell Lines\u003C\/li\u003E\u003C\/ul\u003E","description":"\u003Ch2 class=\u0022abm-categories-title-h2\u0022\u003EImmortalized Cell Lines\u003C\/h2\u003E\n\u003Cdiv class=\u0022abm-container-fluid abm-mb-5\u0022\u003E\n\u003Cp\u003E\u003Cstrong\u003Eabm Inc.\u003C\/strong\u003E was founded 20 years ago as the first in the industry to introduce cell immortalization technology, products, and services. This achievement established \u003Cstrong\u003Eabm\u003C\/strong\u003E as a pioneer and dominant leader in the cell immortalization field, culminating in a \u003Cstrong\u003EScience Journal technique report\u003C\/strong\u003E published on Nov. 21, 2014.\u003C\/p\u003E\n\u003Cp\u003EOver the past two decades, we have successfully developed the most comprehensive library of over 600 unique cell lines derived from human, mouse, and major pet primary cells. These cell lines have supported cutting-edge research and drug development in both the healthcare and pet industries. Examples include:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003ESkin cells for the beauty industry\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022\/mast-cell-lines.html\u0022 class=\u0022abm-text-bold abm-link\u0022\u003EMast cells\u003C\/a\u003E for allergy research\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022\/dermal-papilla-cells.html\u0022 class=\u0022abm-text-bold abm-link\u0022\u003EDermal papilla cell lines\u003C\/a\u003E from androgenetic alopecia for hair growth research and drug development\u003C\/li\u003E\n\u003Cli\u003ECow and chicken muscle cells for in \u003Ci\u003Evitro\u003C\/i\u003E meat production\u003C\/li\u003E\n\u003Cli\u003EImmortalized human hepatocytes for toxicity studies in new drug development\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003EIn addition to our extensive catalog, we also offer custom cell immortalization services to meet your specific needs. If you have any primary cells requiring immortalization, our team is ready to assist (Cell Immortalization Service).\u003C\/p\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022abm-container-fluid\u0022\u003E\n\u003Cdiv class=\u0022search-box\u0022 id=\u0022search-box\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter-row\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter-col\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter-title\u0022\u003ESELECT CATEGORY\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-line\u0022\u003E\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-items\u0022\u003E\n\u003Cul\u003E\n\u003Cli class=\u0022search-sub-filter-item-radio\u0022\u003E\u003Clabel class=\u0022abm-radio\u0022\u003E\u003Cinput type=\u0022radio\u0022 name=\u0022search-filter_id\u0022 value=\u002214\u0022 \/\u003E\u003Cspan class=\u0022abm-radio-icon\u0022\u003E\u003C\/span\u003E\u003Cspan class=\u0022abm-radio-text\u0022\u003EImmortalized Cells\u003C\/span\u003E\u003C\/label\u003E\u003C\/li\u003E\n\u003Cli class=\u0022search-sub-filter-item-radio\u0022\u003E\u003Clabel class=\u0022abm-radio\u0022\u003E\u003Cinput type=\u0022radio\u0022 name=\u0022search-filter_id\u0022 value=\u002215\u0022 \/\u003E\u003Cspan class=\u0022abm-radio-icon\u0022\u003E\u003C\/span\u003E\u003Cspan class=\u0022abm-radio-text\u0022\u003ETumor Cells\u003C\/span\u003E\u003C\/label\u003E\u003C\/li\u003E\n\u003Cli class=\u0022search-sub-filter-item-radio\u0022\u003E\u003Clabel class=\u0022abm-radio\u0022\u003E\u003Cinput type=\u0022radio\u0022 name=\u0022search-filter_id\u0022 value=\u002216\u0022 checked=\u0022checked\u0022 \/\u003E\u003Cspan class=\u0022abm-radio-icon\u0022\u003E\u003C\/span\u003E\u003Cspan class=\u0022abm-radio-text\u0022\u003EPrimary Cells\u003C\/span\u003E\u003C\/label\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-col\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter-title\u0022\u003ESPECIES\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-line\u0022\u003E\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-items\u0022 id=\u0022search-sub-filter-organism-box\u0022\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-col\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter-title\u0022\u003EBIO SYSTEM\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-line\u0022\u003E\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-items\u0022 id=\u0022search-sub-filter-tissue_system-box\u0022\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-col\u0022\u003E\n\u003Cdiv class=\u0022search-sub-filter-title\u0022\u003ECELL TYPE\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-line\u0022\u003E\u003C\/div\u003E\n\u003Cdiv class=\u0022search-sub-filter-items\u0022 id=\u0022search-sub-filter-tissue-box\u0022\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022search-clear\u0022\u003E\u003Cbutton class=\u0022abm-btn\u0022\u003EClear All\u003C\/button\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\u0022result-box\u0022 id=\u0022result-box\u0022\u003E\n\u003Cdiv class=\u0022result-title\u0022\u003ESEARCH RESULT\u003C\/div\u003E\n\u003Cdiv class=\u0022result-line\u0022\u003E\u003C\/div\u003E\n\u003Cdiv id=\u0022result-container\u0022\u003E\u003C\/div\u003E\n\u003Cdiv id=\u0022paginate-container\u0022\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cstyle\u003E\n .search-box *,\n .result-box .result-title {\n font-size: 14px;\n }\n\n .search-filter_id,\n .search-sub-filter {\n width: 100%;\n margin-bottom: 25px;\n }\n\n .search-filter_id-title,\n .search-sub-filter-title,\n .result-title {\n background-color: #EF6331;\n color: #fff;\n width: 100%;\n padding: 0 15px;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: keep-all;\n height: 32px;\n line-height: 32px;\n }\n\n .search-filter_id-line,\n .search-sub-filter-line,\n .result-line {\n width: 100%;\n height: 0;\n background-color: #EF6331;\n }\n\n .search-filter_id-items {\n display: flex;\n flex-wrap: wrap;\n border-top: none;\n align-items: center;\n justify-content: space-around;\n padding: 15px 20px;\n }\n\n .search-filter_id-vertical-line {\n width: 1px;\n font-size: 0;\n background-color: #cacaca;\n }\n\n .search-filter_id-items .abm-radio {\n margin: 5px 15px 5px 0;\n }\n\n .search-sub-filter-row {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr 1fr;\n }\n\n .search-sub-filter-col {\n display: flex;\n flex-direction: column;\n }\n\n .search-sub-filter-items {\n flex: 1;\n padding: 15px;\n border-left: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n }\n\n .search-sub-filter-col:last-child .search-sub-filter-items {\n border-right: 1px solid #ddd;\n }\n\n .search-sub-filter-items ::-webkit-scrollbar {\n width: 10px;\n }\n\n .search-sub-filter-items ::-webkit-scrollbar-track {\n background-color: #eee;\n \/*border-left: 1px solid #ddd;*\/\n \/*border-right: 1px solid #ddd;*\/\n border-radius: 5px;\n }\n\n .search-sub-filter-items ::-webkit-scrollbar-thumb {\n background-color: #ef6331;\n border-radius: 5px;\n }\n\n .search-sub-filter-items ul {\n min-height: 100%;\n height: 200px;\n overflow-x: hidden;\n overflow-y: auto;\n padding: 0;\n margin: -15px;\n }\n\n .search-sub-filter-item, \n .search-sub-filter-item-radio {\n list-style: none;\n padding: 2px 15px;\n cursor: pointer;\n position: relative;\n }\n\n .search-sub-filter-item:hover {\n background-color: #EEE;\n }\n\n .search-sub-filter-item.active,\n .search-sub-filter-item.selected {\n background-color: #CCC;\n }\n\n .search-sub-filter-item-radio label.abm-radio {\n margin-bottom: 0;\n }\n\n .search-sub-filter-item-clear {\n display: none;\n }\n\n .search-sub-filter-item.active .search-sub-filter-item-clear,\n .search-sub-filter-item.selected .search-sub-filter-item-clear {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n right: -1px;\n height: 100%;\n padding: 0 10px;\n background-color: #333;\n color: #fff;\n }\n\n .search-clear {\n text-align: right;\n }\n\n .search-clear button {\n padding: 8px 15px;\n border: 1px solid #EF6331;\n background-color: #EF6331;\n color: #fff;\n border-radius: 4px;\n cursor: pointer;\n opacity: 1;\n transition: .3s;\n }\n\n .search-clear button:not(:disabled):hover {\n opacity: .8;\n }\n\n .search-clear button:disabled {\n opacity: .5;\n cursor: not-allowed;\n }\n\n .result-box {\n margin-top: 50px;\n }\n\n #result-container {\n padding-top: 20px;\n }\n\n #result-container ul {\n list-style: none;\n padding: 0;\n }\n\n .search-result-notice {\n background-color: #f2f2f2;\n padding: 15px 20px;\n margin-bottom: 20px;\n border-radius: 6px;\n }\n\n\n \/* Radio *\/\n .abm-radio {\n display: flex;\n margin-right: 15px;\n align-items: center;\n }\n\n .abm-radio input {\n display: none;\n }\n\n .abm-radio .abm-radio-icon {\n display: block;\n width: 1em;\n height: 1em;\n border-radius: 50%;\n border: 2px solid #ccc;\n margin-right: 5px;\n position: relative;\n }\n\n .abm-radio .abm-radio-text {\n color: #333;\n font-weight: 700;\n }\n\n .abm-radio:hover .abm-radio-icon,\n .abm-radio input:checked+.abm-radio-icon {\n border-color: #EF6331;\n }\n\n .abm-radio:hover .abm-radio-text {\n color: #EF6331;\n }\n\n .abm-radio input:checked+.abm-radio-icon::after {\n content: \u0022\u0022;\n display: block;\n width: 0.5em;\n height: 0.5em;\n background-color: #EF6331;\n border-radius: 50%;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n .abm-radio input:checked+.abm-radio-icon+.abm-radio-text {\n color: #EF6331;\n }\n\n .loading {\n display: flex;\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n\n .loading-item {\n width: 5px;\n height: 20px;\n background-color: #EF6331;\n\n -webkit-animation: loading 1.2s infinite ease-in-out;\n animation: loading 1.2s infinite ease-in-out;\n }\n\n .loading-item+.loading-item {\n margin-left: 5px;\n }\n\n .loading-item:nth-child(2) {\n -webkit-animation-delay: .1s;\n animation-delay: .1s;\n }\n\n .loading-item:nth-child(3) {\n -webkit-animation-delay: .2s;\n animation-delay: .2s;\n }\n\n .loading-item:nth-child(4) {\n -webkit-animation-delay: .3s;\n animation-delay: .3s;\n }\n\n .loading-item:nth-child(5) {\n -webkit-animation-delay: .4s;\n animation-delay: .4s;\n }\n\n .abm-image-zoomable {\n cursor: zoom-in;\n }\n\n @-webkit-keyframes loading {\n\n 0%,\n 40%,\n 100% {\n -webkit-transform: scaleY(1);\n }\n\n 20% {\n -webkit-transform: scaleY(1.7);\n }\n }\n\n @keyframes loading {\n\n 0%,\n 40%,\n 100% {\n transform: scaleY(1);\n -webkit-transform: scaleY(1);\n }\n\n 20% {\n transform: scaleY(1.7);\n -webkit-transform: scaleY(1.7);\n }\n }\n\n @media screen and (max-width: 768px) {\n .search-sub-filter-row {\n grid-template-columns: 1fr;\n grid-gap: 15px;\n }\n\n .search-sub-filter-items {\n height: unset;\n border-right: 1px solid #ddd;\n }\n\n .abm-search-item-action {\n display: none;\n }\n }\n\u003C\/style\u003E\n\u003Cp\u003E\n\u003Cscript\u003E\n const API = \u0027\/product\/searchApi\u0027;\n\n const DEFAULT_FILTER_ID = 14;\n\n function jump(params = {}, id = \u0027search-box\u0027) {\n let url = generateURL(params, location.origin + location.pathname);\n if (id) {\n scrollToID(id);\n }\n history.pushState(params, \u0027\u0027, url);\n search();\n }\n\n function scrollToID(id) {\n const el = document.getElementById(id);\n if (el) {\n window.scrollTo(0, getOffsetTop(el));\n }\n }\n\n function getOffsetTop(el) {\n let result = el.offsetTop;\n if (el.offsetParent) {\n result += getOffsetTop(el.offsetParent);\n }\n return result;\n }\n\n function getParams(state) {\n const params = [];\n for (const key in state) {\n params.push(`${key}=${state[key]}`);\n }\n return params;\n }\n\n function generateURL(state, base = API) {\n const params = getParams(state);\n if (params \u0026\u0026 params.length) {\n base += \u0027?\u0027 + params.join(\u0027\u0026\u0027);\n }\n return base;\n }\n\n function getDefaultFilterId() {\n return getSearchValueByKey(\u0027filter_id\u0027, DEFAULT_FILTER_ID);\n }\n\n function getSearchValueByKey(key, defaultVal = \u0027\u0027) {\n const search = location.search;\n if (search) {\n const str = search.substring(1);\n const arr = str.split(\u0027\u0026\u0027);\n for (const item of arr) {\n const keyValue = item.split(\u0027=\u0027);\n if (keyValue[0] === key) {\n return keyValue[1];\n }\n }\n }\n return defaultVal;\n }\n\n function search() {\n const historyStateExists = !!history.state;\n\n let state = history.state;\n if (!state) {\n state = { filter_id: getDefaultFilterId() };\n } else if (!state.filter_id) {\n state.filter_id = getDefaultFilterId();\n }\n\n for (const item of [\u0027species_id\u0027, \u0027tissue_system\u0027, \u0027tissue_id\u0027, \u0027page\u0027]) {\n const value = getSearchValueByKey(item);\n if (!state[item] \u0026\u0026 value) {\n state[item] = value;\n }\n }\n\n if (!historyStateExists) {\n history.pushState(Object.assign({}, state), \u0027\u0027);\n }\n\n disableFilterSection();\n fetch(generateURL(state)).then(res =\u003E res.json()).then(res =\u003E {\n if (0 === res.code) {\n renderProducts(res.data.products, res.data.page);\n renderSubFilter({\n organism: res.data.species,\n tissue_system: res.data.tissue_system,\n tissue_id: res.data.tissue\n });\n renderPaginate(res.data.page, res.data.lastPage);\n\n const filterId = state.filter_id;\n document.querySelectorAll(\u0027input[name=\u0022search-filter_id\u0022]\u0027).forEach(el =\u003E {\n el.checked = el.value + \u0027\u0027 === filterId + \u0027\u0027;\n });\n }\n\n enableFilterSection();\n }).catch(() =\u003E {\n enableFilterSection();\n });\n }\n\n function renderProducts(products, currentPage = 1) {\n let html = \u0027\u0027;\n if (currentPage \u003E 1) {\n html += \u0027\u003Cdiv class=\u0022search-result-notice\u0022\u003EProduct not found? Click \u003Ca href=\u0022javascript:;\u0022 onclick=\u0022scrollToID(\\\u0027search-box\\\u0027)\u0022\u003Ehere\u003C\/a\u003E to refine the result.\u003C\/div\u003E\u0027;\n }\n html += \u0027\u003Cul\u003E\u0027;\n for (const product of products) {\n const url = getProductUrl(product);\n const price = getProductPrice(product);\n\n const mediaPart = generateMediaPart(product);\n const categoryPart = generateCategoryPart(product);\n\n html += `\n \u003Cli class=\u0022abm-search-item\u0022\u003E\n \u003Cdiv class=\u0022abm-search-item-container\u0022\u003E\n \u003Cdiv class=\u0022abm-search-item-header\u0022\u003E\n \u003Cdiv class=\u0022abm-search-item-title\u0022\u003E\n \u003Cdiv class=\u0022abm-search-item-name\u0022\u003E\n \u003Ca class=\u0022abm-link\u0022 href=\u0022${url}\u0022 title=\u0022${product.name}\u0022\u003E${product.name}\u003C\/a\u003E\n \u003C\/div\u003E\n ${categoryPart}\n \u003C\/div\u003E\n \u003Cdiv class=\u0022abm-search-item-action\u0022\u003E\n \u003Ca class=\u0022btn abm-btn btn-block\u0022 href=\u0022${url}\u0022 title=\u0022${product.name}\u0022\u003EView Product\u003C\/a\u003E\n \u003C\/div\u003E\n \u003C\/div\u003E\n \u003Chr class=\u0022abm-search-item-hr\u0022\u003E\n \u003Cdiv class=\u0022abm-search-item-body\u0022\u003E\n \u003Cdiv class=\u0022abm-search-item-content\u0022\u003E\n \u003Cul class=\u0022abm-search-item-content-base\u0022\u003E\n \u003Cli\u003E\n \u003Cspan class=\u0022attribute\u0022\u003ECat. No.:\u003C\/span\u003E\n \u003Cspan class=\u0022attribute-value\u0022\u003E${product.cat_no}\u003C\/span\u003E\n \u003C\/li\u003E\n \u003Cli\u003E\n \u003Cspan class=\u0022attribute\u0022\u003EPrice:\u003C\/span\u003E\n \u003Cspan class=\u0022attribute-value\u0022\u003E${price}\u003C\/span\u003E\n \u003C\/li\u003E\n \u003Cli\u003E\n \u003Cspan class=\u0022attribute\u0022\u003EUnit:\u003C\/span\u003E\n \u003Cspan class=\u0022attribute-value\u0022\u003E${product.unit_quantity}\u003C\/span\u003E\n \u003C\/li\u003E\n \u003C\/ul\u003E\n \u003C\/div\u003E\n ${mediaPart}\n \u003C\/div\u003E\n \u003C\/div\u003E\n \u003C\/li\u003E\n `;\n }\n html += \u0027\u003C\/ul\u003E\u0027;\n\n document.querySelector(\u0027#result-container\u0027).innerHTML = html;\n }\n\n function getProductUrl(product) {\n if (product.seo \u0026\u0026 product.seo.url_key) {\n return \u0027\/\u0027 + ltrim(product.seo.url_key, \u0027\/\u0027);\n }\n\n const type = product.model_type.substr(22).toLowerCase();\n return \u0027\/catalog\/products\/\u0027 + product.id + \u0027\/type\/\u0027 + type;\n }\n\n function getProductPrice(product) {\n return isNaN(Number(product.geo_price)) ? (product.geo_price || (\u0027$\u0027 + (Number(product.price) || 0).toFixed(2))) : (\u0027$\u0027 + (Number(product.geo_price) || 0).toFixed(2));\n }\n\n function generateMediaPart(product) {\n let html = \u0027\u0027;\n if (product.media \u0026\u0026 product.media.length) {\n html += \u0027\u003Cdiv class=\u0022abm-search-item-media abm-image-zoomable\u0022\u003E\u0027\n + \u0027\u003Cdiv class=\u0022carousel slide\u0022 data-ride=\u0022carousel\u0022\u003E\u0027\n + \u0027\u003Cdiv class=\u0022carousel-inner\u0022 role=\u0022listbox\u0022\u003E\u0027\n\n let active = true;\n for (const media of product.media) {\n html += `\n \u003Cdiv class=\u0022item ${active ? \u0027active\u0027 : \u0027\u0027}\u0022\u003E\n \u003Cimg src=\u0022\/assets\/product\/${media.file_path}\u0022 alt=\u0022\u0022\u003E\n \u003C\/div\u003E\n `;\n active = false;\n }\n html += \u0027\u003C\/div\u003E\u003C\/div\u003E\u003C\/div\u003E\u0027;\n }\n\n return html;\n }\n\n function generateCategoryPart(product) {\n return \u0027\u0027;\n let html = \u0027\u0027;\n if (product.category) {\n html += `\n \u003Cdiv class=\u0022abm-search-item-item-type\u0022\u003E\n \u003Ca href=\u0022${product.category.url_key}\u0022\u003E${product.category.categories}\u003C\/a\u003E\n \u003C\/div\u003E\n `;\n }\n return html;\n }\n\n function ltrim(str, charlist) {\n if (charlist === undefined)\n charlist = \u0022\\s\u0022;\n return str.replace(new RegExp(\u0022^[\u0022 + charlist + \u0022]+\u0022), \u0022\u0022);\n }\n\n function renderSubFilter(subFilter, selected = null) {\n const organism = subFilter.organism;\n const importantList = [];\n for (const item of organism) {\n if (isImportant(item)) {\n item.is_important = true;\n importantList.unshift(item);\n const pos = organism.indexOf(item);\n organism.splice(pos, 1);\n }\n }\n for (const item of importantList) {\n organism.unshift(item);\n }\n const organismHtml = renderFilterUl(organism, \u0027species_id\u0027);\n\n document.querySelector(\u0027#search-sub-filter-organism-box\u0027).innerHTML = organismHtml;\n\n const tissueId = subFilter.tissue_id;\n const tissueHtml = renderFilterUl(tissueId, \u0027tissue_id\u0027);\n\n document.querySelector(\u0027#search-sub-filter-tissue-box\u0027).innerHTML = tissueHtml;\n\n const tissueSystem = subFilter.tissue_system;\n const tissueSystemHtml = renderFilterUl(tissueSystem, \u0027tissue_system\u0027);\n document.querySelector(\u0027#search-sub-filter-tissue_system-box\u0027).innerHTML = tissueSystemHtml;\n\n eventListener(\u0027.search-sub-filter-item\u0027, \u0027click\u0027, handleSubFilterClick);\n eventListener(\u0027.search-sub-filter-item-clear\u0027, \u0027click\u0027, handleClearSubFilter);\n }\n\n function isImportant(item) {\n const importantList = [\u0027Human\u0027, \u0027Mouse\u0027, \u0027Rat\u0027];\n for (const importantItem of importantList) {\n if (item.value.includes(importantItem)) {\n return true;\n }\n }\n return false;\n }\n\n function eventListener(selector, event, callback) {\n document.querySelectorAll(selector).forEach(el =\u003E {\n el.removeEventListener(event, callback);\n el.addEventListener(event, callback);\n });\n }\n\n function handleSubFilterClick() {\n if (!this.classList.contains(\u0027active\u0027)) {\n const key = this.dataset.key;\n const value = this.dataset.id;\n\n const state = history.state || {};\n state[key] = value;\n if (state.page) {\n delete state.page;\n }\n jump(state);\n }\n }\n\n function handleClearSubFilter(e) {\n e.stopPropagation();\n const parent = this.parentNode;\n const key = parent.dataset.key;\n const state = history.state;\n if (state \u0026\u0026 state.hasOwnProperty(key)) {\n delete state[key];\n }\n jump(state);\n }\n\n function renderFilterUl(items, key) {\n let html = \u0027\u003Cul\u003E\u0027;\n for (const item of items) {\n if (item.id \u0026\u0026 item.count \u003E 0) {\n html += `\n \u003Cli class=\u0022search-sub-filter-item ${item.selected}\u0022 data-key=\u0022${key}\u0022 data-id=\u0022${item.id}\u0022\u003E\n \u003Cspan\u003E${item.is_important ? (\u0027\u003Cstrong\u003E\u0027 + item.value + \u0027\u003C\/strong\u003E\u0027) : item.value}\u003C\/span\u003E\n \u003Cdiv class=\u0022search-sub-filter-item-clear\u0022\u003EX\u003C\/div\u003E\n \u003C\/li\u003E\n `;\n }\n }\n html += \u0027\u003C\/ul\u003E\u0027;\n\n return html;\n }\n\n function renderPaginate(currentPage, totalPage) {\n let html = \u0027\u0027;\n currentPage = Math.min(Math.max(1, currentPage), totalPage);\n\n if (totalPage !== 1) {\n html = \u0027\u003Cnav aria-label=\u0022Page navigation\u0022\u003E\u003Cul class=\u0022pager\u0022\u003E\u0027 +\n \u0027\u003Cli class=\u0022previous\u0027 + (currentPage === 1 ? \u0027 disabled\u0027 : \u0027\u0027) + \u0027\u0022\u003E\u003Ca href=\u0022javascript:void(0);\u0022 data-page=\u0022\u0027 + (currentPage - 1) + \u0027\u0022\u003E\u003Cspan aria-hidden=\u0022true\u0022\u003E\u0026larr;\u003C\/span\u003E Previous\u003C\/a\u003E\u003C\/li\u003E\u0027 +\n \u0027\u003Cli class=\u0022next\u0027 + (currentPage === totalPage ? \u0027 disabled\u0027 : \u0027\u0027) + \u0027\u0022\u003E\u003Ca href=\u0022javascript:void(0);\u0022 data-page=\u0022\u0027 + (currentPage + 1) + \u0027\u0022\u003ENext \u003Cspan aria-hidden=\u0022true\u0022\u003E\u0026rarr;\u003C\/span\u003E\u003C\/a\u003E\u003C\/li\u003E\u0027 +\n \u0027\u003C\/ul\u003E\u003C\/nav\u003E\u0027;\n }\n\n document.getElementById(\u0027paginate-container\u0027).innerHTML = html;\n\n eventListener(\u0027#paginate-container a\u0027, \u0027click\u0027, handlePaginateClick);\n }\n\n function handlePaginateClick() {\n if (this.parentNode.classList.contains(\u0027disabled\u0027)) {\n return;\n }\n const state = history.state || {};\n state.page = this.dataset.page;\n jump(state, \u0027result-box\u0027);\n }\n\n function disableFilterSection() {\n const el = document.querySelector(\u0027.search-box\u0027);\n el.style.position = \u0027relative\u0027;\n addShadow(el, \u0027shadow-search-box\u0027, true);\n\n const elResult = document.querySelector(\u0027.result-box\u0027);\n elResult.style.position = \u0027relative\u0027;\n addShadow(elResult, \u0027shadow-result-box\u0027);\n\n document.querySelector(\u0027.search-clear button\u0027).disabled = false;\n }\n\n function addShadow(elem, id, addLoading = false) {\n const el = document.getElementById(id);\n if (el) {\n el.style.display = \u0027block\u0027;\n el.style.opacity = 1;\n return;\n }\n\n elem.insertAdjacentHTML(\u0027beforeEnd\u0027, genearteShadow(id, addLoading));\n }\n\n function removeShadow(id) {\n const el = document.getElementById(id);\n if (el) {\n el.style.opacity = 0;\n setTimeout(function () {\n el.style.display = \u0027none\u0027;\n }, 500);\n }\n }\n\n function genearteShadow(id, addLoading = false) {\n let html = `\u003Cdiv id=\u0022${id}\u0022 style=\u0022position: absolute; left: 0; top: 0; right: 0; bottom: 0; background-color: rgba(255, 255, 255, .9); z-index: 100; transition: .5s;\u0022\u003E`;\n if (addLoading) {\n html += \u0027\u003Cdiv class=\u0022loading\u0022\u003E\u003Cdiv class=\u0022loading-item\u0022\u003E\u003C\/div\u003E\u003Cdiv class=\u0022loading-item\u0022\u003E\u003C\/div\u003E\u003Cdiv class=\u0022loading-item\u0022\u003E\u003C\/div\u003E\u003Cdiv class=\u0022loading-item\u0022\u003E\u003C\/div\u003E\u003Cdiv class=\u0022loading-item\u0022\u003E\u003C\/div\u003E\u003C\/div\u003E\u0027\n }\n html += `\u003C\/div\u003E`;\n\n return html;\n }\n\n function enableFilterSection() {\n removeShadow(\u0027shadow-search-box\u0027);\n removeShadow(\u0027shadow-result-box\u0027);\n document.querySelector(\u0027.search-clear button\u0027).disabled = !document.querySelector(\u0027.search-sub-filter-item.active\u0027);\n }\n\n search();\n\n document.querySelectorAll(\u0027input[name=\u0022search-filter_id\u0022]\u0027).forEach(el =\u003E {\n el.addEventListener(\u0027change\u0027, function () {\n if (el.classList.contains(\u0027prevent\u0027)) {\n return false;\n }\n\n document.querySelector(\u0027input[name=\u0022search-filter_id\u0022][value=\u0022\u0027 + DEFAULT_FILTER_ID + \u0027\u0022]\u0027).checked = true;\n\n switch (el.value + \u0027\u0027) {\n case \u002714\u0027:\n location.href = \u0027\/Immortalized-Cell-Lines.html\u0027;\n break;\n case \u002715\u0027:\n location.href = \u0027\/Tumor-Cell-Lines.html\u0027;\n break;\n case \u002716\u0027:\n location.href = \u0027\/Primary-Cells.html\u0027;\n break;\n default:\n jump({ filter_id: el.value });\n }\n });\n });\n\n document.querySelector(\u0027.search-clear button\u0027).addEventListener(\u0027click\u0027, () =\u003E {\n jump({\n filter_id: getDefaultFilterId()\n });\n });\n\n \/\/----------------\n \/\/ \u56fe\u7247\u653e\u5927 START\n \/\/----------------\n document.addEventListener(\u0027click\u0027, (e) =\u003E {\n const elements = document.querySelectorAll(\u0027.abm-image-zoomable\u0027);\n let curr = null;\n for (const element of elements) {\n if (element.contains(e.target)) {\n curr = element;\n break;\n }\n }\n\n if (!curr) {\n return false;\n }\n\n abmImageZoom(curr);\n });\n\n function abmImageZoom(el) {\n const images = el.querySelectorAll(\u0027img\u0027);\n const id = \u0027abm-image-zoom-carousel-\u0027 + parseInt(new Date().getTime());\n let items = \u0027\u0027;\n let hasActive = false;\n let active = null;\n for (const image of images) {\n const parent = image.parentElement;\n if (parent \u0026\u0026 parent.classList.contains(\u0027active\u0027)) {\n active = image;\n break;\n }\n }\n\n for (const image of images) {\n let activeClass = \u0027\u0027;\n if (active) {\n activeClass = active === image ? \u0027active\u0027 : \u0027\u0027;\n } else {\n activeClass = hasActive ? \u0027\u0027 : \u0027active\u0027;\n }\n items += `\u003Cdiv class=\u0022item ${activeClass}\u0022\u003E\u003Cimg src=\u0022${image.src}\u0022\u003E\u003C\/div\u003E`;\n hasActive = true;\n }\n if (!items) {\n return false;\n }\n items += `\u003Cstyle\u003E#abm-image-zoomable-modal .modal-dialog { max-width: 1200px; }\n #${id} .carousel-inner .item { position: relative; width: 100%; padding-top: 66.67%; overflow: hidden; }\n #${id} .carousel-inner .item.active.left, #${id} .carousel-inner .item.active.right { position: absolute; top: 0; }\n #${id} .carousel-inner .item img { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); max-width: 100%; max-height: 100%; }\n #${id} .carousel-control { display: none; color: #EF6331; }`;\n if (images.length \u003E 1) {\n items += ` #${id}:hover .carousel-control { display: block; }`;\n }\n items += \u0027\u003C\/style\u003E\u0027;\n\n const zoomModalEl = document.createElement(\u0027div\u0027);\n zoomModalEl.id = \u0027abm-image-zoomable-modal\u0027;\n zoomModalEl.classList.add(\u0027modal\u0027, \u0027fade\u0027);\n zoomModalEl.setAttribute(\u0027tabindex\u0027, \u0027-1\u0027);\n zoomModalEl.setAttribute(\u0027role\u0027, \u0027dialog\u0027);\n zoomModalEl.setAttribute(\u0027aria-hidden\u0027, \u0027true\u0027);\n let html = `\n \u003Cdiv class=\u0022modal-dialog\u0022\u003E\n \u003Cdiv class=\u0022modal-content\u0022\u003E\n \u003Cdiv class=\u0022modal-body\u0022\u003E\n \u003Cdiv id=\u0022${id}\u0022 class=\u0022carousel slide\u0022 data-ride=\u0022carousel\u0022 data-interval=\u0022\u0022\u003E\n \u003C!-- Wrapper for slides --\u003E\n \u003Cdiv class=\u0022carousel-inner\u0022 role=\u0022listbox\u0022\u003E${items}\u003C\/div\u003E\n\n \u003C!-- Controls --\u003E\n \u003Ca class=\u0022left carousel-control\u0022 href=\u0022#${id}\u0022 role=\u0022button\u0022 data-slide=\u0022prev\u0022\u003E\n \u003Cspan class=\u0022glyphicon glyphicon-chevron-left\u0022 aria-hidden=\u0022true\u0022\u003E\u003C\/span\u003E\n \u003Cspan class=\u0022sr-only\u0022\u003EPrevious\u003C\/span\u003E\n \u003C\/a\u003E\n \u003Ca class=\u0022right carousel-control\u0022 href=\u0022#${id}\u0022 role=\u0022button\u0022 data-slide=\u0022next\u0022\u003E\n \u003Cspan class=\u0022glyphicon glyphicon-chevron-right\u0022 aria-hidden=\u0022true\u0022\u003E\u003C\/span\u003E\n \u003Cspan class=\u0022sr-only\u0022\u003ENext\u003C\/span\u003E\n \u003C\/a\u003E\n \u003C\/div\u003E\n \u003Cdiv class=\u0022abm-mt-3\u0022\u003E\n \u003Cbutton type=\u0022button\u0022 class=\u0022btn abm-btn abm-w-100\u0022 data-dismiss=\u0022modal\u0022\u003EClose\u003C\/button\u003E\n \u003C\/div\u003E\n \u003C\/div\u003E\n \u003C\/div\u003E\n \u003C\/div\u003E\n `;\n zoomModalEl.innerHTML = html;\n document.body.appendChild(zoomModalEl);\n const $el = $(zoomModalEl);\n $el.modal(\u0027show\u0027);\n $el.on(\u0027hidden.bs.modal\u0027, function () {\n zoomModalEl.remove();\n });\n }\n \/\/----------------\n \/\/ \u56fe\u7247\u653e\u5927 END\n \/\/----------------\n\n window.onpopstate = function () {\n \/\/ \u76f4\u63a5\u8fd4\u56de\u4e0a\u4e00\u7ea7\u9875\u9762\n history.back();\n return false;\n if (!history.state) {\n history.back();\n }\n search();\n }\n \u003C\/script\u003E\n\u003C\/p\u003E","meta_title":"Immortalized Cells","meta_keywords":"Immortalized cell lines, Cell biology, Cell culture, abm, Primary cells, Mycoplasma detection and elimination, Growth factors and cytokines, Cell immortalization service, Cell characterization, Cell culture methods","meta_description":"abm offers over 400 immortalized cell lines from various organisms, tissue systems, and tissues1. Discover our high-quality and affordable solutions for your cell biology research.","deleted_at":null,"enable":"Y","parent_list":"18","table_name":"abm_catalog_cellular","image":null,"independentPage":0,"top_type":1,"sort_order":201,"in_footer":1,"fid":18,"created_at":null,"updated_at":"2025-04-05 01:14:02"},"info":{"id":520,"cat_no_base":"T0501","parent_id":40343,"image":"\/t\/0\/t0501.jpg","price-original":null,"description":"\u003Cp\u003EHuman Hair Follicle Dermal Papilla cells are highly active mesenchymal cells isolated from the hair papilla embedded in extracellular matrix of scalp hair follicles. Dermal Papilla Cells play a significant role in controlling the hair growth cycle and production by involving in the epithelial-mesenchymal interaction of hair follicle cells. Their survival is regulated by signal transduction pathways such as ERK and Akt. These cells can be used for development and evaluation of hair growth products and identifying cell populations within the hair follicle.\u003C\/p\u003E","shipment_type":null,"internal_leadtime":"1","lysate_type":null,"small_image":"\/t\/0\/t0501.jpg","growth_factor_size":null,"gene_name_no_use":null,"mammalian_selection_marker":null,"mammalian_selection_text":null,"storage_condition":"Vapor phase of liquid nitrogen, or below -130\u00b0C.","str_profiles":null,"species_description":null,"cost":null,"note":"\u003Cp\u003EHuman Hair Follicle Dermal Papilla cells are highly active mesenchymal cells isolated from the hair papilla embedded in extracellular matrix of scalp hair follicles. Dermal Papilla Cells play a significant role in controlling the hair growth cycle and production by involving in the epithelial-mesenchymal interaction of hair follicle cells. Their survival is regulated by signal transduction pathways such as ERK and Akt. These cells can be used for development and evaluation of hair growth products and identifying cell populations within the hair follicle.\u003C\/p\u003E","family":null,"overexpressed_gene":null,"diameter":null,"appearance":null,"pluripotency":null,"recommended_medium_volume":null,"medium":"DMEM + 10% FBS + 1% P\/S","alias":null,"tier_price":null,"operator_no_use":"heidi","addtime":null,"cell_line":null,"price_type":null,"gallery":null,"cell_growth_area":null,"cell_morphology":"Multipolar","expression_system_type":null,"gene_symbol":null,"insert_size":null,"msrp":null,"msrp_display_actual_price_type":"0","cell_morphology_specification":null,"tax_class_id":2,"inventory_location":"New D1 (C4, D8, F2, G1-G2, G7, I6, I9)","vector":null,"internal_note":"\u003Cp\u003EVancouver\u003C\/p\u003E","component":null,"quantity_and_stock_status":null,"vector_url":null,"application":"\u003Cp\u003EResearch Use Only.\u003C\/p\u003E","minimal_price":null,"seeding_density":null,"seeding_density_cm":"10,000","seeding_density_ml":null,"source":null,"source_catno":"2750\/6950","osmolarity":null,"weight":null,"royalty_rates":null,"population_doubling_time":"40 - 42","source_price":null,"weight_type":null,"ph":null,"licensor_commission_rate":null,"supplier":"ABM","donor_gender":"Female","appearance_general":null,"sterility":null,"molecular_weight":null,"endotoxin_level":null,"donor_age":"56","news_from_date":null,"news_to_date":null,"expression_system_general":null,"donor_disease":null,"purity":null,"country_of_manufacture":null,"donor_ethnicity":"Caucasian","image_label":null,"biological_activity_text":null,"cart2quote_quotable":"2","biosafety":"II","product_quote":0,"small_image_label":null,"immortalization_method":"\u003Cp\u003ESerial passaging and transduction with recombinant lentiviruses carrying hTERT gene\u003C\/p\u003E","bioactivity_data":null,"formulation":null,"thumbnail_label":null,"mammalian_selection":null,"isolation_method":null,"function":null,"reconstitution":null,"growth_properties":"\u003Cp\u003EAdherent, multipolar\u003C\/p\u003E","expression_profile":null,"storage":null,"propagation_method":"\u003Cdiv style=\u0022color: red; font-weight: bold;\u0022\u003E\u003Cspan style=\u0022display: inline;\u0022\u003EUse of PriCoat\u003C\/span\u003E\u003Cstrong\u003E\u003Csup\u003E\u003Cspan style=\u0022font-size: 11pt; line-height: 115%; font-family: Calibri,sans-serif;\u0022\u003ETM\u003C\/span\u003E\u003C\/sup\u003E\u003C\/strong\u003ET25 Flasks (\u003Ca href=\u0022\/pricoat-coated-flask.html\u0022 target=\u0022_blank\u0022 rel=\u0022noopener noreferrer\u0022\u003EG299\u003C\/a\u003E) or Applied Cell Extracellular Matrix (\u003Ca href=\u0022\/applied-cell-extracellular-matrix-g422.html#g422\u0022 target=\u0022_blank\u0022 rel=\u0022noopener noreferrer\u0022\u003EG422\u003C\/a\u003E) is required for cell adhesion to the culture vessels. Grow cells inECM-coated culture vessels unless otherwise specified in the Propagation Requirements below.\u003C\/div\u003E\n\u003Cp\u003E\u003Cspan id=\u0022docs-internal-guid-5275c9a5-7fff-01ac-126e-9a781a97feba\u0022\u003EThe base medium for this cell line is Prigrow III medium available at \u0026lt;strong\u0026gt;abm\u0026lt;\/strong\u0026gt;, Cat. No. \u0026lt;a href=\u0022\/prigrow-iii-medium-tm003.html#TM003\u0022\u0026gt;TM003\u0026lt;\/a\u0026gt;. To make the complete growth medium, add the following components to the base medium: fetal bovine serum (\u0026lt;a href=\u0022\/usda-research-grade-origin-fetal-bovine-serum-tm999-500.html#TM999\u0022\u0026gt;TM999\u0026lt;\/a\u0026gt;)* to a final concentration of 10% and Penicillin\/Streptomycin Solution (\u0026lt;a href=\u0022\/penicillin-streptomycin-solution-g255.html#G255\u0022\u0026gt;G255\u0026lt;\/a\u0026gt;) to a final concentration of 1%.\u0026lt;br\u0026gt;Change media every 2-3 days.\u0026lt;br\u0026gt;Carbon dioxide (CO\u0026lt;sub\u0026gt;2\u0026lt;\/sub\u0026gt;): 5%, Temperature: 37.0\u0026deg;C.\u0026lt;br\u0026gt;\u0026lt;b\u0026gt;* Do not use heat-inactivated FBS for cell culture unless specified otherwise.\u0026lt;\/b\u0026gt;\u003C\/span\u003E\u003C\/p\u003E","usage":null,"freeze_thaw_recovery":null,"str_profile":null,"str_markers":"","subculture_protocol":"\u003Cp\u003EVolumes given below are for a T75 flask; proportionally increase or decrease the volume as required per culture vessel size. Subculture cells once the culture vessel is 80% confluent.\u003C\/p\u003E\n\u003Cp\u003E1. Aspirate the culture media, and add 2-3ml of pre-warmed 0.25% Trypsin-EDTA to the culture vessel.\u003C\/p\u003E\n\u003Cp\u003E2. Observe the cells under a microscope to confirm detachment (typically within 2-10 minutes). Cells that are difficult to detach can be put in 37\u0026deg;C, for several minutes to facilitate detachment.\u003C\/p\u003E\n\u003Cp\u003E3. Neutralize Trypsin-EDTA by adding an equal volume of the complete growth media into the culture vessel.\u003C\/p\u003E\n\u003Cp\u003E4. Transfer the culture suspension into a sterile centrifuge tube, and centrifuge at 125xg for 5 minutes. The actual centrifuge duration and speed may vary depending on the cell type.\u003C\/p\u003E\n\u003Cp\u003E5. Aspirate the supernatant, and re-suspend the pellet with pre-warmed fresh complete growth media. Add appropriate aliquots of the cell suspension to new culture vessels, as desired.\u003C\/p\u003E\n\u003Cp\u003E6. Incubate the cells at the recommended conditions.\u003C\/p\u003E","preservation_protocol":null,"passage_number":null,"qc":"\u003Cp\u003EReal Time PCR was used to quantify hTERT gene expression in immortalized cell line.\u003C\/p\u003E","shipping_conditions":"\u003Cp\u003EShip with dry ice.\u003C\/p\u003E","disclaimer_general":"\u003Cp\u003E1. Sale of this item is subjected to the completion of a Material Transfer Agreement (MTA) by the purchasing individual\/institution for each order. If you have any questions regarding this, please contact us at \u003Ca href=\u0022mailto:licensing@abmgood.com\u0022\u003Elicensing@abmgood.com\u003C\/a\u003E.\u003C\/p\u003E\n\u003Cp\u003E2. All test parameters provided in the CoA are conducted using \u003Cstrong\u003Eabm\u003C\/strong\u003E\u0027s standardized culture system and procedures. The stated values may vary under the end-user\u0027s culture conditions. Please verify that the product is suitable for your studies by referencing published papers or ordering RNA (0.5 \u0026mu;g, Cat.# C207, $450.00) or cell lysate (100 \u0026mu;g, Cat.# C206, $600.00) to perform preliminary experiments, or alternatively use our Gene Expression Assay Service (Cat# C138). All sales are final.\u003C\/p\u003E\n\u003Cp\u003E3. We recommend live cell shipments for ease of cell transfer and this option can be requested at the time of ordering. Please note that the end-user will need to evaluate the feasibility of live cell shipment by taking into account the final destination\u0027s temperature variation and its geographical location. In addition, we thoroughly test our cell lines for freeze-thaw recovery. If frozen cells were received and not recovered in your lab under the exact, specified conditions (using recommended culture vessel, media, additional supplements, and atmospheric conditions), a live cell replacement is possible at a cost (plus shipping).\u003C\/p\u003E\n\u003Cp\u003E4. All of \u003Cstrong\u003Eabm\u003C\/strong\u003E\u0027s cell biology products are for research use ONLY and NOT for therapeutic\/diagnostic applications. \u003Cstrong\u003Eabm\u003C\/strong\u003E is not liable for any repercussions arising from the use of its cell biology product(s) in therapeutic\/diagnostic application(s). Please contact a technical service representative for more information.\u003C\/p\u003E\n\u003Cp\u003E5. \u003Cstrong\u003Eabm\u003C\/strong\u003E makes no warranties or representations as to the accuracy of the information on this site. Citations from literature and provided for informational purposes only. \u003Cstrong\u003Eabm\u003C\/strong\u003E does not warrant that such information has been shown to be accurate.\u003C\/p\u003E\n\u003Cp\u003E6. \u003Cstrong\u003Eabm\u003C\/strong\u003E warrants that cell lines shall be viable upon initiation of culture for a period of thirty (30) days after shipment and that they shall meet the specifications on the applicable \u003Cstrong\u003Eabm\u003C\/strong\u003E Material Product Information sheet, certificate of analysis, and\/or catalog description. Such thirty (30) day period is referred to herein as the \u0022Warranty Period.\u0022\u003C\/p\u003E","caution":null,"transfection_reagents_type":null,"licensed_by":null,"licensed_from":null,"licensing_institution":null,"guarantee":null,"depositor":null,"licensor_name":null,"licensor_contact_information":null,"contract_termination_date":null,"links_purchased_separately":null,"samples_title":null,"links_title":null,"links_exist":null,"internal_supplier":"ABM","internal_product_note":null,"donor_history":"Female, 56, Caucasian","split_ratio":null,"expression":"\u003Cp\u003ESFRP2, smooth muscle actin-\u0026alpha;\u003C\/p\u003E","growth_conditions":"\u003Cp\u003EUse of PriCoat\u2122 T25 Flasks (\u003Ca class=\u0022abm-link\u0022 href=\u0022\/pricoat-t25-flasks.html\u0022\u003EG299\u003C\/a\u003E) or Applied Cell Extracellular Matrix (\u003Ca class=\u0022abm-link\u0022 href=\u0022\/applied-cell-extracellular-matrix-g422.html \u0022\u003EG422\u003C\/a\u003E) is required for cell adhesion to the culture vessels. PriGrow III (\u003Ca class=\u0022abm-link\u0022 href=\u0022\/prigrow-iii-medium-tm003.html\u0022\u003ETM003\u003C\/a\u003E) + 10% FBS + 1% Penicillin\/Streptomycin Solution (\u003Ca class=\u0022abm-link\u0022 href=\u0022\/penicillin-streptomycin-solution-g255.html\u0022\u003EG255\u003C\/a\u003E), 37.0\u00b0C, 5% CO\u2082\u003C\/p\u003E","recommend":"\u003Cp\u003EWorried about losing your cells due to growth or thawing difficulties, or even a random freezer breakdown? Enjoy peace of mind knowing that you can be covered under\u00a0\u003Cstrong\u003Eabm\u003C\/strong\u003E\u0027s\u00a0\u003Ca class=\u0022abm-link\u0022 href=\u0022\/cell-line-insurance.html\u0022\u003ECell Line Insurance\u003C\/a\u003E.\u003C\/p\u003E\r\n\u003Cp\u003ESale of this item is subjected to the completion of a Material Transfer Agreement (MTA) by the purchasing institution.\u003C\/p\u003E\r\n\u003Cp\u003EFor for-profit organizations, please contact \u003Ca class=\u0022abm-link\u0022 href=\u0022mailto:quotes@abmgood.com\u0022\u003Equotes@abmgood.com\u003C\/a\u003E for pricing.\u003C\/p\u003E ","references":"\u003Cp\u003EKITIYANANT, V., LOTRAKUL, P., KANCHANABANCA, C., PADUNGROS, P., PUNNAPAYAK, H., PRASONGSUK, S., \u0026amp; CHANVORACHOTE, P. (2019). Fusigen Reduces Intracellular Reactive Oxygen Species and Nitric Oxide Levels. In Vivo, 33(2), 425\u2013432. https:\/\/doi.org\/10.21873\/invivo.11490\u003C\/p\u003E\u003Cp\u003E\u003Cbr\/\u003E\u003C\/p\u003E\u003Cp\u003ELee, Y. H., Nam, G., Kim, M. K., Cho, S. C., \u0026amp; Choi, B. Y. (2020). Broussonetia papyrifera Promotes Hair Growth Through the Regulation of \u03b2-Catenin and STAT6 Target Proteins: A Phototrichogram Analysis of Clinical Samples.\u0026nbsp;Cosmetics,\u0026nbsp;7(2), 40.\u003C\/p\u003E","cryopreservation":"\u003Cp\u003ECryopreservation Medium (TM024), or complete growth media with 10% DMSO.\u003C\/p\u003E","unpacking_storage_instructions":"\u003Cp\u003E1. Visually examine the packaging containers for signs of leakage or breakage.\u003C\/p\u003E\n\u003Cp\u003E2. Immediately transfer frozen cells from dry ice packaging to a temperature below -130\u0026deg;C, preferably in liquid nitrogen vapor phase storage, until ready for use.\u003C\/p\u003E\n\u003Cp\u003ETo ensure the highest level of viability, thaw the vial and initiate culture as soon as possible upon receipt. If continued storage is desired, the vial should only be stored below -130\u0026deg;C or in liquid nitrogen vapor phase. Do not store at -70\u0026deg;C, as it will result in loss of viability.\u003C\/p\u003E\n\u003Cp\u003E\u0026nbsp;\u003C\/p\u003E","promotions":null,"sync_images":"","thawing_protocol":"\u003Cp\u003E1. Thaw cells quickly in a 37\u0026deg;C water bath while agitating gently (maximum 2 minutes). The vial cap should be kept above the water level to minimize the risk of contamination.\u003C\/p\u003E\n\u003Cp\u003E2. Decontaminate the vial by spraying and wiping the exterior of the vial with 70% ethanol. From this point onwards, all operations should be strictly carried out inside a biological safety cabinet using aseptic conditions.\u003C\/p\u003E\n\u003Cp\u003E3. Transfer the cell suspension into a 15ml sterile conical tube containing 5ml of pre-warmed, complete growth media. Centrifuge cells at 125xg for 5-7 minutes.\u003C\/p\u003E\n\u003Cp\u003E4. Aspirate the supernatant without disturbing the cell pellet. Re-suspend the cell pellet in the recommended pre-warmed, complete growth media and dispense into a T25 culture flask.\u003C\/p\u003E\n\u003Cp\u003E5. Incubate the cells at the recommended conditions.\u003C\/p\u003E","type_online":null,"parental_cell_line":null,"mutation_and_validations":null,"knockout_method":null,"clone_no":null,"created_at":"2022-09-07 08:13:18","updated_at":"2025-04-04 18:19:36","concentration":null},"seo":{"id":66458,"catalog_id":40343,"catalog_type":"App\\Models\\CatalogBaseCells","url_key":"immortalized-hair-follicle-dermal-papilla-cells-htert.html","meta_title":null,"meta_keywords":null,"meta_description":null,"created_at":"2022-09-23 06:53:13","updated_at":"2024-05-13 19:44:57"},"gene":null,"media":[{"id":388819,"parent_id":40343,"parent_type":"App\\Models\\CatalogBaseCells","file_path":"\/upload\/YdbRlVwf6xqao5M0ZdhyyWTfIfeClXU4dbLjy4vH.png","title":null,"text":null,"file_type":"image","alt":null,"url":null,"position":null,"status":1,"entity_id_m2":null,"sku_in_m2":null,"value_id_m2":null,"attribute_id":0,"created_at":"2025-04-04 18:18:52","updated_at":"2025-04-04 18:18:52"}]}