text:
Thank you for visiting nature.com. You are using a browser version with limited support for CSS. To obtain the best experience, we recommend you use a more up to date browser (or turn off compatibility mode in Internet Explorer). In the meantime, to ensure continued support, we are displaying the site without styles and JavaScript.

# A proposal for comprehensive newborn hearing screening to improve identification of deaf and hard-of-hearing children

## Abstract

Early intervention for newborns who are deaf or hard-of-hearing leads to improved language, communication, and social–emotional outcomes. Universal physiologic newborn hearing screening has been widely implemented across the United States with the goal of identifying newborns who are deaf or hard-of-hearing, thereby reducing time to diagnosis and intervention. The current physiologic newborn hearing screen is generally successful in accomplishing its goals but improvements could be made. In the past ten years, genetic testing has emerged as the most important etiological diagnostic test for evaluation of children with deafness and congenital cytomegalovirus has been recognized as a major cause of childhood deafness that may be treatable. A comprehensive newborn hearing screen that includes physiologic, genetic, and cytomegalovirus testing would have multiple benefits, including (1) identifying newborns with deafness missed by the current physiologic screen, (2) providing etiologic information, and (3) possibly decreasing the number of children lost to follow up. We present a framework for integrating limited genetic testing and cytomegalovirus screening into the current physiologic newborn hearing screening. We identify needed areas of research and include an overview of genome sequencing, which we believe will become available over the next decade as a complement to universal physiologic newborn hearing screening.

## INTRODUCTION

The impact of permanent deafness on a child’s development is profound. It affects not only language acquisition but also social development and quality of life.1 Early detection of congenital deafness with targeted intervention significantly reduces negative impacts in these areas.2,3,4 In 1994, the Joint Committee on Infant Hearing (JCIH) published a position statement that endorsed the goal of universal detection of infants with deafness and encouraged continuing research and development to improve techniques for detection of and intervention for deafness as early as possible.5,6 Today, the crucial role of newborn hearing screening (NBHS) is emphasized by the fact that 43 states and territories of the United States have passed laws mandating NBHS, with the remainder of states having implemented universal NBHS without legislation. Currently, the JCIH recommends universal NBHS by 1 month of age, diagnosis by 3 months of age, and early intervention by 6 months of age to allow optimal intervention for children with deafness, if warranted and if desired by the family.7

The most recent data show that 98.2% of newborns in the United States receive NBHS.8 Universal screening has led to a significant reduction in the average age at which newborns with congenital deafness are identified in this country.9 Although the current universal NBHS has been remarkably successful in improving the early diagnosis and intervention in newborns who are deaf or hard-of-hearing (DHH), as will be detailed below, knowledge gained from the universal NBHS, an improved understanding of the genetics of hearing loss, as well as an increased recognition of the contribution of congenital cytomegalovirus (cCMV) to childhood deafness have provided an opportunity to improve the current NBHS.

Over the past 20 years, our understanding of genetic deafness has greatly improved. Along with diagnostic audiologic evaluation, diagnostic genetic testing platforms now form a cornerstone for evaluation of DHH newborns and children.10,11,12 An etiological diagnosis is provided in 49% of DHH newborns who undergo genetic testing.13 Genetic testing can also identify mild deafness, later-onset childhood deafness, syndromic forms of deafness, risk factors for aminoglycoside-induced deafness, and auditory neuropathy that may not be detected by the current physiologic NBHS. A genetic test for deafness that could be translated into a universal genetic screening test would form a powerful complement to the current NBHS; however, to date no genetic screening has been incorporated as part of a NBHS program in the United States.

An additional important contributor to childhood deafness is congenital cytomegalovirus infection (cCMV), estimated to be a cause of ~10% of congenital deafness and 15–20% of childhood deafness.14,15 Because cCMV often presents as mild, fluctuating, and progressive deafness, detection with a physiologic screen can be challenging.16 The incorporation of cCMV screening in a NBHS program would provide etiological information, improve ascertainment, and further complement the physiologic NBHS.

Creating a comprehensive newborn hearing screen that includes physiologic, genetic, and cytomegalovirus screening would have multiple benefits including (1) identifying newborns at risk for deafness and who could benefit from early intervention but are missed by the current physiologic screen, (2) providing etiologic information as part of the screen, (3) possibly decreasing the number of children who are lost to follow up, and (4) potentially saving costs by reducing the frequency of later testing. In this paper, we aim to provide a conceptual framework for a comprehensive NBHS program that incorporates the current physiologic screening as well as molecular screening that includes genetic screening and cCMV screening (Fig. 1). A comprehensive NBHS of this nature would require three concurrent screening methods, with results that inform the final screening result. Its implementation will likely require incremental steps and goals, particularly with respect to the incorporation of a form of nucleotide-level genetic screening, as there is no precedent in the United States. Targeted cCMV screening for those newborns who fail the physiologic screen has been incorporated in several states and therefore there is precedent for this form of molecular screening.

We first provide an overview of the current physiologic NBHS, including examination of areas of needed improvement. We next examine the available evidence that genetic and cCMV testing could improve the NBHS. Finally, we address challenges and barriers to accomplishing the goal of an improved NBHS, including patient and family perspectives. We believe that a comprehensive NBHS would significantly improve detection of newborns with deafness, advance our understanding of deafness in children, improve time to diagnosis and time-to-intervention, provide more intervention options for families across the childhood age span, and lay the foundation for improved treatment and support for children who are DHH.

## THE CURRENT NBHS: STRENGTHS AND WEAKNESSES

The prevalence of permanent deafness identified by state-based Early Hearing Detection and Intervention (EHDI) programs and reported to the Centers for Disease Control and Prevention (CDC) is 1.7 per 1000 births.8 This prevalence makes deafness the most common sensory deficit in humans. Universal NBHS is widely implemented in the United States, with 98.2% of newborns undergoing screening. From this perspective, the physiologic NBHS has been tremendously successful in regard to universal implementation and in its primary goal of decreasing the average age of identification of children with deafness.9

The goal of universal NBHS is to identify all newborns with permanent deafness. Both detecting and establishing an etiologic diagnosis for deafness in children are challenging because of the large number of possible causes and the wide clinical variability in presentation (Table 1). Hearing loss is described as slight (16–25 decibel hearing level, dB HL), mild (26–40 dB HL), moderate (41–55 dB HL), moderately severe (56–70 dB HL), severe (71–90 dB HL), or profound (>90 dB HL); can be unilateral or bilateral; and is either asymmetric or symmetric (Fig. 2). Select frequencies can be affected that can give an audiogram a specific shape or profile associated with specific genetic forms of deafness (for example, downsloping if high frequencies are impacted more than low frequencies, or upsloping if the reverse is true; Fig. 2). Deafness can also be defined by the site of impairment in the auditory system. A conductive hearing loss (CHL, see a list of definitions in Box 1) implies that transmission of sound through the external ear canal or middle ear is impaired, as in the case of a middle ear effusion, stenosis of the ear canal, or fixation of the ossicular chain. A sensorineural hearing loss (SNHL), in comparison, reflects compromised transmission of the neural signal along the auditory pathway, be it in the cochlea, the auditory nerve, or more proximally in the brainstem and cortex. In the United States and other developed countries, most permanent congenital deafness is SNHL and the majority of SNHL (~70%) is due to a genetic cause (Table S1).14,17 Environmental causes of SNHL, such as infections, hypoxia, and trauma, are a significant but smaller contributor to congenital deafness compared with genetic causes.

The ideal NBHS, as is the case for any screening test, must be inexpensive, easy to learn and to administer by screeners, acceptable to the screened individuals, and able to identify the presence or absence of deafness with few false positives (high specificity) and few false negatives (high sensitivity). Nearly all current NBHS programs in the United States use a physiologic evaluation of auditory function in response to sound. Methods used include an otoacoustic emission (OAE) screening test, which measures responses from the outer hair cells of the cochlea; an automated auditory brainstem response (AABR) screening test, which records response to sound based on the neural transmission of a signal from the cochlea to the brainstem; or a combination of both. These screening tests are low cost and can be administered within minutes by a trained screener. As highly validated testing methods, they have been widely adopted. The NBHS results in a “pass” (screened negative) or a “refer/fail/did not pass” (screened positive) indicating possible deafness and the need for further evaluation.

For newborns who do not pass the NBHS, diagnostic/confirmatory audiological testing is required to determine the type, degree, and configuration of hearing loss. Further clinical evaluation focuses on determining the etiological cause of deafness and is performed in concert between the primary care provider and otolaryngologist. This evaluation varies based on type of deafness but by current guidelines should include clinical examination and genetic testing, followed by imaging, other laboratory tests, and referrals to specialists as indicated.11 Further referrals and follow ups in the health-care system are guided by findings determined by evaluation and frequently include referral to a geneticist and other relevant medical specialists, as determined by clinical findings. Typically, the finding of deafness is also reported to the state EHDI program. A treatment or habilitation plan is then developed that can range from preferential seating in school and speech therapy, to sign language, assistive devices, and/or surgical intervention such as cochlear implantation. Although it has been remarkably successful in improving identification of children with hearing loss, there are several ways in which the current physiologic NBHS could be improved, and these are detailed below.

### The current physiologic NBHS has a low positive predictive value

Any screening test must weigh false negatives versus false positives to best serve the population screened. “False positive” may refer to the actual screening device used but here we refer to the overall result given to parents—“pass” or “refer”—versus the subsequent diagnostic confirmatory physiologic testing, which serves as the “gold standard.” The positive predictive value (PPV) is the probability that subjects who screen positive truly have the disease. An ideal screening test would have a high PPV and a high sensitivity. While negative predictive value and specificity are also considered in design of screening tests, a confirmatory or diagnostic test should aim for a high negative predictive value and a high specificity as false negatives are reduced.

Data show that of the 3,866,820 newborns who underwent NBHS in 2015, 64,978 (1.7%) did not pass. Of these children, 39,468 (60.7%) went on to have confirmatory audiologic testing.8 Of these, only 6442 (16.3%) were found to have deafness on confirmatory diagnostic audiometric testing. Therefore, 83.7% of children who screened positive did not have deafness, equating to a PPV of 16.3% and a specificity of 98.6% for the NBHS. The true sensitivity of this screening program is not known, as there are no large studies that have performed diagnostic testing on all newborns to identify the number of false negative instances (i.e., newborns who passed screening but were found to have deafness). From a practical sense, this means that the vast majority of newborns who refer on the physiologic NBHS do not have permanent deafness.

While the false positive rate is a concern for the physiologic NBHS, other newborn screening tests have similar performance. For example, a study in California showed that of 755,673 newborns screened for a panel of inborn errors of metabolism using tandem mass spectrometry, 461 newborns screened positive (0.13%) (ref. 18). Of the 386 children who underwent confirmatory testing, 335 (86.7%) were found to be false positives and have no inborn errors of metabolism. For this panel, the overall PPV is 13.2%. Other newborn screenings for inborn errors of metabolism have similar false positives rates and positive predictive values.19,20

As a universal screening test performed on a vulnerable population, reducing the false positive rate for the NBHS is important. False positives have the immediate effect of not only unnecessarily worsening parental anxiety21 and increasing health-care costs but also may lead to a decrease in follow up (discussed in a separate section below). Increasing the PPV should be a goal to improve the current physiologic NBHS but is not an inherent benefit of adding genetic screening.

### Types of deafness that are not identified by the current NBHS

The effect of mild-to-moderate hearing loss on language development has been heavily debated, but new data and review of previous studies indicate that it is in fact a significant risk factor for communication difficulties.22 Data from the CDC show that the majority (56.1%) of bilateral deafness in newborns is mild to moderate,8 however an even larger percentage of newborns may be affected, as very mild deafness can go undetected by NBHS (depending on the thresholds and testing methods that are used). Although implementing physiologic screening at lower hearing levels would detect more mild-to-moderate deafness, it would also increase false positive rates and burden confirmatory diagnostic audiology evaluation. The precise sound intensity used in the NBHS is difficult to define accurately because screening equipment manufacturers choose stimulus levels and characteristics for their own equipment that cannot be adjusted by the operator. The screening level of AABR is typically programmed into the screening equipment; this level is based on research indicating the optimal screening level for AABR. There are no calibration standards for transient stimuli or for determining the actual stimulus levels in ear canals of newborns, which may be greater than specified by the manufacturer because of the small size of a newborn ear canal, possibly leading to false negative results. Identification of infants with permanent and/or progressive mild deafness is integral to improving the current physiologic NBHS.

Children who develop deafness after the newborn period will not be detected by the current NBHS. This limitation is important as the number of children with significant hearing loss increases throughout childhood from a congenital prevalence of 1.7 per 1000 births8 to a best-estimated prevalence during childhood of 31 per 1000 (ref. 23). Studies of the prevalence of childhood deafness are primarily based on surveys and although further research in this area is needed, particularly in regard to prevalence in preschool-aged children; it is clear that the prevalence of deafness increases with age during childhood.23 Importantly, a significant number of children who develop prelingual deafness following the newborn period are not detected by the currently implemented NBHS. Dedhia and coauthors estimated that nearly 25% of all children with SNHL are not identified by the NBHS and that nearly two-thirds of these had severe-to-profound deafness.24 Young et al. found that 30% of all cochlear implant candidates passed their NBHS and these children had significantly delayed treatment.25 It is unclear based on current studies whether these children had congenital deafness or deafness that began soon after the newborn period and further study is needed to clarify this point. However, because these children are not identified by the current universal NBHS, the detection of their deafness currently occurs through a patchwork of school-age hearing screening programs that vary significantly by state. Establishing a universal NBHS that is able to identify children with deafness that occurs outside the newborn period would prevent a delay in diagnosis and treatment.

Auditory neuropathy spectrum disorder (ANSD) is characterized by absent or severely abnormal inner hair cell (IHC), synaptic, and/or spiral ganglion function as measured by ABR testing, with preservation of outer hair cell (OHC) function as measured by OAE testing.26 Therefore, a newborn with ANSD manifesting as severe-to-profound deafness may go undetected by OAE screening when OAE screening is performed alone. The presentation of ANSD is also highly variable, with some infants and children with ANSD having asymmetric or unilateral deafness. At older ages, ANSD is accompanied by poor speech discrimination and poor word understanding, especially in the presence of noise. The prevalence of ANSD is reported to be 2.7% of DHH newborns identified by NBHS programs based on data from the CDC.8 Other reported data indicate the prevalence of ANSD to be 1.2%, 5.1%, or 8.4% depending on the population.27,28,29 Forty percent (40%) of ANSD is estimated to have a genetic basis, with the remainder due to acquired causes like hypoxia, prematurity, and jaundice, underscoring the increased rate of ANSD in neonatal intensive care units. The list of causative genes for ANSD includes DIAPH3, OTOF, PJVK, and mitochondrial DNA (mtDNA) variants (m.1095T>C) for nonsyndromic ANSD, and AIFM1, DDDP, MPZ, OPA1, PMP22, and TMEM126A for syndromic ANSD, although based on prevalence data there are likely other genes involved. The gene most frequently implicated in nonsyndromic ANSD is OTOF, which is estimated to be responsible for 0.5–3.5% of prelingual deafness across multiethnic cohorts.30,31,32 NBHS that relies only on OAE will not identify these babies, but fortunately the majority of neonatal intensive care units (where the rate of ANSD is highest) perform screening with AABR, as recommended by JCIH, and half of all NBHS is now performed with AABR. The actual number of newborns missed by the current NBHS due to ANSD is not known but ensuring these babies are screened is key to improving screening outcomes.

The current NBHS does not screen for a relatively common risk factor that can cause deafness in the newborn period. Several mitochondrial DNA variants lead to exquisite sensitivity to aminoglycoside-induced deafness. Aminoglycosides, in particular gentamicin, are commonly used in the neonatal period due to low cost and effectiveness against Gram-negative bacteria.33 Newborns who carry certain genetic variants in the mitochondrial gene MT-RNR1 can experience significant deafness with a single dose of these commonly used antibiotics. In addition, animal studies show that there is a synergistic effect of these genetic variants, aminoglycosides, and noise, which further predisposes these newborns to deafness. Prevalence of these mitochondrial variants was found to be 0.2% in one study of 703 children from a neonatal intensive care unit in the United States and 0.19% in a study of 58,397 Chinese children.34,35 Identifying these newborns with screening could have immediate treatment implications. In addition, diagnosis could prevent aminoglycoside-induced later-onset deafness in vulnerable individuals and lead to targeted cost-effective evaluation in maternal relatives after positive screening results from one individual.

### Limited etiological information is included in the current NBHS

The current NBHS provides a simple result: “pass” or “refer.” Subsequent audiologic and diagnostic evaluation provides information on degree of deafness and etiology. An extremely important goal of diagnostic testing for deafness in children is to identify etiologies that have further diagnostic and treatment implications. Among these are syndromic forms of deafness, the most common of which are described in Table S2 and include Usher syndrome (deafness–blindness), Pendred syndrome (deafness including inner ear malformations and thyroid goiter), branchiootorenal syndrome (BOR, branchial cleft anomalies, deafness, and renal abnormalities), Jervell and Lange-Nielsen syndrome (deafness and cardiac arrhythmias), and Alport syndrome (deafness, renal disease, and eye abnormalities). These syndromic forms of deafness are referred to as nonsyndromic hearing loss (NSHL) mimics because they present at birth as nonsyndromic deafness (no other associated abnormalities). Recent data show that these syndromes are more common than previously reported. In a cohort of 2460 individuals of all ages with deafness, the diagnoses of NSHL mimics totaled 25% of all diagnoses and most commonly included Usher syndrome (10%), followed by Pendred syndrome (5%), deafness–infertility syndrome (4%), and branchiootorenal syndrome (2%) (R.J.S. unpublished data). Further data are required on the clinical and ethical repercussions of early diagnosis of syndromic forms of hearing loss. Early genetic diagnosis of syndromic forms of deafness would significantly reduce other testing and provide opportunities for early intervention.

Identification of a genetic etiology has not only the potential to inform prognostic monitoring of deafness and/or associated syndromic features, but may also refine estimates of recurrence risk for family members. The information may influence family reproductive and financial planning.

### There are a large number of newborns lost to follow up in the current NBHS

A significant number of newborns are lost to diagnostic follow up in the current NBHS protocol. The most recent data from 2015 showed that 27.9% of newborns who referred on NBHS were lost to follow up prior to diagnostic audiology.8 Of these newborns, 54.7% were due to unknown reasons; 14.7% were cases in which there was an inability to contact the newborn’s guardian; and in the remaining 30.6% of cases, the parents or family were contacted but were not responsive to follow-up requests.8 There are several reasons that children are lost to follow up including social, economic, and geographic factors.36 Data show that altering testing methodologies, including a screen–rescreen policy as well as increasing time from birth can improve positive predictive value, but further research is needed in this area37,38,39 It is not unreasonable to assume that by providing more etiologic information to parents during the screening process and improving the positive predictive value of screening, fewer children would be lost to follow up. Providing an etiologic diagnosis sooner may motivate parents to seek early intervention services but further study in this area is needed.

## Incorporating genetic screening into the NBHS

Our understanding of the molecular physiology of hearing and deafness has improved dramatically in the past two decades, in part through the study of genetic causes of deafness. The first gene to be implicated in nonsyndromic human deafness, GJB2, was discovered in 1997.40 Since that time, over 130 genes and nearly 8000 genetic variations have been identified that are associated with nonsyndromic deafness (Table S1). These variations differ significantly based on ethnic population examined. In addition, there are more than 600 clinical syndromes that include deafness; in several, deafness is the first presenting clinical feature (NSHL mimics) (Table S2).

The extreme genetic heterogeneity of deafness has made single-gene targeted genetic testing inefficient compared with its use in disorders where a single primary underlying genetic cause predominates (e.g., testing the CFTR gene to diagnose cystic fibrosis). In addition, with respect to deafness, sequential single-gene sequencing tests are costly, time-consuming, and relatively low in their diagnostic yield.41 The first clinical diagnostic genetic test for deafness, evaluation for variants in GJB2, began in 1999. Initial tests were based on variant detection assays, but these assays quickly gave way to single-gene Sanger sequencing, which has now been replaced by comprehensive genetic testing using massively parallel sequencing techniques. Multiple genes are sequenced in parallel to provide a complete analysis of the genetic landscape, which is essential for a heterogeneous condition like deafness. Massively parallel sequencing was first demonstrated for genetic testing for deafness in 2010 and was shown to have an analytical sensitivity and specificity of >99% for single-nucleotide variant detection making it suitable for clinical genetic testing.42 Massively parallel sequencing is now the standard of care for the genetic evaluation of children with deafness as recommended by the American College of Medical Genetics and Genomics and the International Pediatric Otolaryngology Working Group.11,12

Recent data show that when a comprehensive genetic testing platform is used to evaluate persons with deafness, including all ages and types of deafness with no exclusionary criteria, a diagnosis is provided in ~40% of cases.10,30 Data from 2460 individuals with deafness run on the OtoSCOPE platform from the University of Iowa Molecular Otolaryngology and Renal Research Labs (MORL) show a diagnostic rate of 39.9% (R.J.S., unpublished data), which is consistent with a review of other published studies.10 This diagnostic rate varies based on gene content, variant interpretation standards, and patient population studied. In comparison, data from the Laboratory of Molecular Medicine (LMM) at Partners HealthCare show a diagnostic rate of 25.2%, an inconclusive rate of 57.8%, and a negative rate of 17.0% in a cohort of 1156 patients presenting for multigene panel testing (S.A. and J.S., unpublished data).

The number of individuals who are DHH that are provided a diagnosis from genetic testing varies based on clinical history such as the type of deafness, age of patient, family history, and ethnicity.30 For the large cohort of clinical samples from the University of Iowa, the diagnostic rate for those with congenital deafness was 53.6% (R.J.S., unpublished data). Published data show that in those affected by congenital deafness, if there is also a family history consistent with dominant or recessive inheritance, the diagnostic rates are 67% and 55%, respectively. It is likely that these percentages will increase as additional genetic causes of deafness are identified. Data from the University of Iowa show that diagnostic rates decrease with age of onset of deafness, and are 39.6% at 3–6 years and 27.3% at 12–18 years, paralleling the increase in nongenetic causes of deafness with increasing age (rates based on age at testing as precise data on age of onset are not available).

In comparison, other commonly used diagnostic tests for evaluation of children with deafness have lower diagnostic rates: computed tomography imaging, 30% (ref. 43); magnetic resonance imaging, 26% (ref. 44); ophthalmologic evaluation, 8%; renal ultrasound, 4%; and electrocardiogram, 1% (ref. 45). Genetic testing therefore has the highest diagnostic rate of any test used to identify the etiological cause of childhood deafness and is now recommended as the first-line test in evaluation of children with documented bilateral SNHL.10

There are several commercially available comprehensive genetic testing platforms (Genetic Testing Registry). The number of genes included, cost, and turnaround time vary, but in general most platforms rely on targeted genomic enrichment and massively parallel sequencing technologies, which allow sequencing of many genes simultaneously.46 Average turnaround time per test is 2–3 months and listed prices range from ~$1500 to$5000 per test. More importantly, however, is the downstream analysis, which can result in differences at the level of the identification and/or interpretation of genetic variants.

The inclusion of copy-number variant (CNV) analysis in comprehensive genetic testing is crucial, as has been illustrated in a study of 686 patients in which at least one CNV was identified in 104 persons (15.2%) and implicated in the genetic diagnosis 18.7% of the time.47 CNVs were most commonly identified in STRC (73% of CNVs identified) followed by OTOA (13% of CNVs identified). More recent, unpublished data confirm that CNVs in STRC are one of the most commonly detected pathogenic variants causing deafness and the second most common gene implicated in deafness behind GJB2 (Table 2, 3). If only mild-to-moderate deafness is considered, STRC deletion is the most common cause of deafness.

Importantly, comprehensive genetic testing for deafness also includes testing for NSHL mimics. These diagnoses comprise up to 25% of all genetic diagnoses in children undergoing genetic testing for deafness (R.J.S., unpublished data). Identification of these syndromic forms of deafness in newborns directly affects follow-up testing and care and reduces time to diagnosis. In addition, comprehensive genetic testing evaluates for mitochondrial variants that predispose to aminoglycoside-induced deafness and therefore can aid in prevention of this medication-related side effect.

Comprehensive genetic testing has several strengths that make it particularly valuable for the evaluation of newborns with deafness: (1) it provides an etiological diagnosis, (2) it tests for all severities of deafness (mild–profound), (3) it tests for syndromic forms of deafness, and (4) it can assess for risk of aminoglycoside-induced deafness. Therefore, incorporating some form of genetic testing as an additional screening component in the NBHS would (1) identify additional newborns and young children with deafness and at risk for deafness, (2) improve time to diagnosis and intervention, (3) identify comorbidities of congenital deafness that have important implications for medical management of children who are DHH, and (4) possibly reduce those lost to follow up.

Currently available comprehensive genetic tests used in the diagnostic evaluation of deafness are not suitable for the NBHS because of (1) high cost, (2) long turnaround time (weeks to months), (3) complexity of bioinformatics (including the identification of CNVs), and (4) challenges in variant interpretation (Table 4). Notwithstanding these challenges, genetic screening would add opportunities to improve detection of deafness thus justifying strategies to integrate its use into the NBHS. Three strategies—limited genetic evaluation for screening, comprehensive genetic sequencing, and genome evaluation—are discussed below.

### Limited genetic screening for NBHS

Implementation of limited genetic screening requires the selection of specific genes and/or variants, a challenging task given the extreme genetic heterogeneity of deafness. For example, in a cohort of 1119 patients with deafness, the gene most frequently implicated in deafness was GJB2.23 It accounted for 21.6% of diagnoses. In aggregate, however, ten genes accounted for 72.3% of all diagnoses (Table 2). At the variant level, in comparison, the ten most frequently encountered causative variants accounted for only 30.4% of diagnoses. The most commonly identified single causative variant in this cohort was a deletion involving STRC, which accounted for 11.8% of causative variants in individuals who were identified to have genetic hearing loss and can only be detected by CNV analysis. This type of genetic change cannot be identified using a nucleotide variant detection assay and would require a secondary screening assay.48

Data from 2460 individuals with deafness from a clinical genetic testing lab show the diminishing returns associated with sequencing an ever-higher number of genes (R.J.S., unpublished data, Figure S1). In this group of 2460 individuals, 79 different genes were identified as causative, with 34 genes accounting for only one or two diagnoses each. Therefore, there appear to be several genes that could be selected for targeted genetic screening, but there are diminishing returns as more genes are added (Figure S1). A limited panel of genes may provide an avenue for developing genetic NBHS. However, as described below, the logistics of this type of screening would prove challenging.

Several groups have studied the value of limited panels of genes or variants to augment NBHS in large cohorts. In a recent study of 5173 Chinese newborns, screening of four genetic variants resulted in identification of 46 newborns who passed the physiologic NBHS but had a genetic cause of deafness identified and therefore were not detected by physiologic NBHS.49 This study is limited in that long-term follow up to evaluate the degree of deafness in these children was not provided and so the exact type of deafness caused by these genetic variants is not known. In addition, one of the variants evaluated, GJB2 p.V37I, while very common particularly in Asian populations, has variable penetrance and causes mild-to-moderate hearing loss, making definitive interpretation of screening results difficult. A larger study of 58,397 Chinese newborns who were screened for 20 common genetic variants identified a genetic carrier result in 5.28% and the identification of five newborns with a positive genetic diagnosis of deafness who passed their NBHS in both ears.35 Another recent study that included concurrent genetic and physiologic screening in 1716 Chinese newborns found that 47% of those with a definitive GJB2 genetic diagnosis passed their physiologic screening.50 In contrast, three similar studies of 14,913, 10,043, and 2500 newborns that used a combination of sequencing approaches to detect common variants found no newborns who passed their physiologic NBHS but had a positive genetic diagnosis of deafness.51,52,53 The largest study to date of 142,417 Chinese newborns identified a carrier rate of 3.01% for the four most common genetic causes of deafness but did not include audiologic data to determine how genetic screening could augment physiologic screening.54 This variability in detection rates might reflect differences in sample sizes, variants screened, and screening methodologies; however, the data do indicate that even limited genetic screening can identify newborns who otherwise would have been missed by physiologic screening alone.

Limited genetic screens have inherent ethnic bias, which is an important drawback in a racially and ethnically diverse population like that of the United States. Table S3 shows the top 20 most commonly encountered pathogenic variants in GJB2, illustrating the significant differences among populations with respect to the most commonly encountered pathogenic variants. Note that in these six populations, there are 15 different variants that are rarely shared between populations. Of the top five variants, only one is shared among the East Asian, Latino, European, and African populations. These data underscore the challenge in implementing limited genetic variant screening in an ethnically diverse population. Screening for deafness genes and not variants could circumvent some of this ethnic bias because many genetic variants are ethnically specific. However, the candidate genes or variants for screening would need to be thoughtfully selected to provide the best screening for a given population.

A limited genetic variant screening tool would ideally use only a single methodology. Polymerase chain reaction followed by restriction fragment length polymorphism (PCR-RFLP) analysis, single-nucleotide polymorphism (SNP) microarray, and matrix-assisted laser desorption ionization time-of-flight mass spectrometry (MALDI-TOF MS) have all been used for genetic screening, each with its own advantages and disadvantages. New methods of screening for deafness variants continue to be developed. A recent study using a custom PCR-based, multiplex ligation assay to screen for 115 variants cost $25 per sample.55 Another recently developed method using real-time PCR and melting curve analysis to detect 12 variants costs less than$10 (ref. 56). A third method that relies on multiplex PCR followed by a “reverse dot blot assay” can screen for 20 variants at a reported cost of $3 per sample.57 Finally, a fluidic microarray-based screening for nine common variants for deafness in patients of European ancestry has been validated and costs$30 per sample.58 All methods would need to be compared with gold standard genetic diagnostics prior to implementation as part of a genetic NBHS. In addition, the variants used for screening would need to be carefully selected based on goals of the screening and the population to be screened.

### Disclosure

The authors declare no conflicts of interest.

## Author information

Authors

### Corresponding authors

Correspondence to Cynthia C. Morton PhD or Richard J. Smith MD.

Publisher’s note: Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

## Rights and permissions

Reprints and Permissions

Shearer, A.E., Shen, J., Amr, S. et al. A proposal for comprehensive newborn hearing screening to improve identification of deaf and hard-of-hearing children. Genet Med 21, 2614–2630 (2019). https://doi.org/10.1038/s41436-019-0563-5

• Accepted:

• Published:

• Issue Date:

### Keywords

• newborn hearing screening
• deafness
• genetics
• genomics
• cytomegalovirus

• ### A multiplex PCR amplicon sequencing assay to screen genetic hearing loss variants in newborns

• Haiyan Yang
• , Hongyu Luo
• , Guiwei Zhang
• , Junqing Zhang
• , Zhiyu Peng
•  & Jiale Xiang

BMC Medical Genomics (2021)

• ### Molecular diagnosis of non-syndromic hearing loss patients using a stepwise approach

• Jing Wang
• , Jiale Xiang
• , Lisha Chen
• , Hongyu Luo
• , Xiuhua Xu
• , Nan Li
• , Chunming Cui
• , Jingjing Xu
• , Nana Song
• , Jiguang Peng
•  & Zhiyu Peng

Scientific Reports (2021)

• ### Differential genetic diagnoses of adult post-lingual hearing loss according to the audiogram pattern and novel candidate gene evaluation

• John Hoon Rim
• , Byunghwa Noh
• , Young Ik Koh
• , Sun Young Joo
• , Kyung Seok Oh
• , Kyumin Kim
• , Jung Ah Kim
• , Da Hye Kim
• , Hye-Youn Kim
• , Jee Eun Yoo
• , Seung-Tae Lee
• , Jin Woong Bok
• , Min Goo Lee
• , Jinsei Jung
• , Jae Young Choi
•  & Heon Yung Gee

Human Genetics (2021)

• ### Genome-first approach to rare EYA4 variants and cardio-auditory phenotypes in adults

• , Binglan Li
• , Joseph Park
• , Batsal Devkota
• , Marijana Vujkovic
• , Yi-An Ko
• , David Van Wagoner
• , W.H. Wilson Tang
• , Ian Krantz
• , Marylyn Ritchie
• , Jason Brant
• , Michael J. Ruckenstein
• , Douglas J. Epstein

Human Genetics (2021)

• ### Disease-specific ACMG/AMP guidelines improve sequence variant interpretation for hearing loss

• Mayher J. Patel
• , Marina T. DiStefano
• , Andrea M. Oza
• , Emma H. Wilcox
• , Sarah E. Hemphill
• , Brandon J. Cushman
• , Andrew R. Grant
• , Rebecca K. Siegert
• , Jun Shen
• , Alex Chapin
• , Nicole J. Boczek
• , Lisa A. Schimmenti
• , Kiyomitsu Nara
• , Margaret Kenna
• , Hela Azaiez
• , Kevin T. Booth
• , Karen B. Avraham
• , Hannie Kremer
• , Andrew J. Griffith
• , Heidi L. Rehm
• , Sami S. Amr
• , Ahmad N. Abou Tayoun
• , Sonia Abdelhak
• , John Alexander
• , Zippora Brownstein
• , Rachel Burt
• , Byung Yoon Choi
• , Lilian Downie
• , Thomas Friedman
• , Anne Giersch
• , John Greinwald
• , Jeffrey Holt
• , Makoto Hosoya
• , Un-Kyung Kim
• , Ian Krantz
• , Suzanne Leal
• , Saber Masmoudi
• , Tatsuo Matsunaga
• , Matías Morín
• , Cynthia Morton
• , Hideki Mutai
• , Arti Pandya
• , Richard Smith
• , Mustafa Tekin
• , Shin-Ichi Usami
• , Guy Van Camp
• , Kazuki Yamazawa
• , Hui-Jun Yuan
• , Elizabeth Black-Zeigelbein
•  & Kejian Zhang

Genetics in Medicine (2021)


text:
identicon-0.2.2: Flexible generation of identicons

Graphics.Identicon.Primitive

Description

Various primitives and combinators that help you write code for your identicon. Filling functions is where you start. They create color layers that occupy all available space. If you want to limit a layer in size, specify where this smaller part should be, take a look at the “Position, size, and shape” section. It also contains the circle combinator that limits a given filling is such a way that it forms a circle. Finally, we have combinators that add symmetry to layers and other auxiliary functions.

As a starting point, here is the function that generates a circle with gradient filling changing from black (on the left hand side) to some color (on the right hand side):

f :: Word8 -> Word8 -> Word8 -> Layer
f r g b = circle \$ gradientLR id black (PixelRGB8 r g b)

The function consumes 3 bytes from a hash when it's used in identicon.

Synopsis

# Filling

Black is a special color, it means absence of light. We give this pixel a name because it's used very frequently in layer coding.

Layer filled with a given color.

Arguments

 :: (Float -> Float) Gradient transforming function -> PixelRGB8 Left color -> PixelRGB8 Right color -> Layer

Gradient changing from left to right.

Arguments

 :: (Float -> Float) Gradient transforming function -> PixelRGB8 Top color -> PixelRGB8 Bottom color -> Layer

Gradient changing from top to bottom.

Arguments

 :: (Float -> Float) Gradient transforming function -> PixelRGB8 Top left color -> PixelRGB8 Bottom right color -> Layer

Gradient changing from top left corner to bottom right corner.

Arguments

 :: (Float -> Float) Gradient transforming function -> PixelRGB8 Top right color -> PixelRGB8 Bottom left color -> Layer

Gradient changing from top right corner to bottom left corner.

Arguments

 :: (Float -> Float) Gradient transforming function -> PixelRGB8 “Edge” color -> PixelRGB8 Color in the center -> Layer

Gradient with one color everywhere and another in the center.

A note about “gradient transforming functions”: these normally map value changing from 0 to 1 somehow, but they should not produce values outside of that range. With help of such functions you can change character of gradient transitions considerably.

A built-in gradient transforming function. It maps continuous floating value changing from 0 to 1 to value changing from 0 to 1 (in the middle) and back to 0.

# Position, size, and shape

Arguments

 :: Integral a => Int Number of horizontal positions -> Int Number of vertical positions -> a Index of this cell -> Layer Layer to insert -> Layer Resulting layer

onGrid w h n l, given grid that has w horizontal discrete positions (of equal length) and h vertical positions, it makes given layer l occupy cell at index n. This approach allows you control position and size at the same time.

The index n can be greater than maximal index, in this case reminder of division of n by w * h is used.

Limit given layer so it forms a circle.

# Symmetry

Add horizontal symmetry to a layer.

Add vertical symmetry to a layer.

Add horizontal and vertical symmetry to layer. Result is a layer with four mirrored repetitions of the same figure.

Just like hvsym, but every repetition is rotated by 90°. Only works with square layers because for speed it just swaps coordinates.

# Other

oneof :: Integral n => [a] -> n -> a Source #

Select one of provided alternatives given a number.

format: plain


text: Johan Bijnens, Ilaria Jemos Hard Pion Chiral Perturbation Theory for $B\to\pi$ and $D\to\pi$ Formfactors Abstract We use one-loop Heavy Meson Chiral Perturbation Theory (HMCHPT) as well as a relativistic formulation to calculate the chiral logarithms $m^2_\pi\log{\left(m^2_\pi/\mu^2\right)}$ contributing to the formfactors of the semileptonic $B\rightarrow \pi$ decays at momentum transfer $q^2$ away from $q^2_\mathrm{max}=(m_B-m_\pi)^2$. We give arguments why this chiral behavior is reliable even in the energy regime with hard or fast pions. These results can be used to extrapolate the formfactors calculated on the lattice to lower light meson masses. LU TP 10-16


text:
# Tag Info

## Hot answers tagged encryption

6

There are three distinct computational problems related to RSA. They are: FACTORIZATION: given an RSA modulus $n$, find its prime factors $p$ and $q$; ORDER: given an RSA modulus $n$, find the order $\lambda$ of the multiplicative group modulo $n$; RSA Problem: given a ring element $a \in \mathbb{Z}_n$, a public exponent $e$ and an RSA modulus, find an ...

3

Wow that's a broad question. The shortest answer is that lots of Public Key Cryptography is based around a collection of mathematical problems that we believe are hard to solve. Why do we believe they're hard to solve? Because they're age-old Algebra (well, normally Number Theory actually but still) problems that mathematicians and computer scientists have ...

3

To see the problem, let's see how I would chain up a single function (call it $AES\,CBC_k(iv, m)$) which only encrypts a single block at a time into something that can encrypt "chunks" of any size. Let $m=m_1||m_2||m_3||m_4$ be the message I want to encrypt. Each $m_i$ is a single block (in AES it is 128 bits). I want to use $AES\,CBC_k$ to encrypt $m$. The ...

2

Leaving text encryption and padding questions aside and focusing on the header stuff, here's how I'd approach the problem: FileHeader = { BYTE Salt[16] # Random bytes, K = KDF(Salt, Password) BYTE EncHdr[] # EncHdr = AES-GCM(K, h0...h5) } Salt is a sequence of random bytes (it's there to prevent Rainbow table attacks) EncHdr is the encrypted version ...

2

In step 9, you decrypted the ciphertext, 128, to the original message, 2. That's it. You're done with the toy example of naive RSA encryption/decryption. Using RSA in real life, you would apply padding, such as OAEP (also known as PKCS#1v2), to your message before raising it to the e power modulo n. If the plaintext you're trying to encrypt is quite short, ...

Only top voted, non community-wiki answers of a minimum length are eligible


text:
NFTs

We are the Borg.
Pyrrho
Posts: 31302
Joined: Sat Jun 05, 2004 2:17 am
Title: Man in Black
Location: Division 6

NFTs

The flash of light you saw in the sky was not a UFO. Swamp gas from a weather balloon was trapped in a thermal pocket and reflected the light from Venus.
Anaxagoras
Posts: 29263
Joined: Wed Mar 19, 2008 5:45 am
Location: Yokohama/Tokyo, Japan

Re: NFTs

I just heard about non-fungible tokens yesterday. Apparently they allowed a digital artist to sell his work at a Christies auction:

The $69 Million JPEG Mike Winkelmann, a digital artist and graphic designer known as Beeple, was trying to find a better way to sell his art. He had thousands of works that he had produced over the past 13 years for his popular "Everydays" series, but there was a problem. The art market, made up of galleries and auction houses that dictate the value of creative works, was not an avenue through which he could do so for a simple reason: Digital art can be infinitely reproduced, making the works worthless. So when his friends told him that there was a way to change that, a way to label his illustrations as unique, singular pieces of art, Winklemann listened. He started looking into what are called "non-fungible tokens." Non-fungible tokens or NFTs have been a growing craze in the digital world. Like cryptocurrencies, NFTs are run on blockchains, digital ledgers that create an authentication of ownership. But unlike cryptocurrencies like Bitcoin or Ether, NFTs are designed to be unique assets. And the idea is that scarcity is what creates value. Because of this, artists have been flocking towards NFT markets as they search for greater success outside the conventional art world, Winklemann included. The result? The price for a Beeple NFT exploded. Before he knew it, Winklemann was making millions off of sales and resales of his art. And the traditional art market also took notice. They really took notice. Yesterday, an NFT of Beeple's "Everydays" sold at Christie's for$69 million.

Today on the show, how the blockchain broke the auction block.
A fool thinks himself to be wise, but a wise man knows himself to be a fool.
William Shakespeare
shemp
Posts: 7176
Joined: Thu Jun 10, 2004 12:16 pm
Title: inbred shit-for-brains
Location: Planet X

Re: NFTs

I'm going to start doing this shit and get rich. Grandma Moses didn't start painting until she was 78. I've got a 15 year head start on her!
"It is not I who is mad! It is I who is crazy!" -- Ren Hoek

"what dicking deep shit i produce" -- pillory

Freedom of choice
Is what you got
Freedom from choice
Is what you want

People are shitting themselves to death
Crap so much they fail to take a breath
But even when their kids are starvin'
They thought Trump would throw them Charmin.
Pyrrho
Posts: 31302
Joined: Sat Jun 05, 2004 2:17 am
Title: Man in Black
Location: Division 6

Re: NFTs

I looked up info on how to get started and I think it's beyond my ability. Certainly beyond my hardware. Also I'm not going to open any cryptocurrency "wallets", given my recent experience with unemployment fraud.
The flash of light you saw in the sky was not a UFO. Swamp gas from a weather balloon was trapped in a thermal pocket and reflected the light from Venus.
Pyrrho
Posts: 31302
Joined: Sat Jun 05, 2004 2:17 am
Title: Man in Black
Location: Division 6

Re: NFTs

This guy sold his own grandma.

https://news.artnet.com/opinion/kenny-s ... ed-1950407

I can barely make HTML work, let alone figure out this here newfangled NFT malarkey.
The flash of light you saw in the sky was not a UFO. Swamp gas from a weather balloon was trapped in a thermal pocket and reflected the light from Venus.
Witness
Posts: 34426
Joined: Thu Sep 19, 2013 5:50 pm

Re: NFTs

Can we sell the forum, Pyrrho?

It's definitely an artwork… Akin to the Lascaux cave, with multiple layers, anonymous creators, labyrinths, collapsed galleries and even some skeletons in its darker parts.
shemp
Posts: 7176
Joined: Thu Jun 10, 2004 12:16 pm
Title: inbred shit-for-brains
Location: Planet X

Re: NFTs

My first NFT masterpiece is completed. Of course, it's far too sophisticated for peons such as you to appreciate, but I'm sure that you'll want to own a fine work of art that is certain to rapidly appreciate in value.

I give you: Midnight in Cairo!

Bidding begins at 10,000,000 USD.
Midnight in Cairo.jpg
You do not have the required permissions to view the files attached to this post.
"It is not I who is mad! It is I who is crazy!" -- Ren Hoek

"what dicking deep shit i produce" -- pillory

Freedom of choice
Is what you got
Freedom from choice
Is what you want

People are shitting themselves to death
Crap so much they fail to take a breath
But even when their kids are starvin'
They thought Trump would throw them Charmin.
shemp
Posts: 7176
Joined: Thu Jun 10, 2004 12:16 pm
Title: inbred shit-for-brains
Location: Planet X

Re: NFTs

Also, now that I am an artiste, you shall address me as "L'Artiste f/k/a shemp." I shall notify you when I have chosen an appropriate unpronounceable symbol to represent me.
"It is not I who is mad! It is I who is crazy!" -- Ren Hoek

"what dicking deep shit i produce" -- pillory

Freedom of choice
Is what you got
Freedom from choice
Is what you want

People are shitting themselves to death
Crap so much they fail to take a breath
But even when their kids are starvin'
They thought Trump would throw them Charmin.
gnome
Posts: 25706
Joined: Tue Jun 29, 2004 12:40 am
Location: New Port Richey, FL

Re: NFTs

His mama named him Shemp, imma call him Shemp.
Last edited by gnome on Thu Mar 25, 2021 11:38 am, edited 1 time in total.
"If fighting is sure to result in victory, then you must fight! Sun Tzu said that, and I'd say he knows a little bit more about fighting than you do, pal, because he invented it, and then he perfected it so that no living man could best him in the ring of honor. Then, he used his fight money to buy two of every animal on earth, and then he herded them onto a boat, and then he beat the crap out of every single one. And from that day forward any time a bunch of animals are together in one place it's called a zoo! (Beat) Unless it's a farm!"
--Soldier, TF2
Anaxagoras
Posts: 29263
Joined: Wed Mar 19, 2008 5:45 am
Location: Yokohama/Tokyo, Japan

Re: NFTs

This has to be a bubble.

Jack Dorsey tweet: Man who buys his first-ever post speaks out
The buyer of Twitter's first ever tweet by its founder Jack Dorsey for \$2.9m (£2.1m) sees it as a wise investment.

"It's a piece of human history in the form of a digital asset. Who knows what will be the price of the first tweet of human history 50 years from now," Malaysia-based Sina Estavi said.

Mr Estavi compared his newly-acquired tweet to Leonardo da Vinci's Mona Lisa.

Experts agree that the first tweet from the Twitter founder on his own platform is a highly valuable asset.
In what sense does he actually "own" the tweet even?
Jack Dorsey's tweet, which said "just setting up my twttr," was first published on 21 March 2006 and was auctioned off by Mr Dorsey for Give Directly's Africa Response charity.
OK, I guess if it's for charity, maybe it doesn't even matter. Just think of it as a donation to charity that comes with a little extra publicity. Is it still tax deductible though?
A fool thinks himself to be wise, but a wise man knows himself to be a fool.
William Shakespeare


text:
• Create Account

### #ActualJevi

Posted 15 December 2012 - 04:47 PM

I have tried looking for the solution but I haven't found anything discussing the whole process.

I'm trying to write my own fractal generator. What I do is I generate coordinates with a color associated with it which is loaded into vector<Point> _points. _points is then used to load the vector<float> _vertexBuffer and vector<float> _colorBuffer which are to be used to draw with the vbo. There might be a problem with the libraries that I'm linking. So suggestions on what opengl extension library I should use for vbos is welcomed. I have a feeling that I'm also not loading data in correctly from the buffers... any help is appreciated.

Here is my code, I'm sure someone could notice the problem pretty easily:

#define NO_SDL_GLEXT
#include <GL/glew.h>
#include <SDL.h>
#include <SDL_opengl.h>

...

unsigned int FractalGenerator::_vertexHandle;
unsigned int FractalGenerator::_colorHandle;
vector<float> FractalGenerator::_vertexBuffer;
vector<float> FractalGenerator::_colorBuffer;

...

struct Color
{
float r, g, b;
};
struct Point
{
float x, y;
Color c;
};

....

for (int i = 0; i < _points.size(); i++)
{
_vertexBuffer.push_back(_points[i].x);
_vertexBuffer.push_back(_points[i].y);
_colorBuffer.push_back(_points[i].c.r);
_colorBuffer.push_back(_points[i].c.g);
_colorBuffer.push_back(_points[i].c.b);
}

...

I'm getting a fault here, when I generate the the vbo for _vertexHandle

glGenBuffers(1, &_vertexHandle);
glBindBuffer(GL_ARRAY_BUFFER, _vertexHandle);
glBufferData(GL_ARRAY_BUFFER, _vertexBuffer.size() * sizeof(float), &_vertexBuffer.front(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glGenBuffers(1, &_colorHandle);
glBindBuffer(GL_ARRAY_BUFFER, _colorHandle);
glBufferData(GL_ARRAY_BUFFER, _colorBuffer.size() * sizeof(float), &_colorBuffer.front(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

...

glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glScaled(_zoomFactor, _zoomFactor, 1);
glTranslated(_xOffSet, _yOffSet, 0);
glBindBuffer(GL_ARRAY_BUFFER, _vertexHandle);
glVertexPointer(2, GL_FLOAT, 0, 0L);
glBindBuffer(GL_ARRAY_BUFFER, _colorHandle);
glColorPointer(3, GL_FLOAT, 0, 0L);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_POINTS, 0, _vertexBuffer.size());
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glPopMatrix();
SDL_GL_SwapBuffers();

### #6Jevi

Posted 15 December 2012 - 02:22 PM

I have tried looking for the solution but I haven't found anything discussing the whole process.

I'm trying to write my own fractal generator. What I do is I generate coordinates with a color associated with it which is loaded into vector<Point> _points. _points is then used to load the vector<float> _vertexBuffer and vector<float> _colorBuffer which are to be used to draw with the vbo. There might be a problem with the libraries that I'm linking. So suggestions on what opengl extension library I should use for vbos is welcomed. I have a feeling that I'm also not loading data in correctly from the buffers... any help is appreciated.

Here is my code, I'm sure someone could notice the problem pretty easily:

#define NO_SDL_GLEXT
#include <GL/glew.h>
#include <SDL.h>
#include <SDL_opengl.h>

...

unsigned int FractalGenerator::_vertexHandle;
unsigned int FractalGenerator::_colorHandle;
vector<float> FractalGenerator::_vertexBuffer;
vector<float> FractalGenerator::_colorBuffer;

...

struct Color
{
float r, g, b;
};
struct Point
{
float x, y;
Color c;
};

....

for (int i = 0; i < _points.size(); i++)
{
_vertexBuffer.push_back(_points[i].x);
_vertexBuffer.push_back(_points[i].y);
_colorBuffer.push_back(_points[i].c.r);
_colorBuffer.push_back(_points[i].c.g);
_colorBuffer.push_back(_points[i].c.b);
}

...

I'm getting a fault here, when I generate the the vbo for _vertexHandle

glGenBuffers(1, &_vertexHandle);
glBindBuffer(GL_ARRAY_BUFFER, _vertexHandle);
glBufferData(GL_ARRAY_BUFFER, _vertexBuffer.size() * sizeof(float), &_vertexBuffer.front(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glGenBuffers(1, &_colorHandle);
glBindBuffer(GL_ARRAY_BUFFER, _colorHandle);
glBufferData(GL_ARRAY_BUFFER, _colorBuffer.size() * sizeof(float), &_colorBuffer.front(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

...

glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glScaled(_zoomFactor, _zoomFactor, 1);
glTranslated(_xOffSet, _yOffSet, 0);
glBindBuffer(GL_ARRAY_BUFFER, _vertexHandle);
glVertexPointer(2, GL_FLOAT, 0, 0L);
glBindBuffer(GL_ARRAY_BUFFER, _colorHandle);
glVertexPointer(3, GL_FLOAT, 0, 0L);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_POINTS, 0, _vertexBuffer.size());
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glPopMatrix();
SDL_GL_SwapBuffers();

### #5Jevi

Posted 15 December 2012 - 02:20 PM

I have tried looking for the solution but I haven't found anything discussing the whole process.

I'm trying to write my own fractal generator. What I do is I generate coordinates with a color associated with it which is loaded into vector<Point> _points. _points is then used to load the vector<float> _vertexBuffer and vector<float> _colorBuffer which are to be used to draw with the vbo. There might be a problem with the libraries that I'm linking. So suggestions on what opengl extension library I should use for vbos is welcomed. I have a feeling that I'm also not loading data in correctly from the buffers... any help is appreciated.

Here is my code, I'm sure someone could notice the problem pretty easily:

#define NO_SDL_GLEXT
#include <GL/glew.h>
#include <SDL.h>
#include <SDL_opengl.h>

...

unsigned int FractalGenerator::_vertexHandle;
unsigned int FractalGenerator::_colorHandle;
vector<float> FractalGenerator::_vertexBuffer;
vector<float> FractalGenerator::_colorBuffer;

...

struct Color
{
float r, g, b;
};
struct Point
{
float x, y;
Color c;
};

....

for (int i = 0; i < _points.size(); i++)
{
_vertexBuffer.push_back(_points[i].x);
_vertexBuffer.push_back(_points[i].y);
_colorBuffer.push_back(_points[i].c.r);
_colorBuffer.push_back(_points[i].c.g);
_colorBuffer.push_back(_points[i].c.b);
}

...

I'm getting a fault here, when I generate the the vbo for _vertexHandle

glGenBuffers(1, &_vertexHandle);
glBindBuffer(GL_ARRAY_BUFFER, _vertexHandle);
glBufferData(GL_ARRAY_BUFFER, _vertexBuffer.size() * sizeof(float), &_vertexBuffer.front(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glGenBuffers(1, &;_colorHandle);
glBindBuffer(GL_ARRAY_BUFFER, _colorHandle);
glBufferData(GL_ARRAY_BUFFER, _colorBuffer.size() * sizeof(float), &_colorBuffer.front(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

...

glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glScaled(_zoomFactor, _zoomFactor, 1);
glTranslated(_xOffSet, _yOffSet, 0);
glBindBuffer(GL_ARRAY_BUFFER, _vertexHandle);
glVertexPointer(2, GL_FLOAT, 0, 0L);
glBindBuffer(GL_ARRAY_BUFFER, _colorHandle);
glVertexPointer(3, GL_FLOAT, 0, 0L);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_POINTS, 0, _vertexBuffer.size());
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glPopMatrix();
SDL_GL_SwapBuffers();

### #4Jevi

Posted 15 December 2012 - 02:19 PM

I have tried looking for the solution but I haven't found anything discussing the whole process.

I'm trying to write my own fractal generator. What I do is I generate coordinates with a color associated with it which is loaded into vector<Point> _points. _points is then used to load the vector<float> _vertexBuffer and vector<float> _colorBuffer which are to be used to draw with the vbo. There might be a problem with the libraries that I'm linking. So suggestions on what opengl extension library I should use for vbos is welcomed. I have a feeling that I'm also not loading data in correctly from the buffers... any help is appreciated.

Here is my code, I'm sure someone could notice the problem pretty easily:

#define NO_SDL_GLEXT
#include <GL/glew.h>
#include <SDL.h>
#include <SDL_opengl.h>

...

unsigned int FractalGenerator::_vertexHandle;
unsigned int FractalGenerator::_colorHandle;
vector<float> FractalGenerator::_vertexBuffer;
vector<float> FractalGenerator::_colorBuffer;

...

struct Color
{
float r, g, b;
};
struct Point
{
float x, y;
Color c;
};

....

for (int i = 0; i < _points.size(); i++)
{
_vertexBuffer.push_back(_points[i].x);
_vertexBuffer.push_back(_points[i].y);
_colorBuffer.push_back(_points[i].c.r);
_colorBuffer.push_back(_points[i].c.g);
_colorBuffer.push_back(_points[i].c.b);
}

...

I'm getting a fault here, when I generate the the vbo for _vertexHandle

glGenBuffers(1, &_vertexHandle);
glBindBuffer(GL_ARRAY_BUFFER, _vertexHandle);
glBufferData(GL_ARRAY_BUFFER, _vertexBuffer.size() * sizeof(float), &_vertexBuffer.front(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glGenBuffers(1, &_colorHandle);
glBindBuffer(GL_ARRAY_BUFFER, _colorHandle);
glBufferData(GL_ARRAY_BUFFER, _colorBuffer.size() * sizeof(float), &_colorBuffer.front(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

...

glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glScaled(_zoomFactor, _zoomFactor, 1);
glTranslated(_xOffSet, _yOffSet, 0);
glBindBuffer(GL_ARRAY_BUFFER, _vertexHandle);
glVertexPointer(2, GL_FLOAT, 0, 0L);
glBindBuffer(GL_ARRAY_BUFFER, _colorHandle);
glVertexPointer(3, GL_FLOAT, 0, 0L);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_POINTS, 0, _vertexBuffer.size());
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glPopMatrix();
SDL_GL_SwapBuffers();

### #3Jevi

Posted 15 December 2012 - 02:19 PM

I have tried looking for the solution but I haven't found anything discussing the whole process.

I'm trying to write my own fractal generator. What I do is I generate coordinates with a color associated with it which is loaded into vector<Point> _points. _points is then used to load the vector<float> _vertexBuffer and vector<float> _colorBuffer which are to be used to draw with the vbo. There might be a problem with the libraries that I'm linking. So suggestions on what opengl extension library I should use for vbos is welcomed. I have a feeling that I'm also not loading data in correctly from the buffers... any help is appreciated.

Here is my code, I'm sure someone could notice the problem pretty easily:

#define NO_SDL_GLEXT
#include <GL/glew.h>
#include <SDL.h>
#include <SDL_opengl.h>

...

unsigned int FractalGenerator::_vertexHandle;
unsigned int FractalGenerator::_colorHandle;
vector<float> FractalGenerator::_vertexBuffer;
vector<float> FractalGenerator::_colorBuffer;

...

struct Color
{
float r, g, b;
};
struct Point
{
float x, y;
Color c;
};

....

for (int i = 0; i < _points.size(); i++)
{
_vertexBuffer.push_back(_points[i].x);
_vertexBuffer.push_back(_points[i].y);
_colorBuffer.push_back(_points[i].c.r);
_colorBuffer.push_back(_points[i].c.g);
_colorBuffer.push_back(_points[i].c.b);
}

...

I'm getting a fault here, when I generate the the vbo for _vertexHandle

glGenBuffers(1, &_vertexHandle);
glBindBuffer(GL_ARRAY_BUFFER, _vertexHandle);
glBufferData(GL_ARRAY_BUFFER, _vertexBuffer.size() * sizeof(float), &_vertexBuffer.front(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glGenBuffers(1, &_colorHandle);
glBindBuffer(GL_ARRAY_BUFFER, _colorHandle);
glBufferData(GL_ARRAY_BUFFER, _colorBuffer.size() * sizeof(float), &_colorBuffer.front(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

...

glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glScaled(_zoomFactor, _zoomFactor, 1);
glTranslated(_xOffSet, _yOffSet, 0);
glBindBuffer(GL_ARRAY_BUFFER, _vertexHandle);
glVertexPointer(2, GL_FLOAT, 0, 0L);
glBindBuffer(GL_ARRAY_BUFFER, _colorHandle);
glVertexPointer(3, GL_FLOAT, 0, 0L);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_POINTS, 0, _vertexBuffer.size());
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glPopMatrix();
SDL_GL_SwapBuffers();

### #2Jevi

Posted 15 December 2012 - 02:19 PM

I have tried looking for the solution but I haven't found anything discussing the whole process.

I'm trying to write my own fractal generator. What I do is I generate coordinates with a color associated with it which is loaded into vector<Point> _points. _points is then used to load the vector<float> _vertexBuffer and vector<float> _colorBuffer which are to be used to draw with the vbo. There might be a problem with the libraries that I'm linking. So suggestions on what opengl extension library I should use for vbos is welcomed. I have a feeling that I'm also not loading data in correctly from the buffers... any help is appreciated.

Here is my code, I'm sure someone could notice the problem pretty easily:

#define NO_SDL_GLEXT
#include <GL/glew.h>
#include <SDL.h>
#include <SDL_opengl.h>

...

unsigned int FractalGenerator::_vertexHandle;
unsigned int FractalGenerator::_colorHandle;
vector<float> FractalGenerator::_vertexBuffer;
vector<float> FractalGenerator::_colorBuffer;

...

struct Color
{
float r, g, b;
};
struct Point
{
float x, y;
Color c;
};

....

for (int i = 0; i < _points.size(); i++)
{
_vertexBuffer.push_back(_points[i].x);
_vertexBuffer.push_back(_points[i].y);
_colorBuffer.push_back(_points[i].c.r);
_colorBuffer.push_back(_points[i].c.g);
_colorBuffer.push_back(_points[i].c.b);
}

...

I'm getting a fault here, when I generate the the vbo for _vertexHandle

glGenBuffers(1, &_vertexHandle);
glBindBuffer(GL_ARRAY_BUFFER, _vertexHandle);
glBufferData(GL_ARRAY_BUFFER, _vertexBuffer.size() * sizeof(float), &_vertexBuffer.front(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glGenBuffers(1, &_colorHandle);
glBindBuffer(GL_ARRAY_BUFFER, _colorHandle);
glBufferData(GL_ARRAY_BUFFER, _colorBuffer.size() * sizeof(float), &_colorBuffer.front(), GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);

...

glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glScaled(_zoomFactor, _zoomFactor, 1);
glTranslated(_xOffSet, _yOffSet, 0);
glBindBuffer(GL_ARRAY_BUFFER, _vertexHandle);
glVertexPointer(2, GL_FLOAT, 0, 0L);
glBindBuffer(GL_ARRAY_BUFFER, _colorHandle);
glVertexPointer(3, GL_FLOAT, 0, 0L);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(GL_POINTS, 0, _vertexBuffer.size());
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glPopMatrix();
SDL_GL_SwapBuffers();

PARTNERS


text:
# MLB Scraping in the Post-Gameday Era

I spent a few months last year putting together a scraper to build a PostgreSQL database of the MLB database in Python. I decided to do so for a few reasons, namely:

• I wanted some practice to get better at running out a software project from end-to-end
• For all the success of pitchRx, and I really can't say enough about how great Carson Sievert's work there is, I had been frustrated that there wasn't a great mechanism within it to update the database if/when MLB went back and improved its own data for old games
• I wanted a native Pythonic implementation of everything pitchRx could do, with some particular additional capabilities that I was interested in
• In the words of Eleanor Roosevelt, "hot nasty bad-ass speed". I wanted to see how fast I could do the equivalent of pitchRx's capability

I tried to do this, and thought that, for the most part that I had succeeded, only for MLB to tear down the old-school Gameday data back-end within a few weeks.

I'd be mad, except for the new backend is really cool. I'm working on a new scraper now, and, in the tradition of the blogs and reddit posts that I used to get myself to the point that I could scrape data, I'm gonna post about it here.

## The new MLB data paradigm

In order to start looking at the new MLBAM data, you'll need to be able to parse JSON files. They're basically just structured files that store data. Luckily, Firefox has a great parser built in for them.

### Game aggregation

Let's start with the aggregation of games. Here's a sample link to the games for 3 April 2020:
https://statsapi.mlb.com/api/v1/schedule?sportId=1&date=2020-04-03
When scraping, we'll want to change the parameters, on the right-hand-side, to get the data of interest. sportId=1 refers to the MLB data, for instance, and date=2020-04-03 is the date of interest. By switching these around, we can get to other leagues and other dates. I don't know how to do other leagues, that's for future experimentation.

From this page, under date/0/games/, we can collect all of the games that happened on a given day, as well as view their metadata. For the most part, this stuff is all human-readable, but I'll point out in particular the piece of data for any given game that is keyed by gamePk. This is the primary key of the game, the main index by which you'll want to match game data for a unique game. After that, just explore. You'll notice that these files exclusively include scheduling metadata, nothing about scores, but we can use them to generate a list of the games we're interested in, as well as collecting information about their location, time, and the teams going into them.

### Top-level pages

You probably noticed in the last section, for example, that there are a bunch of different ways of identifying the team that's currently playing, notably team/id values, mostly three-digit numbers. We're gonna want to grab data about teams, and, of course, there's a page for that:
https://statsapi.mlb.com/api/v1/teams
If you're looking for team data, this is the motherlode. Digging through, each team has a venue option, and for that:
https://statsapi.mlb.com/api/v1/venues
is the place to go! Using these two pages, we can build a table of teams and a table of venues in our database.

### From there: game data

With this stuff in play, we can aggregate games, teams, and locations. The next step: games. I'll leave it at that for now, and hint at the Grand Unified Master Baseball Object (GUMBO) as the next target for a post.


text:
# zMeshCheck¶

This command inspects meshes for problems. It is available under the “Ziva Tools” menu as “Run Mesh Analysis”, which will run all available checks. Running the command from mel, one can specify which problems to look for.

This command does not require a license to run.

zMeshCheck [flags] [meshes]
-h           -help                      return this message
-sel         -select                    selects problem areas, in addition to returning them
-iso         -isolatedVertices          find vertices that aren't part of any face
-v           -nonFiniteVertices         find vertices with NaN or Inf coordinates
-vb          -badVertexCoordinates      find vertices with NaN, Inf, or suspiciously large coordinates
-b           -boundaryEdges             find vertices on the mesh boundary
-me          -nonmanifoldEdges          find non-manifold edges - those with more than two adjacent faces
-mv          -nonmanifoldVertices       find non-manifold vertices - those with more than one adjacent component
-st          -smallTriangles            find very small triangles
-sa          -smallTriangleAngles       find triangles with very small angles (near zero degrees)
-la          -largeTriangleAngles       find triangles with very large angles (near 180 degrees)
-oe          -unorientedEdges           find edges between inconsistently oriented triangles
-dd          -degenerateDihedrals       find edges between triangles that are folded over so that they are intersecting each other
-vol         -negativeVolume            find meshes with non-positive volume, assuming the mesh is closed and manifold

Checks meshes for potential problems.

Specify one or more meshes by name or selection.
Specify one or more flags to control which checks are run.
If no flags are specified, all checks are run.

This command will print a message describing problems found with those meshes,
and return a list of all of the problem components found.
The command signals failure if any mesh fails any check.


text:
## Recommended Posts

Trillian    410
Hello! I was working on my engine and coding some vertex buffers. I wanted to use the glDrawRangeElements function, the problem was that visual studio couldn't find it. This function exists in the documentation but not in my header files (gl.h and such), which look like they are from 1996. So I went on the internet looking for more up-to-date version of gl.h and the other header files (they must update glext.h once a while!) but couldn't find them. I remembered having hard times doing so. Where on the internet can I find an up-to-date version of all gl headers (and maybe .lib and .dll but I guess the .dll are updated by the graphics drivers (?))? How come doesn't opengl.org have these headers on their front page or something, I mean that's how you can use opengl! Thanks!

bakery2k1    712

##### Share on other sites
songho    268
Trillian,
glDrawRangeElements() is defined in OpenGL v1.2. So you need to include glext.h file in your project. You can get it from;
http://oss.sgi.com/projects/ogl-sample/sdk.html

Also, you have to declare the pointer to glDrawRangeElements() and get the actual address from the driver after including glext.h:
#include "glext.h"...// function pointer to OpenGL extensionsPFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements = 0;...// get function pointer to glDrawRangeElements before useglDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)wglGetProcAddress("glDrawRangeElements");...

You would recommend checking if the video driver supports v1.2 or greater. But I am pretty sure most video cards nowadays are greater than 1.2.

## Create an account

Register a new account

• ### Similar Content

• By tyhender
Hello, my name is Mark. I'm hobby programmer.
So recently,I thought that it's good idea to find people to create a full 3D engine. I'm looking for people experienced in scripting 3D shaders and implementing physics into engine(game)(we are going to use the React physics engine).
And,ye,no money =D I'm just looking for hobbyists that will be proud of their work. If engine(or game) will have financial succes,well,then maybe =D
Sorry for late replies.
I mostly give more information when people PM me,but this post is REALLY short,even for me =D
So here's few more points:
Engine will use openGL and SDL for graphics. It will use React3D physics library for physics simulation. Engine(most probably,atleast for the first part) won't have graphical fron-end,it will be a framework . I think final engine should be enough to set up an FPS in a couple of minutes. A bit about my self:
I've been programming for 7 years total. I learned very slowly it as "secondary interesting thing" for like 3 years, but then began to script more seriously.  My primary language is C++,which we are going to use for the engine. Yes,I did 3D graphics with physics simulation before. No, my portfolio isn't very impressive. I'm working on that No,I wasn't employed officially. If anybody need to know more PM me.

• By Zaphyk
I am developing my engine using the OpenGL 3.3 compatibility profile. It runs as expected on my NVIDIA card and on my Intel Card however when I tried it on an AMD setup it ran 3 times worse than on the other setups. Could this be a AMD driver thing or is this probably a problem with my OGL code? Could a different code standard create such bad performance?

• I'm trying to get some legacy OpenGL code to run with a shader pipeline,
The legacy code uses glVertexPointer(), glColorPointer(), glNormalPointer() and glTexCoordPointer() to supply the vertex information.
I know that it should be using setVertexAttribPointer() etc to clearly define the layout but that is not an option right now since the legacy code can't be modified to that extent.
I've got a version 330 vertex shader to somewhat work:
#version 330 uniform mat4 osg_ModelViewProjectionMatrix; uniform mat4 osg_ModelViewMatrix; layout(location = 0) in vec4 Vertex; layout(location = 2) in vec4 Normal; // Velocity layout(location = 3) in vec3 TexCoord; // TODO: is this the right layout location? out VertexData { vec4 color; vec3 velocity; float size; } VertexOut; void main(void) { vec4 p0 = Vertex; vec4 p1 = Vertex + vec4(Normal.x, Normal.y, Normal.z, 0.0f); vec3 velocity = (osg_ModelViewProjectionMatrix * p1 - osg_ModelViewProjectionMatrix * p0).xyz; VertexOut.velocity = velocity; VertexOut.size = TexCoord.y; gl_Position = osg_ModelViewMatrix * Vertex; } What works is the Vertex and Normal information that the legacy C++ OpenGL code seem to provide in layout location 0 and 2. This is fine.
What I'm not getting to work is the TexCoord information that is supplied by a glTexCoordPointer() call in C++.
Question:
What layout location is the old standard pipeline using for glTexCoordPointer()? Or is this undefined?

Side note: I'm trying to get an OpenSceneGraph 3.4.0 particle system to use custom vertex, geometry and fragment shaders for rendering the particles.

• Hi i am new to this forum  i wanted to ask for help from all of you i want to generate real time terrain using a 32 bit heightmap i am good at c++ and have started learning Opengl as i am very interested in making landscapes in opengl i have looked around the internet for help about this topic but i am not getting the hang of the concepts and what they are doing can some here suggests me some good resources for making terrain engine please for example like tutorials,books etc so that i can understand the whole concept of terrain generation.

• By KarimIO
Hey guys. I'm trying to get my application to work on my Nvidia GTX 970 desktop. It currently works on my Intel HD 3000 laptop, but on the desktop, every bind textures specifically from framebuffers, I get half a second of lag. This is done 4 times as I have three RGBA textures and one depth 32F buffer. I tried to use debugging software for the first time - RenderDoc only shows SwapBuffers() and no OGL calls, while Nvidia Nsight crashes upon execution, so neither are helpful. Without binding it runs regularly. This does not happen with non-framebuffer binds.
GLFramebuffer::GLFramebuffer(FramebufferCreateInfo createInfo) { glGenFramebuffers(1, &fbo); glBindFramebuffer(GL_FRAMEBUFFER, fbo); textures = new GLuint[createInfo.numColorTargets]; glGenTextures(createInfo.numColorTargets, textures); GLenum *DrawBuffers = new GLenum[createInfo.numColorTargets]; for (uint32_t i = 0; i < createInfo.numColorTargets; i++) { glBindTexture(GL_TEXTURE_2D, textures[i]); GLint internalFormat; GLenum format; TranslateFormats(createInfo.colorFormats[i], format, internalFormat); // returns GL_RGBA and GL_RGBA glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, createInfo.width, createInfo.height, 0, format, GL_FLOAT, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); DrawBuffers[i] = GL_COLOR_ATTACHMENT0 + i; glBindTexture(GL_TEXTURE_2D, 0); glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i, textures[i], 0); } if (createInfo.depthFormat != FORMAT_DEPTH_NONE) { GLenum depthFormat; switch (createInfo.depthFormat) { case FORMAT_DEPTH_16: depthFormat = GL_DEPTH_COMPONENT16; break; case FORMAT_DEPTH_24: depthFormat = GL_DEPTH_COMPONENT24; break; case FORMAT_DEPTH_32: depthFormat = GL_DEPTH_COMPONENT32; break; case FORMAT_DEPTH_24_STENCIL_8: depthFormat = GL_DEPTH24_STENCIL8; break; case FORMAT_DEPTH_32_STENCIL_8: depthFormat = GL_DEPTH32F_STENCIL8; break; } glGenTextures(1, &depthrenderbuffer); glBindTexture(GL_TEXTURE_2D, depthrenderbuffer); glTexImage2D(GL_TEXTURE_2D, 0, depthFormat, createInfo.width, createInfo.height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glBindTexture(GL_TEXTURE_2D, 0); glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, depthrenderbuffer, 0); } if (createInfo.numColorTargets > 0) glDrawBuffers(createInfo.numColorTargets, DrawBuffers); else glDrawBuffer(GL_NONE); if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) std::cout << "Framebuffer Incomplete\n"; glBindFramebuffer(GL_FRAMEBUFFER, 0); width = createInfo.width; height = createInfo.height; } // ... // FBO Creation FramebufferCreateInfo gbufferCI; gbufferCI.colorFormats = gbufferCFs.data(); gbufferCI.depthFormat = FORMAT_DEPTH_32; gbufferCI.numColorTargets = gbufferCFs.size(); gbufferCI.width = engine.settings.resolutionX; gbufferCI.height = engine.settings.resolutionY; gbufferCI.renderPass = nullptr; gbuffer = graphicsWrapper->CreateFramebuffer(gbufferCI); // Bind glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo); // Draw here... // Bind to textures glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, textures[0]); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, textures[1]); glActiveTexture(GL_TEXTURE2); glBindTexture(GL_TEXTURE_2D, textures[2]); glActiveTexture(GL_TEXTURE3); glBindTexture(GL_TEXTURE_2D, depthrenderbuffer); Here is an extract of my code. I can't think of anything else to include. I've really been butting my head into a wall trying to think of a reason but I can think of none and all my research yields nothing. Thanks in advance!

• 17
• 15
• 17
• 10
• 18


text:
# Efficient algorithm to prove that a polynomial ideal contains 1

I have the following problem: Suppose to have an ideal $$I\triangleleft k[x_1,...,x_n]$$ defined by generators. There exists an efficient algorithm (perhaps more efficient than calculating the Groebner basis) to determine if $$1\in I$$? More precisely i'm dealing with the following case: $$I=(f_1(x_1,...,x_n),...,f_{n+1}(x_1,...,x_n))$$ so it is in some sense "overdetermined" and is expected to have an empty zero-set. But how can be sure about that without about that without computing Groebner basis which is a very hard problem for high values of $$n$$? Thanks for your time.


text:
, 29.07.2019 16:00, breannagrd4075

# An inequality is shown below: −np − 4 ≤ 2(c − 3) which of the following solves for n? n ≤ − the quantity 2 times c minus 2 all over p n ≤ − the quantity 2 times c minus 10 all over p n ≥ − the quantity 2 times c minus 2 all over p n ≥ − the quantity 2 times c minus 10 all over p

### Other questions on the subject: Mathematics

Mathematics, 21.06.2019 22:00, costel8532
Which of the following graphs could represent a cubic function?
Mathematics, 22.06.2019 03:20, naomicervero
The value of x must be greater than what?
Mathematics, 22.06.2019 03:30, keyonaemanieevans
The diameter of the moon is about 3500 km. approximate the surface area of the moon using the formula for the surface area of a sphere, s = 4πr2. write your answer in scientific notation.


text:
# OEPDBOrderAtoms¶

bool OEPDBOrderAtoms(OEMolBase &mol, bool preserveResOrder=false)

Reorders the atoms of a molecule into PDB order, using the residue information associated with each atom. The optional argument preserveResOrder, forces the function to preserve the residue order from the input.


text:
# Prove that $\prod_{k=1}^{n-1}\sin\frac{k \pi}{n} = \frac{n}{2^{n-1}}$

Using n_th root of unity

$$\Large\left(e^{\frac{2ki\pi}{n}}\right)^{n} = 1$$

Prove that

$$\prod_{k=1}^{n-1}\sin\frac{k \pi}{n} = \frac{n}{2^{n-1}}$$

-
Incidentally, the proof given in fiktor's answer below can be modified to show that $\sin nx=2^{n-1}\prod_{k=0}^{n-1} \sin\left( x + \frac{k\pi}{n} \right)$, a very pretty multiple-angle identity which is not as widely know as it deserves to be. Dividing by $\sin x$ and letting $x\to 0$ reduces that identity to the one in the question. –  Hans Lundmark Oct 31 '10 at 14:38
And here's a kill-a-mosquito-with-a-cannon proof of the identity in my previous comment: combine Gauss's multiplication formula for the gamma function, $\Gamma(nx) = \frac{n^{nx-1/2}}{(2\pi)^{(n-1)/2}} \prod_{k=0}^{n-1} \Gamma(x+\frac{k}{n})$, with Euler's reflection formula $\Gamma(x) \Gamma(1-x) = \frac{\pi}{\sin(\pi x)}$. –  Hans Lundmark Oct 31 '10 at 16:43
And another comment... I just ran into this on Wikipedia: en.wikipedia.org/wiki/Morrie%27s_law –  Hans Lundmark Nov 4 '10 at 8:55

$$P=\prod_{k=1}^{n-1}\sin(k\pi/n)=(2i)^{1-n}\prod_{k=1}^{n-1}(e^{ik\pi/n}-e^{-ik\pi/n})=(2i)^{1-n}e^{-i\pi n(n-1)/(2n)}\prod_{k=1}^{n-1}(e^{2ik\pi/n}-1)=$$ $$(-2)^{1-n}\prod_{k=1}^{n-1}(\xi^k-1)=2^{1-n}\prod_{k=1}^{n-1}(1-\xi^k),$$ where $\xi=e^{2i\pi/n}$. Now note, that $x^n-1=(x-1)\sum_{k=0}^{n-1}x^k$ and $x^n-1=\prod_{k=0}^{n-1} (x-\xi^k)$, thus cancelling $x-1$ we have $\prod_{k=1}^{n-1} (x-\xi^k) =\sum_{k=0}^{n-1}x^k$. Substituting $x=1$ we have $\prod_{k=1}^{n-1} (1-\xi^k)=n$. Therefore $P=n2^{1-n}$.

Edit:
In order to note that $x^n-1=\prod_{k=0}^{n-1} (x-\xi^k)$, note that $1,\xi,\dots,\xi^{n-1}$ are roots of $x^n-1$. Therefore by polynomial reminder theorem we have $x^n-1=Q(x) \prod_{k=0}^{n-1} (x-\xi^k)$. Comparing degrees of lhs and rhs we can find, that $Q(x)$ has degree 0. Comparing highest coefficients we can conclude $Q(x)=1$.

-
Can you explain a little bit more why $x^n-1=\prod_{k=0}^n (x-\xi^k)$? –  Robert Smith Oct 30 '10 at 21:09
@Robert: well, the $\xi^k$ are the nth roots of unity... –  Ｊ. Ｍ. Oct 30 '10 at 22:50
@J.M. Yes, I know. But I wanted to know about the validity of the equality. –  Robert Smith Oct 30 '10 at 23:36
It's just an expansion of $x^n-1$ in terms of its zeroes, e.g. $x^2-1=(x+1)(x-1)$. –  Ｊ. Ｍ. Oct 30 '10 at 23:43
@J.M: I think it should be $\prod_{k=0}^n (x-\xi^k)=(x-1)(x^{n}-1)$ instead of $\prod_{k=0}^n (x-\xi^k)=x^n-1$ –  Robert Smith Oct 31 '10 at 0:55

\begin{align*}=\prod_{k=1}^{n−1}\sin\frac{kπ}n&=(2i)^{1−n}\cdot\prod_{k=1}^{n−1}\left(e^{^\tfrac{ikπ}n}−e^{^{−\tfrac{ikπ}n}}\right)\\&=(2i)^{1−n}\cdot e^{^{−\tfrac{iπn(n−1)}{2n}}}\cdot\prod_{k=1}^{n−1}\left(e^{^\tfrac{2ikπ}n}−1\right)\\&=(−2)^{1−n}\cdot\prod_{k=1}^{n−1}\left(ξ^k−1\right)=2^{1−n}\cdot\prod_{k=1}^{n−1}\left(1−ξ^k\right),\qquad\text{where}\qquad ξ=e^{^\tfrac{2iπ}n}\end{align*}

Now, note that $\quad x^n−1=(x−1)\displaystyle\sum^{n−1}_{k=0}x^k,\quad$ and $\quad x^n−1=\displaystyle\prod^{n−1}_{k=\color{blue}0}\left(x−ξ^k\right).\quad$

Thus, cancelling $x−1$, we have $\quad\displaystyle\prod^{n−1}_{k=\color{blue}1}\left(x−ξ^k\right)=\sum^{n−1}_{k=0}x^k.\quad$

By substituting $x=1$ we have $\quad\displaystyle\prod^{n−1}_{k=1}\left(1−ξ^k\right)=n$. Therefore, $P=n\cdot2^{1−n}$

-
This answer is very difficult to read. Could you format it with MathJax so that it’s helpful to other readers? –  alexwlchan Jul 20 '13 at 11:07
@alexwlchan $\LaTeX$ed. –  Ahaan S. Rungta Nov 19 at 18:20


text:
# Math Help - Elliptic Curve y^2 = x^3 +17; show N_p = p

1. Originally Posted by vernongetzler
Hat’s off. Well done, as we know that “hard work always pays off”, after a long struggle with sincere effort it’s done.
========
vernon
Exercises

2. double posted by mistake...

3. Originally Posted by chiph588@
Let's assume $b_1,b_2\not|p$ and $g$ is a primitive root ( $b_1\equiv0\mod{p}$ is trivial).
Why are you assuming that $b_1,b_2\not|p$? Do you actually mean $p\not|b_1,b_2$?

Then $b_1\equiv g^n,\;b_2\equiv g^m \mod{p}$, so $g^{3n}\equiv g^{3m}\mod{p}\implies 3n\equiv 3m\mod{\phi(p)}$.
Why $b_1\equiv g^n,\;b_2\equiv g^m \mod{p}$? What are n and m?

Since $(3,p-1)=1 \implies n\equiv m\mod{\phi(p)} \implies m=n+a(p-1)$

So $b_2\equiv g^m=g^{n+a(p-1)} \equiv 1\cdot g^n\equiv b_1\mod{p}$.
On the last line, I think you're using Fermat's little theorem, but how do you know that $p\not|g$?

Thanks for clarifying this!

4. This is my version of the definition of primitive root:
a is a primitive root mod m iff the order of a mod m is equal to phi(m) (where the order of a mod m is the smallest positive integer h such that a^h is congruent to 1 mod m.)

But from here I really don't see how we can get b1=g^n (mod p)...

5. Originally Posted by kingwinner
This is my version of the definition of primitive root:
a is a primitive root mod m iff the order of a mod m is equal to phi(m) (where the order of a mod m is the smallest positive integer h such that a^h is congruent to 1 mod m.)

But from here I really don't see how we can get b1=g^n (mod p)...
A primitive root will 'generate' every element in the set $\{1,2,\cdots,p-1\}$.

i.e. $\{g,g^2,\cdots, g^{p-1}\} = \{1,2,\cdots,p-1\}$

Page 2 of 2 First 12


text:
Lemma 60.7.4. Let $(U', T', \delta ') \to (S'_0, S', \gamma ')$ and $(S_0, S, \gamma ) \to (S'_0, S', \gamma ')$ be morphisms of divided power schemes. If $(U', T', \delta ')$ is a divided power thickening, then there exists a divided power scheme $(T_0, T, \delta )$ and

$\xymatrix{ T \ar[r] \ar[d] & T' \ar[d] \\ S \ar[r] & S' }$

which is a cartesian diagram in the category of divided power schemes.

Proof. Omitted. Hints: If $T$ exists, then $T_0 = S_0 \times _{S'_0} U'$ (argue as in Divided Power Algebra, Remark 23.3.5). Since $T'$ is a divided power thickening, we see that $T$ (if it exists) will be a divided power thickening too. Hence we can define $T$ as the scheme with underlying topological space the underlying topological space of $T_0 = S_0 \times _{S'_0} U'$ and as structure sheaf on affine pieces the ring given by Lemma 60.5.3. $\square$

There are also:

• 2 comment(s) on Section 60.7: Divided power schemes

In your comment you can use Markdown and LaTeX style mathematics (enclose it like $\pi$). A preview option is available if you wish to see how it works out (just click on the eye in the toolbar).