{% extends "base.html" %} {% load staticfiles %} {% block title %}Theory{% endblock title %} {% block head_scripts %} {% endblock head_scripts %} {% block content %}
WIRM is a modified version of the Streeter-Phelps equation, which is one of the first water quality models originally developed during a study of the Ohio River in the 1920s (Streeter and Phelps, 1925). The model is used to simulate the effect of a Biochemical Oxygen Demand (BOD) point discharge on Dissolved Oxygen (DO) levels of rivers and streams.
Extracted from p. 18 of Streeter and Phelps (1925)
While often thought of as a gas, oxygen readily dissolves into water where it is needed for the survival of various aquatic organisms such as fish. The minimum DO concentration varies by species and organism, but is typically between 4 and 6 mg/L. A number of physical, chemical and biological processes affect the concentration of DO in aquatic ecosystems. DO is consumed by microbial respiration, but also produced by photosynthesis. Gas exchange between the water and the atmosphere also changes the concentration of DO, driving it towards a state of equilibrium. Chemical processes such as deoxygenation can also affect DO levels.
Before the invention of modern treatment technologies, wastewater effluent contained high concentrations of organic compounds. When these organic compounds are released in the environment, they are decomposed by microbial organisms and undergo chemical deoxygenation. The total amount of oxygen that is consumed by these processes is referred to as the Biochemical Oxygen Demand (BOD).
The concentration of BOD is often measured by placing a water sample in a dark bottle and measuring the change in dissolved oxygen over time. As the BOD decays, the oxygen is consumed by microbial and chemical processes. The total amount of oxygen that is lost over a specific period of time is then defined as the concentration of BOD. Typically, BOD is measured over a 5-day and referred to as the 5-day BOD (BOD5). The ultimate BOD (UBOD) is the total amount of BOD that would be measured if the experiment were conducted over a very long (effectively infinite) period such that all BOD material is degraded.
Before discussing the model equations and parameters, it is useful to understand how to interpret the model output generated by the simulation. Here is an example using the default parameter values:
The blue and orange lines represent the simulated concentrations of BOD and DO along a stretch of river. The chart also shows the DO saturation concentration as the dotted black line for reference. These concentrations represent a snapshot of the river at a single point in time.
The left side of the chart (x=0) represents the upstream end of the reach where BOD is being discharged into the river from a point source such as a wastewater treatment plant. Initially, the concentrations of BOD and DO decrease just downstream of the discharge as BOD undergoes microbial decomposition and chemical deoxygenation, which are processes that consume DO.
At some point downstream of the discharge, the DO concentration reaches a minimum value, often called the critical point. At this point, the rates of BOD decay and DO reaeration are balanced because the oxygen lost by BOD decomposition is being replenished by an equivalent amount of oxygen dissolving into the water from the air. Past the critical point, DO increases as the rate of reaeration exceeds the rate of BOD decay and more oxygen is dissolving into the water than is being consumed. Eventually, the BOD has been completely decomposed and its concentration approaches zero. Without any BOD decomposition, the DO level approaches the saturation concentration where it is in equilibrium with the air. The dip in the DO concentration is known as the DO sag, which is a characteristic curve often observed downstream of BOD discharges.
In this example, the minimum DO concentration is about 4 mg/L at a point 120 km downstream of the discharge. If the target minimum DO concentration were 5 mg/L, which is required by some fish species, then we conclude that the BOD concentration is too high to support aquatic life. Using the slider for the initial BOD concentration parameter, L0, we could identify how much the BOD concentration would need to be reduced in order to achieve a minimum DO concentration of 5 mg/L.
This figure shows a schematic diagram of the model, which includes two state variables: the concentrations of BOD, $L$, and DO, $o$. These variables are subject to two processes: 1) BOD decay, which reduces both BOD and DO, and 2) DO reaeration, which is the exchange of oxygen between the water and air that will increase DO if it is below saturation.
The model schematic shown above is mathematically represented as a system of two ordinary differential equations (ODEs):
$$\frac{dL}{dt} = -F_{ox}k_dL$$ $$\frac{do}{dt} = -F_{ox}k_dL+k_a(o_s-o)$$where $L$ and $o$ are the concentrations of BOD and DO (mg/L), respectively, $t$ is the downstream travel time (days), $k_d$ is the BOD decay rate (1/d), $k_a$ is the DO reaeration rate (1/d), $o_s$ is the DO saturation concentration (mg/L), and $F_{ox}$ is the BOD/DO inhibition factor (unitless).
The equations are solved using the initial concentrations of BOD and DO:
$$L(t=0) = L_0$$ $$o(t=0) = o_0$$These initial concentrations are the in-stream concentrations resulting from complete mixing of the discharge with the river. They can be computed as the flow-weighted mean of the discharge concentration and in-stream concentration just upstream of the discharge point, see below.
Given the initial concentrations, the differential equations for BOD and DO as a function of travel time are solved using the 4th-order Runge-Kutta numerical method, which is an explicit, forward-stepping scheme.
For a generic variable, $y$, with initial condition $y(t=0)=y_0$ and derivative function $f(t, y)=dy/dt$ the solution for $y(t)$ can be computed incrementally. If $h$ is the step size between each solution point, then:
$$y(t+h) = y(t) + \frac{h}{6}(K_1+K_2+K_3+K_4)$$ where $K_1$, $K_2$, $K_3$, and $K_4$ are defined as: $$ \begin{eqnarray} K_1 & = & f(t, y(t)) \\\ K_2 & = & f(t + h/2, y(t) + h/2\cdot K_1) \\\ K_3 & = & f(t + h/2, y(t) + h/2\cdot K_2) \\\ K_4 & = & f(t + h, y(t) + h\cdot K_3) \end{eqnarray} $$While the equations above describe the concentrations of BOD and DO as functions of travel time, it is often more useful to express the concentrations as functions of distance downstream. Travel time can easily be converted to downstream distance given the velocity of the river flow:
$$x = 86.4U t$$where $x$ is the distance downstream of the discharge point (km), $U$ is the velocity (m/s), $t$ is the travel time (days), and $86.4$ is a unit conversion factor (86.4 km/day = 1 m/s).
The model assumes that BOD decay can be represented as a first-order decay process. The BOD decay rate depends on two factors:
To account for both these factors, the rate of BOD decay is computed by:
$$k_d = k_{d,20}\theta_{BOD}^{T-20}$$where $k_{d,20}$ is the base decay rate at 20$^\circ$C, $\theta_{BOD}$ is the temperature correction factor, and $T$ is the water temperature (degC), which are further discussed below.
The DO inhibition factor is a modification of the original Streeter-Phelps equation that limits the BOD decay rate when DO levels are low. Without this factor, the model can produce negative concentrations of DO, a result that is not physically possible. The inhibition factor is defined using Michaelis-Menton kinetics:
$$F_{ox} = \frac{o}{k_{so} + o}$$where $k_{so}$ is the oxygen inhibition half-saturation constant (mg/L). When the concentration of DO is equal to the half-saturation constant ($o=k_{so}$), then the inhibition factor is $F_{ox}=0.5$ and the rate of BOD decay, $k_d$, is effectively reduced by 50%. As the DO concentration approaches 0 mg/L, the inhibition factor and BOD decay rates also approach 0 preventing further BOD decay when no oxygen is available.
The following figure shows the relationship between $F_{ox}$ and $o$ for a half-saturation concentration $k_{so} = 1$ mg/L.
The saturation concentration of DO is the concentration at which the water is in equilibrium with the air. When the DO concentration is less than saturation, then the water is said to be under-saturated and oxygen from the air diffuses into the water. Similarly, when the DO level is greater than saturation the water is super-saturated and oxygen is released from the water.
The DO saturation concentration is automatically computed according to the standard formula (Chapra, 1997):
$$o_s = -139.34411 + \frac{1.575701\times 10^5}{T_a} - \frac{6.642308\times 10^7}{T_a^2} + \frac{1.243800\times 10^10}{T_a^3} - \frac{8.621949\times 10^11}{T_a^4}$$where $T_a$ is the water temperature in degrees Kelvin ($T_a[K] = T[^\circ C] + 273.15$). Although DO saturation is also affected by salinity and air pressure, we assume the water is freshwater with negligable salinity and located at an air pressure of approximately 1 atm.
The relationship between DO saturation and water temperature is illustrated in the following figure.
The rate of DO reaeration determines the rate at which oxygen is transferred between the water and the air when the DO concentration is above or below the saturation concentration. It is commonly estimated by empirical models that relate the reaeration rate to hydraulic characteristics of the river, usually depth and velocity.
The Cover chart combines three empirical studies that were performed on streams of different characteristics (Covar, 1976). This chart estimates the reaeration rate at 20$^\circ$ C, $k_{a,20}$ based on the mean depth and velocity of the river.
(extracted from EPA, 1985)
The equations used in the Cover chart are:
$$ k_{a,20} = \left\{ \begin{array}{l l} 5.32\ U^{0.67} H^{-1.85} & \quad \text{if $H \leq 0.61$ m} & \quad \text{Owens et al. (1964)} \\ 3.93\ U^{0.5} H^{-1.5} & \quad \text{if $H > 0.61$ and $H > 4.15\cdot U^{2.71}$} & \quad \text{O'Connor and Dobbins (1958)} \\ 5.026\ U^{0.969} H^{-1.673} & \quad \text{if $H > 0.61$ and $H <= 4.15\cdot U^{2.71}$} & \quad \text{Churchill et al. (1962)} \end{array} \right. $$where $U$ is the stream velocity (m/s) and $H$ is the mean depth (m). Note that these equations are in the metric form, whereas the chart shows english units.
Similar to the BOD decay, the reaeration rate is also affected by temperature. The effective reaeration rate, $k_a$, is computed by:
$$k_a = k_{a,20}\theta_{DO}^{ T-20}$$where $k_{a,20}$ is the reaeration rate at 20$^\circ$C estimated using the Covar chart, $\theta_{DO}$ is the temperature correction factor, and $T$ is the water temperature (degC).
The initial concentration of BOD is the in-stream concentration after the discharge has fully mixed with the river. It can be computed as the flow-weighted mean concentration by:
$$L_0 = \frac{L_{ps}*Q_{ps} + L_{river}*Q_{river}}{Q_{ps}+Q_{river}}$$where $L_{ps}$ and $L_{river}$ are the concentrations of BOD in the discharge and in the river just upstream of the discharge point, and $Q_{ps}$ and $Q_{river}$ are the corresponding flows of the discharge and river. If there are no upstream pollution sources or inputs of BOD, it may be reasonable to assume that $L_{river}=0 \text{ mg/L}$.
The following table provides some typical concentrations of wastewater effluent for various treatment technologies from Thomann and Mueller (1987).
| Treatment Level | BOD Range (mg/L) |
|---|---|
| Primary | 100-200 |
| Trickling Filter | 20-50 |
| Activated Sludge | 10-50 |
| Secondary and Nitrification | 5-20 |
| Secondary, Chemical, and Filtration | 1-8 |
The initial concentration of DO is the in-stream concentration after the discharge has mixed with the river. It can be computed as the flow-weighted mean concentration by:
$$o_0 = \frac{o_{ps}*Q_{ps} + o_{river}*Q_{river}}{Q_{ps}+Q_{river}}$$where $o_{ps}$ and $o_{river}$ are the concentrations of DO in the discharge and in the river just upstream of the discharge point, and $Q_{ps}$ and $Q_{river}$ are the corresponding flows of the discharge and river.
If the upstream concentration is not known and there are no major pollution sources upstream, then it may be reasonable to set the initial DO concentration to the saturation concentration, $o_0 = o_s$.
If the water temperature cannot be directly measured, it can be estimated based on the mean daily air temperature or using measurements from other rivers in the region. The USGS National Water Information System provides temperature data on many rivers across the U.S.
The mean depth can be computed by taking multiple depth measurements and computing the average, or by dividing the cross-section area by the width of the river.
$$H = A_c/W$$where $H$ is the mean depth (m), $A_c$ is the cross-sectional area (m2), and $W$ is the width (m).
The velocity of the river can be computed by dividing the flow rate by the mean cross-sectional area.
$$U = Q/A_c$$where $U$ is the mean velocity (m/s), $Q$ is the flow rate (m3/s) and $A_c$ is the cross-sectional area (m2).
The maximum downstream distance defines the extent of the x-axis scale in the output chart. It has not effect on the model solution.
The baseline decay rate at 20$^\circ$C typically ranges from 0.05-0.5 /day (EPA, 1985). Thomann and Mueller provide the following ranges and average values for different wastewater treatment levels:
| Treatment Level | $k_{d,20}$ Range (1/d) | $k_{d,20}$ Average (1/d) |
|---|---|---|
| None | 0.3-0.4 | 0.35 |
| Primary/Secondary | 0.1-0.3 | 0.20 |
| Activated Sludge | 0.05-0.1 | 0.075 |
The DO inhibition half-saturation constant is the DO concentration at which the inhibition factor $F_{ox}=0.5$, and thus the BOD decay rate is effectively reduced by 50%. There are no general guidelines available for this parameter, but a typical value of 1 mg/L is recommended.
The BOD temperature correction factor, $\theta_{BOD}$, ranges from 1.02 to 1.09 depending on the composition of the BOD as well as the microbial community and availability of other chemical compounds. A typical value of 1.047 is frequently used (Chapra, 1997).
The DO reaeration temperature correction factor, $\theta_{DO}$, can range from 1.005 to 1.030 depending on the amount of mixing in the river (Thomann and Mueller, 1987). A typical value of 1.024 is often used (Chapra, 1997).
The model described above is based on a number of assumptions:


This website is free and open to all users and there is no login requirement.
GenomeRunner Web: Functional interpretation of SNPs within epigenomic context
GenomeRunner Web is a tool for functional interpretation of sets of SNPs by considering their co-localization with functional/regulatory genome annotation data (epigenomic elements). It is particularly useful for the interpretation of functional roles of SNPs in non-protein coding regions, and rare variants. An example of GenomeRunner's results can be found in the analysis of Sjogren's syndrome GWAS (Nature Genetics), where it identified RFX5 transcription factor binding site as strongly associated with the disease' SNPs.
As an output, GenomeRunner Web calculates enrichment p-values by evaluating whether a set of SNPs co-localizes with regulatory elements more often that could happen by chance. For three or more sets of SNPs, GenomeRunner Web performs 'epigenomic similarity' analysis by correlating set-specific profiles of enrichment p-values. Downloadable results are visualized as interactive heatmaps and tables.


Toggle navigation
Purchase Again
Welcome!
Vishnu
Quiz
Quiz
1.What social service has Facebook not acqiured?
WhatsApp
Instagram
Snapchat
2.What social media activity did the people unexpectedly engage in?
He hosted a Google Hangout
He neknominated
He took a selfie
3.How many pictures are sent via self-destructive photo sharing service Snapchat each day?
125 million
350 million
475 million
4.Why social media is a powerful tool?


2 Chronicles 26:9
Moreover Uzziah built towers in Jerusalem at the corner gate, and at the valley gate, and at the turning of the wall, and fortified them.


[gecode-users] question about posting of linear expressions
Guido Tack
tack at gecode.org
Thu Jul 8 22:08:20 CEST 2010
Kish Shen wrote:
> First of all, at the ECLiPSe level, I have only one type of finite domain variable, and such variables are normally linked to IntVar. If the variable is used as a gecode boolean (as in this case), then the ECLiPSe variable is linked to both an IntVar and a BoolVar, with a channel constraint linking the two.
>
> The actual code for posting the expression is as follows:
> int p_g_post_bool_expr()
> {
> BoolVar reif;
> BoolExpr c;
> ...
> reif = solver->vBool[b];
> ...
> reif = post(*solver, c);
> ...
> }
Is that a typo, or do you actually assign to reif twice? If you want to express vBool[b] <-> c, you should use
post(*solver, tt(equiv(solver->vBool[b],c)));
> where vBool is my array of boolean variables (and there is a corresponding vInt array). The procedure is called when I post the boolean expression.
>
> I have mainly been testing this with reified domain constraints, for example,
>
> IntVarArgs vars(size);
> BoolVar reif;
> ...
> dom(*solver, vars[i], min, max, reif)
>
> where reif is assigned in much the same way.
>
> I have used the reified domain constraint directly, and this work as expected.
>
> What is not working is when I use the domain constraint as a boolean expression. What happens is that I post the domain constraint
>
> dom(*solver, vars[i], min, max, reif1);
>
> and a boolean expression:
>
> reif2 = post(*solver, c);
>
> where c = vBool[<index for reif1>]
>
> the problem is that reif2 does not seem to behave as expected.
> For example, when the domain is constrained such that the domain constraint is true, reif1 is correctly constrained to 1, but reif2 still has the 0..1 domain.
That is slightly strange. I tried to reproduce this with a simple example, but there it seems to work.
Cheers,
Guido
--
Guido Tack, http://people.cs.kuleuven.be/~guido.tack/
More information about the users
mailing list


Power Company Faces Claim Over West LA Wildfire
by NATHAN SOLISLOS ANGELES (CN) – Large hillside mansions and over 700 acres of land in west Los Angeles burned this past month when a eucalyptus branch fell on a power line. It could have been prevented, according to a claim filed Monday with LA’s electric utility.
Fire officials say high winds knocked a branch onto a high-voltage power line that sparked a fire near the Getty Center art museum and campus on Oct. 28. That wildfire sent thousands from their homes.
But the owner of one of the hillside homes that was destroyed says the fire was preventable if the Los Angeles Department of Water and Power had a plan in place to maintain its electrical equipment and surrounding brush. That owner, BW Partners II, filed a government claim with LADWP and the city Monday.
In addition to the property damage, the owner of the 1,540-square-foot home notes schools were closed and the area saw poor air quality. The city and LADWP have 90 days to respond to the claim.
The Getty Fire swept through the hillsides north of the Sepulveda Pass near the affluent neighborhoods of Brentwood and Pacific Palisades. Strong Santa Ana winds fanned the flames and after nine days, 745 acres burned and 27 homes were either damaged or destroyed, according to fire officials.
According to the claimant, LADWP revealed in 2017 that about half of its 320,000 power poles were more than 50 years old and 21% were beyond their 60-year-llfespan. The claim also cites an internal investigation at the utility.
LADWP has faced other wildfires in the past and have not prepared for those risks, according to the property owner.
“Despite its knowledge and abundant resources and capabilities as the largest municipal utility company in the country, its infrastructure and safety practices remain in disrepair,” the claim says.
“The fire risks caused by the seasonal Santa Ana winds and their interactions with poorly managed vegetation, poorly operated equipment, and poorly maintained electrical lines are known and predictable,” according to the 16-page claim.
LADWP did not keep up the vegetation surrounding its equipment and in the last several years similar brush fires in Southern California have been sparked by similar conditions with catastrophic results, according to the claim.
“LADWP had a responsibility to ensure that its high-voltage, revenue-generating electrical equipment installed in high fire-risk areas, such as the Sepulveda Pass, does not endanger its own ratepayers and the community at large,” says the claim.
LADWP maintains 3,507 miles of long-distance, high-voltage transmission and sub-transmission lines in the Los Angeles region and should have known about the fire conditions in advance, according to the claim.
BW Partners II is represented by McNicholas & McNicholas, Frantz Law Group and Bridgford, Gleason &
Emails to L.A. Mayor Eric Garcetti’s Office and the utility company were not immediately answered.
Copyright © 2019 courthousenews.com


--- layout: default --- {% include jumbotron.html %}
Filter by
No results matched your search criteria


{{ partial "head.html" }}
{{ if not .IsPage }}Not found{{ end }} {{ .Site.Params.TitleSeparator }} {{ .Site.Title }}
404 – Page not found
The page you landed on doesn't exist.
Go to home page


I'm Raghuveer Krishnamurthy Kanchibail. I am a Computer Science graduate from Indiana University Bloomington. I completed my schooling in May 2017 and currently looking out for a full-time software engineer position.
Computer programming started out as a hobby during my high-school and now I am pursuing it as my profession.I try to learn new technologies during my free time and keep myself updated with latest developments. Java is my go-to language, however I enjoy coding in other languages too. I love solving algorithmic problems and keep myself busy with the ever growing problem sets in Leetcode and Hackerrank.
Other than technology, I am also a huge soccer fan and follow all the Chelsea FC games. I also have a dream of watching my favorite soccer team playing in their home stadium. Collecting comics is another hobby which is very dear to me. I keep a keen interest in latest comic series'. I am active on most of the popular social media, although I seldom participate in the discussions I keep myself updated about latest happenings. Feel free to connect with me on social media or contact me on my phone/e-mail.
5705 Diehl Trail
Apt 4304
Austin, TX - 78727


This API key is used as your way of interacting directly with the API of Telenor LoRa.
This token has full access to all resources. You can access resources in the API by using the examples below.
Curl example for fetching the API root by using your API key
This token allows access for all applications. You can access the applications in the API by using the examples below
Curl example for fetching all applications by using your API key
This token allows access for all gateways. You can access the gateways in the API by using the examples below
Curl example for fetching all applications by using your API key
To interact with your application you need to provide the applicationEUI which can be found in the examples below.
Curl example for fetching information about the application by using your API key
Curl example for fetching devices for application by using your API key
Curl example for fetching data for all your devices in your application by using your API key
To interact with your gateway you need to provide the gatewayEUI which can be found in the examples below.
Curl example for fetching information about the gateway by using your API key
For a full list of the different endpoints check out our API documentation


Saturday, March 7th, 2009
Magic Mushroom Trip Experience
Dosage: 3.7 grams
Ingestion Method: Ate two moderately sized stems, followed by the other 3.5 grams placed on a single piece of white bread and peanut butter. The bread was folded to make a sandwich 'New York style.'
12:30pm: The first two stems were ingested. The sandwich, over the course of the next 20 minutes, was ingested.
1:00pm: A feeling of unease overcomes me. I attribute this to my difficulty in swallowing mushrooms (due to the foul taste), and my difficult experiences with them in the past. A friend who was sitting near me continued to remind me that they 'come from cow shit', which didn't help matters.
1:15pm: I, and the two others who took mushrooms, went up to a nearby bedroom to listen to music. We decide to listen to a few tracks from The White Album, but then switch over to Sgt. Pepper as soon as we all agree that the mushrooms are kicking in.
1:45pm: 'Lucy in the Sky with Diamonds' begins to play, and I close my eyes. A body buzz is building within me, and I am amazed by the power of the close-eyed visuals. I see a face during the chorus of the song, which then morphs into an amazingly complex geometric pattern. I see a series of mouths, and they move to the music. I begin to open and close my mouth, and the mouths within my close-eyed visuals follow my physical movements.
1:55pm: 'Within You Without You' begins to play, and I become engulfed within the music. My physical discomfort is lessened every time the chords in the song resolve. During the middle of the second verse, I begin to feel a euphoric connection to the music, and begin to feel my consciousness leaving my physical body.
2:30pm: Sgt. Pepper ends, and I search for a new CD to play. My friend brings up a box of random CDs I purchased from an experimental record shop in New York City. We choose one, and the first track is called 'Fishy Wishy', containing a collection of female soprano singers vocalizing awfully bizarre lyrics. The three of us errupt into laughter, and thus begins our full-on mushroom trip experience.
~2:45pm-3:30pm: Time becomes entirely unimportant - rather, a complete mystery to all three of us - as we carelessly and spontaneously switch out various CDs from within the box one after another. We put on a CD from a band called Adult Rodeo, and I have yet to remember anything about it other than the horrifying (to me at the time, at least) album cover. After inserting this CD, I have very little remembrance of this time span. Having investigated the Last.FM profile of the computer we were listening to music from, it is apparent that we listened to music for at least 45 minutes after this Adult Rodeo CD was played, but I remember none of it. I do, however, remember that the open and close-eyed visuals were becoming more and more intense as time went on. I began having difficulty discerning between open-eyed and close-eyed vision. I laid on my friend's bed for what seemed an eternity.
3:30pm-4:30pm: At some point within this time span, I clearly remember beginning to hear voices within my head - particularly, I remember feeling as if the entire world's sounds were trapped within my head. I experienced outright synesthasea, not being able to understand the difference between what I was hearing and what I was seeing - what I was feeling and what I was thinking. Audible halucinations were becoming extremely prevelant, to the point that it terrified my horribly confused mind. I ran out of the bedroom, and pounced about the house cluelessly. I run to one of my other friends for help, but to me, they seem to be nearly as terrified as I am. I feel helpless, and ask the other friend what to do with my fear. I ask if I should go home or if I should go lay down on my friend's bed, and without receiving a clear answer, I proceed to walk out the door.
However, the outside world was even more terrifying than the inside of the house, and without even two steps out the front porch, I run back into the house even more confused and terrified. I remember demanding being able to be let back into the bedroom and asking if I could lay down on the bed in there. Without any questions, both friends agree to this idea, and I rush to the bedroom. My friends, growing concerned, follow me up the stairs, which were making horrible crunching noises, as if every time I stepped on a stair, a gun shot was fired at an innocent person. I lay on the bed, shivering and terrified, asking what I could do to make this end. I wanted nothing more than to have this entire experience end in a heartbeat.
I asked my friend what would make this trip end, and he responded 'only time.' As I hear this, I slip into a horrifying plunge of terror, attempting to comprehend 'time.' Time becomes a focal point of my horror, as I attempt to 'hear' and 'see' time. I remember floating out of my body, and looking at myself from the ceiling, screaming at my helpless body to 'wake up.' As this is happening, my body began to fall into a black orb which trapped my body. I had no control over my body - my hands, arms, and legs were spasming and clenching completely out of my control. I clenched my fists and cried for help from my friends. I ask if they have anything that could put me to sleep, as I continue to observe my body from above. I remember taking the Tylenol PM I was offered and spilling it all over the bedsheets. I drop my phone and continue to squirm on the bed for what seemed an eternity.
After a while, I completely black out and do not remember a significant portion of this time span. I do, however, remember clearly falling from the ceiling into a large tube. The tube was lined with patterned images of mouths, eyeballs, and spheres, and it grew darker and darker the further I fell. I remember complete blackness, before I saw a bright white light. As I overcame this white light, I awoke to find myself in my own body again, in my friend's bed still, and found myself staring right into the eyes of a fourth friend who had come to visit us and check up on our trip. At the time, I thought he was guiding me through the process of death, but it was merely a coincidence that he happened to arrive directly after my horrifying, terrifying trip into my own psyche and conciousness was coming to an end.
I began to evaluate my life, my decisions, and my friends. I looked at my glass of water next to the bed, and was unable to tell what it was. I completely lacked the understanding of food versus beverage, and had absolutely no idea why humans needed to eat or drink. I drink anyway, and as I do, I begin to remember where I am, and what I am doing. I remember that I had taken mushrooms, and that my friends were here to help me.
4:45pm: I slowly drift back into reality and conciousness. My body becomes more within my control, as I continue to drink more water. I have a very intimate and in depth conversation with my friend about current issues I was having with my living situation, my education situation, and other things that were troubling me. I don't remember the exact contents of the conversation, but I do remember that I was intentionally replacing words for others, and saying things that made no literal sense. I began to realize the beauty behind speech and communication, and began to see all of the objects within the bedroom explode with color and depth. Everything began to feel extremely euphoric and peaceful - as if I had died and had been reborn into a more knowledgeable, experienced human being.
5:30pm: I finally get out of my friend's bed, and the three of us reconviene and get onto the roof of the house and look at the people and cars beneath us. We have more in depth and deep conversations, as we start to become more coherent to my friends' roomates, who did not trip with us. The outside world looked not just pleasant, but rather warm and welcoming. I treasured nature, and the simple aspects of life. I remember remarking at a couple sitting outside for lunch a few houses down. The three of us begin to get quite silly, finally get off of the roof and back into my other friend's bedroom to talk about our experiences. The trip was not over, but it was not nearly as intense as it had been previously. The visual and audio halucinations were still present, but our minds were, to a degree, stable. Regardless, we were extremely happy and compassionate.
6:30pm: After discussing the trip some more, we set out to get a bite to eat and go our separate ways. When walking outside, we all remark at the beauty of the nature surrounding us, and particularly, the extravagance of the night sky during this particularly warm March day (75 degrees was the average temperature of the day.)
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


This handbook, developed cooperatively by AGI and AAPG, offers ideas and resources for geoscience professionals who want to visit classrooms or lead student field trips.
Use Our Workspace
Ideal for business meetings, trainings, (tele)conferencing, professional workshops, lunches, and events
AGI Keystone Fund
Help us build a better world ─ through the power of geoscience.


Square images look best. JPG or PNG image. Minimum 1400×1400 pixels and a maximum size of 3000×3000
This is a basic tagline for your show. For example, "The best country music" or "Weekly technology news review"
The full description of your show can be a long description with the complete details of your podcast.
Template text will be the default for new shows. Use template as a method to ensute consistent information accompanies your episodes. For example, you could set a title template of "Interview with <GUEST NAME>". This would assist ensuring all your episode titles follow a similar pattern, you just need to replace "<GUEST NAME>" appropriately. Special characters (eg, brackets and braces) do not have any special meaning; they are just a prompt for you when publishing a new episode.


 If using frozen tofu, simmer until completely defrosted. Remove from heat and let drain in a colander lined with paper towels. When cool enough to handle, gently squeeze and pat dry. If using frozen tofu, use firmer pressure to squeeze out water.
Cut tofu into bite-sized pieces, then toss together with soy sauce, sesame oil, and black pepper in a medium bowl. Once liquids are absorbed, toss tofu with cornstarch.
In a large skillet over medium-high heat, heat 2 tablespoons oil. Add tofu and let cook until golden on all sides, turning occasionally, 7 to 8 minutes. Season with salt and pepper, and remove from skillet and set aside
Heat remaining 1 tablespoon oil and add in garlic and ginger and cook until fragrant, 1 minute. Stir in string beans, carrots, broccoli, red pepper, and green onions. Cook until tender, about 8 to 10 minutes. Season with salt and pepper.
In a small bowl, stir together soy sauce, sesame oil, water, brown sugar, and cornstarch. Return tofu to skillet and add sauce mixture to pan. Stir and cook until slightly thickened, 2 minutes.


| About Dailyrotten |
|
Feedback
If you like this page, hate it, or would like to suggest changes,
<EMAIL_ADDRESS>is listening. This page
is experimental and somewhat different from what we usually offer, so please
do send your feedback.
Adding Stories
If you are a rotten newshound and you would like to suggest a story,
visit our submit page to
send us the URL. Stories that are accepted will have your name credited.
Posting Comments
In order to post comments to stories, you will have to
create an account.
Accounts will generally be validated within 24 hours, and of
course will be disabled if there is abuse.
Viewership
On the first full day this page went live, 100,000 people visited this Rotten
News page. Of course that was the day after the WTC attacks, so that number is
somewhat distorted. Right now this page gets between 50,000 and 75,000 people
every day.
Linking
We encourage everyone to link to this page; if you like it, others probably
will as well.
Other Rotten
Rotten
Gaping Maw
Celebrity Morgue
Mugshots
Rotten Store
Rate My Poo
Rate My Kitten
Rate My Finger
Penny Postcards
Phallic
Boners
Home
Make Dailyrotten your start page
|
|
|
October 20, 2002
Rude? I'll show you RUDE!
Independent Online | Submitted by: Alaska Freegold
"A public transit bus driver in the Portuguese capital Lisbon punched and
kicked passengers after they complained that he was rude, the daily newspaper
24Horas reported on Saturday. The driver stopped the packed bus at a red
light in the middle of rush-hour traffic in Lisbon on Friday afternoon and
repeatedly punched one passenger in the face, breaking the man's glasses."
|
|
Read article...
|
|
Better hockey stripper picture
Wire Services | Submitted by: Deth Vegetable
A better picture than the one we posted yesterday from the Flames-Bruins
game in Calgary, in which a man attempted to streak across the ice, ending
in unconsciousness.  Under the experiment, prisoners of
both sexes will be placed in the same environment, but there will be no
physical contact. The mixing of sexes will be for limited periods only and
under close watch, said the Thai Corrections Department." Haw.
|
|
Read article...
|
|
Only 199 kids still missing, way to go Florida!
Miami Herald | Submitted by: wingnut
Thirteen of 199 Florida children who have been missing from state supervision for months are believed by the Florida Department of Law Enforcement to be in ''immediate danger,'' The other 184 missing kids -- identified as teenage runaways or children abducted by nonabusive parents in violation of custody decrees -- may be in some danger, FDLE believes, but their circumstances make their immediate safety less of a concern. DCF administrators and investigators have said the Rilya Wilson case is an anomaly. "You weren't supposed to know about it"
|
|
Read article...
|
|
Penis size linked to index finger
Wire Services | Submitted by: What The?
American scientists need to catch up with the Greeks. Greek scientists,
way ahead us in a few important areas, have decided to do research on
whether a man's middle finger is an accurate indicator of his penis size.
|
|
Read article...
|
|
Lung man may lose much needed sympathy
Dayton Daily News | Submitted by: Idle Hands
Man sees wife drive by with another guy. Man follows wife with a
loaded gun. Man is arrested. The kicker: Man is somewhat of a local human
interest hero in dire need of a lung transplant. "Steele, the father of
two young children, has no health insurance. Community members have donated
thousands to the Kevin Steele NTFA Lung Transplant Fund." Will his
community will continue to be so generous?
|
|
Read article...
|
|
Monkey business at abandoned warehouse
Stuff NZ | Submitted by: wingnut
"There it lay, just inside a back door, still wearing the tattered sleeve
of an orange business shirt. Wrenched from the shoulder socket with the
ball joint showing, was the dry, crusty and mummified arm of a long dead
human. The point of entry to the crime scene was obvious, through a
broken window. Well, on first glance that's what it looked like."
  [The Rotten staff have undertaken an exhaustive review of Reichstadt legal statutes, but so far have been unable to corroborate Gramm's assertion.]
|
|
Read article...
|
|
Hands off these bras!
Stuff NZ | Submitted by: wingnut
A followup from two previous Daily Rottens: "Mr.Lee said since the second
bra cleanout women from all over the world had posted him their underwear.
A parcel containing bras would arrive with just a first name on it and no
address, he said. To his amusement recently a car load of women stripped
off their bras in broad daylight and placed them on the fence. "By God they
are going to have to work hard to get these bras off"
|
|
Read article...
|
|
Batty boys not welcome, mon
Observer | Submitted by: Son of Benway
"Every one of David's scars tells a terrifying story. There is the one
where his throat was slashed by a mob that chased him through the streets
of downtown Kingston, the incident in which his arm was broken in two
places, the horrific ordeal during which his right hand was almost severed
at the wrist by a blow from a machete. Then there are the marks on his feet
where he was beaten with sticks, the eardrum perforated by a blow from a
baton and the emotional scars of the time he was forced to run into the sea
close to Norman Manley airport and swim against the tide for four exhausting
hours to escape certain death."
|
|
Read article...
|
|
Canadian teens eat weeds to hallucinate
Ottawa Citizen | Submitted by: The Beaver
Ontario teenagers have been eating "Jimson Weed" to get high. The Beaver
has never heard of this one, apparently it turns you into a bloody lunatic,
and several teens have been taken to the hospital, hallucinating,
and nearly dead.
|
|
Read article...
|
|
Old lady goes out with a bang
Orange Today | Submitted by: Col.Klink
"A 74-year-old Romanian woman has died from a heart attack during sex with
her 26-year-old lover while her husband was sleeping in the other room...

|
|
Read article...
|
|
Pennsylvania inmates punished with superbug
Courier Times | Submitted by: Son of Benway
"I had nice skin at one time. I had no problems before I went into the
jail. Now, nothing takes it away." The 39-year-old woman from Upper
Southampton entered Bucks County's prison June 21, 2000, after pleading
guilty to taking her boyfriend's car without permission. Within a little
more than two weeks, she would be covered from scalp to feet with
red, swollen bumps."
|
|
Read article...
|
|
|
|
|


public class PNG8 extends java.lang.Object implements AnimationWriter, Dithered, com.badlogic.gdx.utils.Disposable
palette
field, which is a
PaletteReducer
object that defaults to null and can be reused. If you assign a PaletteReducer to palette, the
methods PaletteReducer.exact(Color[])
or PaletteReducer.analyze(Pixmap)
can be used to make the
target palette match a specific set of colors or the colors in an existing image. If palette is null, this will
compute a palette for each PNG that closely fits its set of given animation frames. If the palette isn't an exact
match for the colors used in an animation (indexed mode has at most 256 colors), this will dither pixels so that from
a distance, they look closer to the original colors. You can us PaletteReducer.setDitherStrength(float)
to
reduce (or increase) dither strength, typically between 0 and 2; the dithering algorithm used here by default is
* based on blue noise and a quasi-random pattern (DitherAlgorithm#BLUE_NOISE
), but you can select alternatives
* with Dithered.setDitherAlgorithm(DitherAlgorithm)
, like a modified version of Jorge Jimenez' Gradient Interleaved
* Noise using DitherAlgorithm#GRADIENT_NOISE
, or no dither at all with DitherAlgorithm#NONE
.
writePrecisely(FileHandle, Pixmap, boolean)
instead of write(FileHandle, Pixmap, boolean, boolean)
,
since writePrecisely will attempt to reproduce the exact colors if there are 256 colors or less in the Pixmap, and
will automatically change to calling write() if there are more than 256 colors.
Copyright (c) 2007 Matthias Mann - www.matthiasmann.de Copyright (c) 2014 Nathan Sweet Copyright (c) 2018 Tommy Ettinger Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Dithered.DitherAlgorithm
| Modifier and Type | Field and Description |
|---|---|
protected Dithered.DitherAlgorithm |
ditherAlgorithm |
PaletteReducer |
palette |
| Modifier and Type | Method and Description |
|---|---|
static void |
centralizePalette(com.badlogic.gdx.files.FileHandle input,
com.badlogic.gdx.files.FileHandle output)
Given a FileHandle to read from and a FileHandle to write to, duplicates the input FileHandle and edits the red,
green, and blue channels of each color in its palette (which is all colors in the image) by running each channel
through a function (
OtherMath.centralize(byte) ) that biases any channel values
that aren't extreme toward the center of their range, and keeps extreme values (such as max green, or black) as
they are. |
static void |
centralizePalette(com.badlogic.gdx.files.FileHandle input,
com.badlogic.gdx.files.FileHandle output,
float amount)
Given a FileHandle to read from and a FileHandle to write to, duplicates the input FileHandle and edits the red,
green, and blue channels of each color in its palette (which is all colors in the image) by running each channel
through a function (
OtherMath.centralize(byte) ) that biases any channel values
that aren't extreme toward the center of their range, and keeps extreme values (such as max green, or black) as
they are. |
void |
dispose()
Should probably be done explicitly; finalize() has been scheduled for removal from the JVM.
|
static void |
editPalette(com.badlogic.gdx.files.FileHandle input,
com.badlogic.gdx.files.FileHandle output,
com.badlogic.gdx.math.Interpolation editor)
Given a FileHandle to read from and a FileHandle to write to, duplicates the input FileHandle and edits the red,
green, and blue channels of each color in its palette (which is all colors in the image) by converting them to a
0.0-1.0 range and giving that to
editor . |
Dithered.DitherAlgorithm |
getDitherAlgorithm()
Gets the
DitherAlgorithm this is currently using. |
PaletteReducer |
getPalette()
Gets the PaletteReducer this uses to lower the color count in an image.
|
protected static com.badlogic.gdx.utils.OrderedMap<java.lang.String,byte[]> |
readChunks(java.io.InputStream inStream)
Simple PNG IO from https://www.java-tips.org/java-se-tips-100019/23-java-awt-image/2283-png-file-format-decoder-in-java.html .
|
void |
setCompression(int level)
Sets the deflate compression level.
|
void |
setDitherAlgorithm(Dithered.DitherAlgorithm ditherAlgorithm)
Sets the dither algorithm (or disables it) using an enum constant from
DitherAlgorithm . |
void |
setFlipY(boolean flipY)
If true, the resulting PNG is flipped vertically.
|
void |
setPalette(PaletteReducer palette)
Sets the PaletteReducer this uses to bring a high-color or different-palette image down to a smaller palette
size.
|
static void |
swapPalette(com.badlogic.gdx.files.FileHandle input,
com.badlogic.gdx.files.FileHandle output,
int[] palette)
Given a FileHandle to read from and a FileHandle to write to, duplicates the input FileHandle and changes its
palette (in full and in order) to exactly match
palette . |
void |
write(com.badlogic.gdx.files.FileHandle file,
com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> frames)
Writes the given Pixmaps to the requested FileHandle at 30 frames per second.
|
void |
write(com.badlogic.gdx.files.FileHandle file,
com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> frames,
int fps)
Writes the given Pixmaps to the requested FileHandle at the requested frames per second.
|
void |
write(com.badlogic.gdx.files.FileHandle file,
com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> frames,
int fps,
boolean dither)
Writes the Pixmaps to the stream without closing the stream, optionally computing an 8-bit palette from the given
Pixmap.
|
void |
write(com.badlogic.gdx.files.FileHandle file,
com.badlogic.gdx.graphics.Pixmap pixmap)
Writes the given Pixmap to the requested FileHandle, computing an 8-bit palette from the most common colors in
pixmap.
|
void |
write(com.badlogic.gdx.files.FileHandle file,
com.badlogic.gdx.graphics.Pixmap pixmap,
boolean computePalette)
Writes the given Pixmap to the requested FileHandle, optionally computing an 8-bit palette from the most common
colors in pixmap.
|
void |
write(com.badlogic.gdx.files.FileHandle file,
com.badlogic.gdx.graphics.Pixmap pixmap,
boolean computePalette,
boolean dither)
Writes the pixmap to the stream without closing the stream, optionally computing an 8-bit palette from the given
Pixmap.
|
void |
write(com.badlogic.gdx.files.FileHandle file,
com.badlogic.gdx.graphics.Pixmap pixmap,
boolean computePalette,
boolean dither,
int threshold)
Writes the pixmap to the stream without closing the stream, optionally computing an 8-bit palette from the given
Pixmap.
|
void |
write(java.io.OutputStream output,
com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> frames,
int fps) |
void |
write(java.io.OutputStream output,
com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> frames,
int fps,
boolean dither)
Writes the Pixmaps to the stream without closing the stream, optionally computing an 8-bit palette from the given
Pixmaps.
|
void |
write(java.io.OutputStream output,
com.badlogic.gdx.graphics.Pixmap pixmap)
Writes the pixmap to the stream without closing the stream and computes an 8-bit palette from the Pixmap.
|
void |
write(java.io.OutputStream output,
com.badlogic.gdx.graphics.Pixmap pixmap,
boolean computePalette)
Writes the pixmap to the stream without closing the stream, optionally computing an 8-bit palette from the given
Pixmap.
|
void |
write(java.io.OutputStream output,
com.badlogic.gdx.graphics.Pixmap pixmap,
boolean computePalette,
boolean dither)
Writes the pixmap to the stream without closing the stream, optionally computing an 8-bit palette from the given
Pixmap.
|
void |
write(java.io.OutputStream output,
com.badlogic.gdx.graphics.Pixmap pixmap,
boolean computePalette,
boolean dither,
int threshold)
Writes the pixmap to the stream without closing the stream, optionally computing an 8-bit palette from the given
Pixmap.
|
protected static void |
writeChunks(java.io.OutputStream outStream,
com.badlogic.gdx.utils.OrderedMap<java.lang.String,byte[]> chunks)
Simple PNG IO from https://www.java-tips.org/java-se-tips-100019/23-java-awt-image/2283-png-file-format-decoder-in-java.html .
|
void |
writePrecisely(com.badlogic.gdx.files.FileHandle file,
com.badlogic.gdx.graphics.Pixmap pixmap,
boolean ditherFallback)
Attempts to write the given Pixmap exactly as a PNG-8 image to file; this attempt will only succeed if there
are no more than 256 colors in the Pixmap (treating all partially transparent colors as fully transparent).
|
void |
writePrecisely(com.badlogic.gdx.files.FileHandle file,
com.badlogic.gdx.graphics.Pixmap pixmap,
boolean ditherFallback,
int threshold)
Attempts to write the given Pixmap exactly as a PNG-8 image to file; this attempt will only succeed if there
are no more than 256 colors in the Pixmap (treating all partially transparent colors as fully transparent).
|
void |
writePrecisely(com.badlogic.gdx.files.FileHandle file,
com.badlogic.gdx.graphics.Pixmap pixmap,
int[] exactPalette,
boolean ditherFallback,
int threshold)
Attempts to write the given Pixmap exactly as a PNG-8 image to output; this attempt will only succeed if there
are no more than 256 colors in the Pixmap (treating all partially transparent colors as fully transparent).
|
void |
writePrecisely(java.io.OutputStream output,
com.badlogic.gdx.graphics.Pixmap pixmap,
boolean ditherFallback)
Attempts to write the given Pixmap exactly as a PNG-8 image to output; this attempt will only succeed if there
are no more than 256 colors in the Pixmap (treating all partially transparent colors as fully transparent).
|
void |
writePrecisely(java.io.OutputStream output,
com.badlogic.gdx.graphics.Pixmap pixmap,
boolean ditherFallback,
int threshold)
Attempts to write the given Pixmap exactly as a PNG-8 image to output; this attempt will only succeed if there
are no more than 256 colors in the Pixmap (treating all partially transparent colors as fully transparent).
|
void |
writePrecisely(java.io.OutputStream output,
com.badlogic.gdx.graphics.Pixmap pixmap,
int[] exactPalette,
boolean ditherFallback,
int threshold)
Attempts to write the given Pixmap exactly as a PNG-8 image to output; this attempt will only succeed if there
are no more than 256 colors in the Pixmap (treating all partially transparent colors as fully transparent).
|
void |
writePreciseSection(com.badlogic.gdx.files.FileHandle file,
com.badlogic.gdx.graphics.Pixmap pixmap,
int[] exactPalette,
int startX,
int startY,
int width,
int height)
Attempts to write a rectangular section of the given Pixmap exactly as a PNG-8 image to file; this attempt will
only succeed if there are no more than 256 colors in the Pixmap (treating all partially transparent colors as
fully transparent).
|
void |
writePreciseSection(java.io.OutputStream output,
com.badlogic.gdx.graphics.Pixmap pixmap,
int[] exactPalette,
int startX,
int startY,
int width,
int height)
Attempts to write a rectangular section of the given Pixmap exactly as a PNG-8 image to output; this attempt will
only succeed if there are no more than 256 colors in the Pixmap (treating all partially transparent colors as
fully transparent).
|
public PaletteReducer palette
protected Dithered.DitherAlgorithm ditherAlgorithm
public PaletteReducer getPalette()
Dithered
getPalette
in interface Dithered
public void setPalette(PaletteReducer palette)
Dithered
palette
is null, this should try to assign itself a PaletteReducer when given a new image.setPalette
in interface Dithered
palette
- a PaletteReducer that is often pre-configured with a specific palette; null is usually allowedpublic Dithered.DitherAlgorithm getDitherAlgorithm()
DitherAlgorithm
this is currently using.getDitherAlgorithm
in interface Dithered
public void setDitherAlgorithm(Dithered.DitherAlgorithm ditherAlgorithm)
DitherAlgorithm
. If this
is given null, it instead does nothing.setDitherAlgorithm
in interface Dithered
ditherAlgorithm
- which DitherAlgorithm
to use for upcoming outputpublic void setFlipY(boolean flipY)
public void setCompression(int level)
Deflater.DEFAULT_COMPRESSION
.public void write(com.badlogic.gdx.files.FileHandle file, com.badlogic.gdx.graphics.Pixmap pixmap)
file
- a FileHandle that must be writable, and will have the given Pixmap written as a PNG-8 imagepixmap
- a Pixmap to write to the given filepublic void write(com.badlogic.gdx.files.FileHandle file, com.badlogic.gdx.graphics.Pixmap pixmap, boolean computePalette)
file
- a FileHandle that must be writable, and will have the given Pixmap written as a PNG-8 imagepixmap
- a Pixmap to write to the given filecomputePalette
- if true, this will analyze the Pixmap and use the most common colorspublic void write(com.badlogic.gdx.files.FileHandle file, com.badlogic.gdx.graphics.Pixmap pixmap, boolean computePalette, boolean dither)
palette
is null (the default unless it has been assigned a PaletteReducer value), this will
compute a palette from the given Pixmap regardless of computePalette. Optionally dithers the result if
dither
is true.file
- a FileHandle that must be writable, and will have the given Pixmap written as a PNG-8 imagepixmap
- a Pixmap to write to the given output streamcomputePalette
- if true, this will analyze the Pixmap and use the most common colorsdither
- true if this should dither colors that can't be represented exactlypublic void write(com.badlogic.gdx.files.FileHandle file, com.badlogic.gdx.graphics.Pixmap pixmap, boolean computePalette, boolean dither, int threshold)
palette
is null (the default unless it has been assigned a PaletteReducer value), this will
compute a palette from the given Pixmap regardless of computePalette. Uses the given threshold while analyzing
the palette if this needs to compute a palette; threshold values can be as low as 0 to try to use as many colors
as possible (prefer writePrecisely(FileHandle, Pixmap, boolean, int)
for that, though) and can range up
to very high numbers if very few colors should be used; usually threshold is from 100 to 800. Optionally dithers
the result if dither
is true.file
- a FileHandle that must be writable, and will have the given Pixmap written as a PNG-8 imagepixmap
- a Pixmap to write to the given output streamcomputePalette
- if true, this will analyze the Pixmap and use the most common colorsdither
- true if this should dither colors that can't be represented exactlythreshold
- the analysis threshold to use if computePalette is true (min 0, practical max is over 100000)public void write(java.io.OutputStream output, com.badlogic.gdx.graphics.Pixmap pixmap)
output
- an OutputStream that will not be closedpixmap
- a Pixmap to write to the given output streampublic void write(java.io.OutputStream output, com.badlogic.gdx.graphics.Pixmap pixmap, boolean computePalette)
palette
is null (the default unless it has been assigned a PaletteReducer value), this will
compute a palette from the given Pixmap regardless of computePalette.output
- an OutputStream that will not be closedpixmap
- a Pixmap to write to the given output streamcomputePalette
- if true, this will analyze the Pixmap and use the most common colorspublic void write(java.io.OutputStream output, com.badlogic.gdx.graphics.Pixmap pixmap, boolean computePalette, boolean dither)
palette
is null (the default unless it has been assigned a PaletteReducer value), this will
compute a palette from the given Pixmap regardless of computePalette.output
- an OutputStream that will not be closedpixmap
- a Pixmap to write to the given output streamcomputePalette
- if true, this will analyze the Pixmap and use the most common colorsdither
- true if this should dither colors that can't be represented exactlypublic void write(java.io.OutputStream output, com.badlogic.gdx.graphics.Pixmap pixmap, boolean computePalette, boolean dither, int threshold)
palette
is null (the default unless it has been assigned a PaletteReducer value), this will
compute a palette from the given Pixmap regardless of computePalette.output
- an OutputStream that will not be closedpixmap
- a Pixmap to write to the given output streamcomputePalette
- if true, this will analyze the Pixmap and use the most common colorsdither
- true if this should dither colors that can't be represented exactlythreshold
- the analysis threshold to use if computePalette is true (min 0, practical max is over 100000)public void writePrecisely(com.badlogic.gdx.files.FileHandle file, com.badlogic.gdx.graphics.Pixmap pixmap, boolean ditherFallback)
write(FileHandle, Pixmap, boolean, boolean)
, which
can dither the image to use no more than 255 colors (plus fully transparent) based on ditherFallback and will
always analyze the Pixmap to get an accurate-enough palette. The write() methods in this class that don't have
"Precise" in the name will reduce the color depth somewhat, but this will keep the non-alpha components of colors
exactly. For full precision on any color count, use PixmapIO.PNG
, or
AnimatedPNG
for animations.file
- a FileHandle that must be writable, and will have the given Pixmap written as a PNG-8 imagepixmap
- a Pixmap to write to the given output streamditherFallback
- if the Pixmap contains too many colors, this determines whether it will dither the outputpublic void writePrecisely(com.badlogic.gdx.files.FileHandle file, com.badlogic.gdx.graphics.Pixmap pixmap, boolean ditherFallback, int threshold)
write(FileHandle, Pixmap, boolean, boolean)
, which
can dither the image to use no more than 255 colors (plus fully transparent) based on ditherFallback and will
always analyze the Pixmap to get an accurate-enough palette, using the given threshold for analysis (which is
typically between 1 and 1000, and most often near 200-400). The write() methods in this class that don't have
"Precise" in the name will reduce the color depth somewhat, but this will keep the non-alpha components of colors
exactly. For full precision on any color count, use PixmapIO.PNG
, or
AnimatedPNG
for animations.file
- a FileHandle that must be writable, and will have the given Pixmap written as a PNG-8 imagepixmap
- a Pixmap to write to the given output streamditherFallback
- if the Pixmap contains too many colors, this determines whether it will dither the outputthreshold
- the analysis threshold to use if there are too many colors (min 0, practical max is over 100000)public void writePrecisely(com.badlogic.gdx.files.FileHandle file, com.badlogic.gdx.graphics.Pixmap pixmap, int[] exactPalette, boolean ditherFallback, int threshold)
exactPalette
(and it is
non-null), then that palette will be used in full and in order. If exactPalette
is null, this scans
through all the colors in pixmap, using the full set of colors if there are 256 or less (including transparent,
if present), or if there are too many colors, this falls back to calling
write(OutputStream, Pixmap, boolean, boolean)
, which can dither the image to use no more than 255 colors
(plus fully transparent) based on ditherFallback and will always analyze the Pixmap to get an accurate-enough
palette, using the given threshold for analysis (which is typically between 1 and 1000, and most often near
200-400). The dither algorithm can be configured with Dithered.setDitherAlgorithm(DitherAlgorithm)
, if it gets
used at all. The write() methods in this class that don't have "Precise" in the name will reduce the color depth
somewhat, but this will keep the non-alpha components of colors exactly. For full precision on any color count,
use PixmapIO.PNG
, or AnimatedPNG
for animations.file
- a FileHandle that must be writable, and will have the given Pixmap written as a PNG-8 imagepixmap
- a Pixmap to write to the given output streamexactPalette
- if non-null, will try to use this palette exactly, in order and including unused colorsditherFallback
- if the Pixmap contains too many colors, this determines whether it will dither the outputthreshold
- the analysis threshold to use if there are too many colors (min 0, practical max is over 100000)public void writePrecisely(java.io.OutputStream output, com.badlogic.gdx.graphics.Pixmap pixmap, boolean ditherFallback)
write(OutputStream, Pixmap, boolean, boolean)
, which
can dither the image to use no more than 255 colors (plus fully transparent) based on ditherFallback and will
always analyze the Pixmap to get an accurate-enough palette. The write() methods in this class that don't have
"Precise" in the name will reduce the color depth somewhat, but this will keep the non-alpha components of colors
exactly. For full precision on any color count, use PixmapIO.PNG
, or
AnimatedPNG
for animations.output
- an OutputStream that will not be closedpixmap
- a Pixmap to write to the given output streamditherFallback
- if the Pixmap contains too many colors, this determines whether it will dither the outputpublic void writePrecisely(java.io.OutputStream output, com.badlogic.gdx.graphics.Pixmap pixmap, boolean ditherFallback, int threshold)
write(OutputStream, Pixmap, boolean, boolean)
, which
can dither the image to use no more than 255 colors (plus fully transparent) based on ditherFallback and will
always analyze the Pixmap to get an accurate-enough palette, using the given threshold for analysis (which is
typically between 1 and 1000, and most often near 200-400). The write() methods in this class that don't have
"Precise" in the name will reduce the color depth somewhat, but this will keep the non-alpha components of colors
exactly. For full precision on any color count, use PixmapIO.PNG
, or
AnimatedPNG
for animations.output
- an OutputStream that will not be closedpixmap
- a Pixmap to write to the given output streamditherFallback
- if the Pixmap contains too many colors, this determines whether it will dither the outputthreshold
- the analysis threshold to use if there are too many colors (min 0, practical max is over 100000)public void writePrecisely(java.io.OutputStream output, com.badlogic.gdx.graphics.Pixmap pixmap, int[] exactPalette, boolean ditherFallback, int threshold)
exactPalette
(and it is
non-null), then that palette will be used in full and in order. If exactPalette
is null, this scans
through all the colors in pixmap, using the full set of colors if there are 256 or less (including transparent,
if present), or if there are too many colors, this falls back to calling
write(OutputStream, Pixmap, boolean, boolean)
, which can dither the image to use no more than 255 colors
(plus fully transparent) based on ditherFallback and will always analyze the Pixmap to get an accurate-enough
palette, using the given threshold for analysis (which is typically between 1 and 1000, and most often near
200-400). The dither algorithm can be configured with Dithered.setDitherAlgorithm(DitherAlgorithm)
, if it gets
used at all. The write() methods in this class that don't have "Precise" in the name will reduce the color depth
somewhat, but this will keep the non-alpha components of colors exactly. For full precision on any color count,
use PixmapIO.PNG
, or AnimatedPNG
for animations.output
- an OutputStream that will not be closedpixmap
- a Pixmap to write to the given output streamexactPalette
- if non-null, will try to use this palette exactly, in order and including unused colorsditherFallback
- if the Pixmap contains too many colors, this determines whether it will dither the outputthreshold
- the analysis threshold to use if there are too many colors (min 0, practical max is over 100000)public void writePreciseSection(com.badlogic.gdx.files.FileHandle file, com.badlogic.gdx.graphics.Pixmap pixmap, int[] exactPalette, int startX, int startY, int width, int height)
PixmapIO.PNG
, or AnimatedPNG
for animations.file
- a FileHandle that must be writable, and will have the given Pixmap written as a PNG-8 imagepixmap
- a Pixmap to write to the given output streamexactPalette
- a palette with no more than 256 RGBA8888 ints in it; the colors will be used exactly if possiblestartX
- start x-coordinate of the section in pixmapstartY
- start y-coordinate of the section in pixmapwidth
- width of the section, in pixelsheight
- height of the section, in pixelspublic void writePreciseSection(java.io.OutputStream output, com.badlogic.gdx.graphics.Pixmap pixmap, int[] exactPalette, int startX, int startY, int width, int height)
PixmapIO.PNG
, or AnimatedPNG
for animations.output
- an OutputStream that will not be closedpixmap
- a Pixmap to write to the given output streamexactPalette
- a palette with no more than 256 RGBA8888 ints in it; the colors will be used exactly if possiblestartX
- start x-coordinate of the section in pixmapstartY
- start y-coordinate of the section in pixmapwidth
- width of the section, in pixelsheight
- height of the section, in pixelspublic void write(com.badlogic.gdx.files.FileHandle file, com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> frames)
palette
is null (the default unless it has been assigned a PaletteReducer value), this will
compute a palette from all of the frames given. Otherwise, this uses the colors already in palette
.
Uses getDitherAlgorithm()
to determine how to dither.write
in interface AnimationWriter
file
- a FileHandle that must be writable, and will have the given Pixmap written as a PNG-8 imageframes
- a Pixmap Array to write as a sequence of frames to the given output streampublic void write(com.badlogic.gdx.files.FileHandle file, com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> frames, int fps)
palette
is null (the default unless it has been assigned a PaletteReducer value), this will
compute a palette from all of the frames given. Otherwise, this uses the colors already in palette
.
Uses getDitherAlgorithm()
to determine how to dither.write
in interface AnimationWriter
file
- a FileHandle that must be writable, and will have the given Pixmap written as a PNG-8 imageframes
- a Pixmap Array to write as a sequence of frames to the given output streamfps
- how many frames per second the animation should run atpublic void write(com.badlogic.gdx.files.FileHandle file, com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> frames, int fps, boolean dither)
palette
is null (the default unless it has been assigned a PaletteReducer value), this will
compute a palette from all of the frames given. Otherwise, this uses the colors already in palette
.
Optionally dithers the result if dither
is true, using the dither algorithm selected with
Dithered.setDitherAlgorithm(DitherAlgorithm)
(or DitherAlgorithm#PATTERN
if not set).file
- a FileHandle that must be writable, and will have the given Pixmap written as a PNG-8 imageframes
- a Pixmap Array to write as a sequence of frames to the given output streamfps
- how many frames per second the animation should run atdither
- true if this should use getDitherAlgorithm()
to dither; false to not ditherpublic void write(java.io.OutputStream output, com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> frames, int fps, boolean dither)
palette
is null (the default unless it has been assigned a PaletteReducer value), this will
compute a palette from all of the frames given. Otherwise, this uses the colors already in palette
.
Optionally dithers the result if dither
is true, using the dither algorithm selected with
Dithered.setDitherAlgorithm(DitherAlgorithm)
(or DitherAlgorithm#PATTERN
if not set).output
- an OutputStream that will not be closedframes
- a Pixmap Array to write as a sequence of frames to the given output streamfps
- how many frames per second the animation should run atdither
- true if this should use getDitherAlgorithm()
to dither; false to not ditherpublic void write(java.io.OutputStream output, com.badlogic.gdx.utils.Array<com.badlogic.gdx.graphics.Pixmap> frames, int fps)
write
in interface AnimationWriter
public void dispose()
dispose
in interface com.badlogic.gdx.utils.Disposable
protected static com.badlogic.gdx.utils.OrderedMap<java.lang.String,byte[]> readChunks(java.io.InputStream inStream) throws java.io.IOException
inStream
- an input stream to read from; will be closed at the end of this methodOrderedMap
of chunk names to chunk contentsjava.io.IOException
- if the file is not a PNG or is extremely longprotected static void writeChunks(java.io.OutputStream outStream, com.badlogic.gdx.utils.OrderedMap<java.lang.String,byte[]> chunks)
outStream
- an output stream; will be closed when this method endschunks
- an OrderedMap of chunks, almost always produced by readChunks(InputStream)
public static void swapPalette(com.badlogic.gdx.files.FileHandle input, com.badlogic.gdx.files.FileHandle output, int[] palette)
palette
. This is only likely to work if the input file
was written with the same palette order, such as by specifying an exactPalette
in
writePrecisely(FileHandle, Pixmap, int[], boolean, int)
where that exactPalette has similar colors at
each palette index to palette
.input
- FileHandle to read from that should have a similar palette (and very similar order) to palette
output
- FileHandle that should be writable and emptypalette
- RGBA8888 color arraypublic static void editPalette(com.badlogic.gdx.files.FileHandle input, com.badlogic.gdx.files.FileHandle output, com.badlogic.gdx.math.Interpolation editor)
editor
. The
libGDX wiki page on Interpolation has valuable info.input
- FileHandle to read from that should contain an indexed-mode PNG (such as one this class wrote)output
- FileHandle that should be writable and emptyeditor
- an Interpolation, such as Interpolation.circleOut
(which brightens all but the darkest areas)public static void centralizePalette(com.badlogic.gdx.files.FileHandle input, com.badlogic.gdx.files.FileHandle output)
OtherMath.centralize(byte)
) that biases any channel values
that aren't extreme toward the center of their range, and keeps extreme values (such as max green, or black) as
they are.input
- FileHandle to read from that should contain an indexed-mode PNG (such as one this class wrote)output
- FileHandle that should be writable and emptypublic static void centralizePalette(com.badlogic.gdx.files.FileHandle input, com.badlogic.gdx.files.FileHandle output, float amount)
OtherMath.centralize(byte)
) that biases any channel values
that aren't extreme toward the center of their range, and keeps extreme values (such as max green, or black) as
they are. This takes an amount
parameter, between 0.0 and 1.0, that controls how much of the centralized
effect to use (higher amount means more centralized colors).input
- FileHandle to read from that should contain an indexed-mode PNG (such as one this class wrote)output
- FileHandle that should be writable and emptyamount
- how much this should use of the centralizing effect, from 0.0 (no centralization) to 1.0 (full)


|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object Logic.Command
public class Command
| Constructor Summary | |
|---|---|
Command()
Default Constructor of Command. |
| Method Summary | |
|---|---|
boolean |
crashIntoEnemy(Spaceship s,
Enemy e)
Verifies if the current spaceship crashes into an enemy, with boundary boxes. |
void |
divideAsteroid(Asteroid a)
Divides asteroid when hit by shot |
void |
enemyCreation(java.lang.String type)
Creates enemies into the game. |
boolean |
fireSpaceShip(char key,
Spaceship s)
Fires a shot from the current spaceship. |
java.util.Vector<Enemy> |
getEnemies()
Gets the vector of enemies of the current game. |
int |
getLevel()
Gets the level within the game. |
void |
goToNextLevel()
Advances to next level. |
void |
incrementSpaceShipScore(Spaceship s,
int score)
Increments the spaceship score by a certain value. |
void |
moveEnemy(Enemy e)
Moves the enemy by one. |
void |
moveShots(Shot s)
Moves the current shots in-game. |
void |
moveSpaceShip(char key,
Spaceship s,
int boost)
Moves the Spaceship in the game. |
void |
setEnemies(java.util.Vector<Enemy> _enemies)
Sets the vector of enemies of the current game. |
void |
setLevel(int _level)
Sets the current level of the game. |
boolean |
shotCrashesIntoEnemy(Shot sh,
Enemy e,
Spaceship s,
int i)
Verifies if the current shot crashes into an enemy, with boundary boxes. |
void |
suicideEnemy(Enemy e)
Kills the enemy, via suicide. |
void |
suicideShot(Shot s)
Kills the shot, via suicide. |
void |
verifyAngle(double angle,
double posX,
double posY,
Spaceship s)
Verifies the angle of the spaceship, giving it the necessary coordinates to move. |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public Command()
| Method Detail |
|---|
public java.util.Vector<Enemy> getEnemies()
public void setEnemies(java.util.Vector<Enemy> _enemies)
_enemies
- The vector of enemies to be set.public void moveSpaceShip(char key, Spaceship s, int boost)
key
- Key pressed.s
- Current spaceshipboost
- Current boostpublic void verifyAngle(double angle, double posX, double posY, Spaceship s)
angle
- The Angle to be verified.posX
- The current X position.posY
- The current Y position.s
- The Spaceship in question.public boolean fireSpaceShip(char key, Spaceship s)
key
- Key pressed.s
- Current spaceship.
public void moveEnemy(Enemy e)
e
- The Enemy in question.public void moveShots(Shot s)
s
- The shot to be moved.public void suicideEnemy(Enemy e)
e
- The enemy in question.public void suicideShot(Shot s)
s
- The shot in question.public void divideAsteroid(Asteroid a)
a
- The asteroid to be divided.i
- Index of this asteroid in the enemies vector.public void incrementSpaceShipScore(Spaceship s, int score)
s
- The Spaceship to have its score incremented.score
- The score to increment.public void enemyCreation(java.lang.String type)
type
- Type of enemy to be created.public boolean crashIntoEnemy(Spaceship s, Enemy e)
s
- The current spaceship.e
- The enemy in question.
public boolean shotCrashesIntoEnemy(Shot sh, Enemy e, Spaceship s, int i)
s
- The current shot.e
- The enemy in question.i
- Index of this enemy in the enemies vector.
public void goToNextLevel()
public void setLevel(int _level)
_level
- The level to be set.public int getLevel()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Teachable Booster
Now view the overall section time and also the lecture running time with respect to the section.
The first timestamp is at the playback speed that you are using for your course and the second one is the original timestamp i.e. at playback speed 1x.
Example: At 2x playback speed, a 5 min lecture would have the following info : [2:50 |
5:00]
Open this plugin from any Teachable Course page.
Developed by Mayank
Raj
Contribute to the project - GitHub.


--- layout: post permalink: goldentours.html Tags: Array NameOfCoupon: Golden Tours Cash Back Summary: See our Golden Tours Coupon Code, Golden Tours Rebate, Golden Tours Promo Code, Golden Tours Discount, Golden Tours Coupon Cash Back Rebate here. MetaKeywords: Golden Tours Coupon Code, Golden Tours Rebate, Golden Tours Promo Code, Golden Tours Cash Back Rebate, Golden Tours Discount, Golden Tours Coupon Image: images/30945.JPG LinkURL: http://www.shareasale.com/r.cfm?b=279571&u=412002&m=30945 affiliate_url_link: http://www.icouponblog.com/jane.php?id=9168 thesis_readmore: See the Golden Tours Coupon thesis_thumb: http://www.icouponblog.com/tn.php?merchantURL=goldentours.com Title: Save 5.00% - Golden Tours Coupon Code for goldentours.com. Golden Tours Rebate & Discount thesis_description: Our Golden Tours Discount Coupon Code for goldentours.com. We have the best Golden Tours Rebate anywhere. thesis_keywords: Golden Tours, Golden Tours Coupon Code, Golden Tours Discount, Golden Tours Rebate product_name: Golden Tours hop_url: http://www.icouponblog.com/hop.php?id=9168 ---


Use this configuration panel to configure data sources, and connection pools.
Figure 1. Add New Datasource
Figure 2. Adding Datasource with InMemory configuration
Figure 3. Datasource configuration with JNDI
The meanings of many field descriptions are similar to the DBCPconfiguration guide. Please refer that for more information. The following table only briefly summaries some of them.
| New Datasource | |
| Field Name | Description |
| Name | Name of the datasource (This value should be unique.) |
| Datasource Name | A name to identify the datasource, if a value is not specified, |
| Driver | The JDBC driver to be used. |
| URL | The connection URL to be passed to the JDBC driver to establish a connection |
| User Name | The connection user name to be passed to the JDBC driver to establish a connection |
| Password | The connection password to be passed to the JDBC driver to establish a connection |
| Datasource Pool Implementation | The type of the datasource pool implementation |
| Pool type | This can be either: BasicDataSource or PerUserPoolDataSource. BasicDataSource - This datasource is an implementation of javax.sql.DataSource that is configured via Java Bean properties. PerUserPoolDataSource :- This datasource uses individual pools per user. Some properties can be set specifically for a given user, if the deployment environment can support initialization of mapped properties. For example, a pool of admin or write-access Connections can be guaranteed a certain number of connections, separate from a maximum set for users with read-only connections |
| Repository type | The type of the datasource repository. |
| IC Factory | Initial context factory of the JNDI |
| Provider Port | If specified, it will be used to create a JNDI provider URL internally. |
| Provider URL | The URL of the JNDI provider. It is assumed that this URL exists and is accessible. |
| Max Active | The maximum number of active connections that can be allocated from this pool at the same time. If a negative value is specified, there wont be a limit to the number of connections. The default value is 8. |
| Max Idle | The minimum number of connections that can remain idle in the pool, without extra ones being created.It can be zero, to create none. The default value is 8. |
| Initial Size (int) | The initial number of connections that are created when the pool is started. |
| Max Open Statements (int) | The maximum number of active connections that can be allocated from this pool at the same time. If a negative value is specifed, there wont be a limit to the number of connections. The default value is 8. |
| Transaction Isolation | For the isolation values, please refer to the javadoc. |
| Auto Commit | The default auto-commit state of connections created by this pool. |
| Pool Statements | Enables prepared statement pooling for this pool. The default value is False. |
| Test On Borrow | Indicates whether objects will be validated before being borrowed
from the pool. If the object fails to validate, it will be dropped from
the pool, and we will attempt to borrow another. The default value is
True. Note -
For the value True to have any effect, the
validationQuery parameter must be set to a non-null
string |
| Test While Idle | Indicates whether objects will be validated by the idle object
evictor (if any). If an object fails to validate, it will be dropped
from the pool. The default value is False.
Note - For the value True to have any effect, the
validationQuery parameter must be set to a non-null
string. |
| Validation Query | The SQL query that will be used to validate connections from this pool before returning them to the caller. If specified, this query must be an SQL SELECT statement that returns at least one row |


WITNESS LIST
Finance
January 24, 2013 9:00 AM
FOR:
Bugen, Claire Superintendent (also providing written testimony) (TSD)
Giuntoli, Robert Parent (TSD PTA)
Kennedy, Renita Parent (The Texas School for the Deaf PTA), Austin
Oates, Jodi ACC ASL Lab Tutor & TSDAA Pres. (TSD)
Withrow, Heather Lightfoot Mom/ artist (Texas School for the Deaf), Austin
ON:
Bego, Gary Director of Financial & Support Operations (TSD)
Carpenter, Richard College Chancellor (also providing written testimony) (Texas
Association of Community Colleges)
Daugherty, William Superintendent TSBVI (also providing written testimony) (TSBVI),
Austin
Estrada, Daniel LBB Staff (also providing written testimony) (LBB)
Flickinger, Marie Publisher (also providing written testimony) (Community College Assoc
of Texas Trustees & San Jacinto College), HOU
Garcia, Dr Rey President (also providing written testimony) (Texas Assn of Community
Colleges), Austin, TX
Grey, John Government Relations Specialist (Texas State Teachers Association), Austin
Guthrie, Brian Executive Director (also providing written testimony) (Teacher Retirement
System), Austin, TX
Hoffman, Emily LBB Staff (also providing written testimony) (LBB)
Holda, William M. "Bill" President, Kilgore College (also providing written testimony)
(Texas Association of Community Colleges & Kilgore C), Kilgore, TX
Jones, Jennifer LBB Staff (LBB)
Kavanaugh, Kris LBB Staff (also providing written testimony) (LBB)
Keyton, Sarah LBB Staff (also providing written testimony) (LBB)
Lee, Tim Executive Director (also providing written testimony) (TX Retired Teachers
Association), Austin, TX
Maldonado, Cesar President, TSTC Harlingen (Texas State Technical College), Harlingen,
TX
McGeady, John LBB Staff (LBB)
Mullins, Philip Retired (also providing written testimony) (Self), Austin
Quinzi, Patty Legislative Council (also providing written testimony) (TX - AFT), Austin,
TX
Reeser, Michael Chancellor (also providing written testimony) (Texas State Technical
College System), Crawford, TX
Rogers, Tom Retired Teachers (also providing written testimony) (Austin Retired Teachers
Assoc. - Legislative Comm.), Austin, TX
Sanderson, Josh Lobbyist (ATPE), Austin, TX
Wright, Jody LBB Staff (also providing written testimony) (LBB)
Registering, but not testifying:
ON:
Buchanan, Ph.D. (Hist), Carole A Retired teacher (Tx Retired Teachers Assn)
WITNESS LIST
Finance
January 24, 2013 9:00 AM
Camenisch, Walter Governing Board (TSD), Austin, TX
Cravey, Irene AVC TSTC (Higher Ed) (TSTC Marshall), Round Rock, TX
Green, Don Chief Financial Officer (Teacher Retirement System of Texas)
Houghtling, Susan Director of Planning & Education (Tx. School for the Blind & Visually
Impaired), Austin
Jones, Betsey Director of Health Care Policy (Teacher Retirement System)
Lawrence, Gail President TSTCWT (TSTCWT), Sweetwater, TX
Musil, Becky Provost, Texas State Technical College Waco (Texas State Technical
College)
Schulz, Barney CFO (Texas School for the Blind & Visually Impaired), Round Rock, TX
Welch, Ken Deputy Director - TRS (Teacher Retirement System), Austin, TX
Providing written testimony:
ON:
Gustafson, Lindsay Consultant (Texas Classroom Teachers Assoc.), Austin, TX
Henricks, Gary Vice Chancellor/CFO (TSTC System), Waco, TX
Owens, Greg LBB Staff (LBB)


{% extends 'base.html' %} {% block head %} {{ super() }} {% block title %}About{% endblock %} {% endblock %} {% block content %}
Welcome to SonicPredict, which is a small Flask web app I built to serve my fitted machine learning model from the 2020 SPWLA PDDA Machine Learning Contest. The competition took place between March-May 2020 with a total of 31 teams participating. The goal of the competition was to predict P- and S-sonic well logs using other commonly acquired well logs. This is a problem that arises commonly in the oil & gas industry, either as a result of budget constraints, poor borehole conditions, or sometimes the data is simply missing, either because of time passed, mismanagement and/or lack of records, etc ...
P- and S-sonic curves are acoustic measurements of the travel time, or slowness, of sound through the subsurface. Sonic slowness is the reciprocal of velocity, so faster (~denser and/or stiffer) rocks have smaller slowness values. In other words, it takes less time for the sound wave to travel through the rock. Sonic curves are very important borehole measurements to make because when they are combined with density measurements, geoscientists are able to approximate each subsurface layers' elastic properties such as Acoustic and Shear Impedance, Bulk modulus, Young's modulus, Shear modulus, and Poisson's ratio. These properties are crucial in calibrating the seismic response of the subsurface and allow us to better estimate subsurface rock properties away from a well bore.
Before a geoscientist can seismically calibrate the elastic properties mentioned above, wells first need to be tied. Seismic is natively acquired in the time domain and its natural vertical axis is two-way travel time (two-way because of the time it takes a sound wave to travel down into the subsurface and return after bouncing off a reflector). By measuring travel-time in the wellbore with a sonic curve, the well data, which is naturally measured in depth, can be tied to the seismic two-way time axis. Once this crucial well tie is established, the actual elastic property calibration can begin.
Once the time-to-depth relationship is established at the wellbore, a velocity model can be built to convert the seismic to the depth domain, or to calibrate one built using technologies such as tomography. As more wells are drilled in an area, this velocity model is improved. There are several reasons for converting seismic from the time- to the depth-domain. First, the depth domain more closely represents the true structure of the subsurface. This is important for understanding things like stratigraphic dip, closures, traps, and amplitude conformance to structure. Second, it makes assessing gross rock volume of a reservoir substantially easier as the units in depth actually relate to a physical volume. Third, it just makes more sense to think about the subsurface in terms of depth rather than travel time.
Sonic curves are also very crucial in estimating pore pressure given their sensitivity to pore fluids. Having accurate and calibrated models of subsurface pore pressure are critical for safe and efficient drilling. Sonic curves can approximate pore pressure via several well known transforms, and this in turn can be used to calibrate a seismic velocity field to a seismic pore pressure model. Not only is such a tool useful for estimating pre-drill pore pressure at new drilling locations, but it can also be very useful in understanding subsurface fluid flow from source rock to reservoir.
It should hopefully now be clear why sonic curves are so important. However, as described earlier, they are not always available, and even if they are, the measurements are not always reliable if borehole conditions are poor. For these reasons, if we are able to build novel machine learning models that predict P- and S-sonic curves with reasonable accuracy, we would be able to remediate the issues we face when these curves are either missing or of bad quality.
Each team was given the same training data set from which to build novel machine learning solutions. Additionally, we were given a 20% sample of the blind test data with which to test our model accuracy. The ultimate goal was to minimize the combined RMSE of both predicted logs (DTC & DTS). The winner of the competition was the team whose final submission resulted in the lowest RMSE when tested on the full blind test data. The data comes from Equinor's Volve field which was open-sourced in 2018.
The training data consisted of the following well logs:
For more details, you can refer to my final submission Jupyter notebook as well as my GitHub repository for the competition linked above in the navbar. The actual notebook is too large to render directly in the repository, so instead I have linked to github1s which opens the notebook in VSCode. Clicking 'show in preview' on the right hand side will render the notebook.
One of my guiding principals has always been to prefer simplicity over complexity and to only add complexity as needed to effectively solve the problem at hand. I didn't adhere very strictly to this personal mantra during this project and jumped eagerly into using complex models and hyperparameter tuning. In hindsight, I'm still not convinvced that simpler linear models would have performed better, but I wish I had spent a little more time investigating linear models and looking for possible interaction terms amongst the predictors. There are many well-known linear models currently employed by geoscientists derived from empirical measurements (such as the famous Castagna mud-rock line), and I think that if a linear model could work and also be significantly more interpretable than a Random Forest, this type of work might gain traction faster in the oil and gas industry. However, given the limited time to work on this project, I quickly bypassed linear models in favor of tree-based methods, which did appear to work reasonably well.
I did not spend much time on feature engineering. I did apply several transforms to my feature set, such as log-transforming, standard scaling, and Principal Component Analysis, but that only serves to represent the features in a manner with hopefully less variation and a closer approximation to normality. Comparing my results to the top five, a number of the teams employed some form of clustering for common lithotypes, and when this feature was added to their models, it appears to have had a positive effect.
We were not told the true depth or units of the data, although I wish I had tested some assumptions based on the number of samples and known typical log step increments. It is well-established that rock properties change with increasing depth as a result of burial and compaction and I think if I could have introduced some features which gave information about depth and compaction trend it would have provided a positive benefit to the model.
One thing that is apparent from creating a lightened version of my model for the API is that there was very little additional uplift provided in including the Random Forest and Gradient Boosting Regressor models to the average ensemble of XGBoost, PCR, and KNN Regression. I think this underscores that feature engineering would have provided more benefit rather than spending more time on tuning hyperparameters.
I did attempt to use the Photoelectric Factor (PE) and Density (ZDEN) curves to create RHOMAA-UMAA logs. Cross-plotting RHOMAA-UMAA is a very effective way to separate lithologies. While I had some success, I did not exactly have all the data necessary to do this correctly and ultimately abandoned it when I did not feel that the transformed data was correctly cross-plotting on established rock physics templates. I think using an unsupervised clustering technique such as discussed above would have possibly been more beneficial given imperfect and incomplete data.
I chose to work primarily with tree-based methods, such as Random Forest, Gradient Boosting, and XGBoost. Of the top five entries, three used tree-based models, and two used neural networks. I think this reinforces my previous learnings that feature engineering was more important in improving model accuracy than the actual model itself. I think it also underscores how strongly tree-based methods perform and in scenarios where predictability is more important than model interpretability, they can be very reliable choices.
Several of the top five entries also chose to build separate models for predicting DTC and DTS, sometimes using predicted DTC as an input for DTS. The models I built performed multi-target regression for both targets. I think attempting to first predict DTC and then DTS may have resulted in model improvement. DTS typically tracks DTC very closely so it makes sense to first find a robust solution for DTC and use it then as a predictor for DTS.
Several of the models I used (Gradient Boosting Decision Trees, XGBoost, Ridge Regression, & Support Vector Regression) do not natively support Multi-Target Regression, meaning they cannot directly regress for two different response targets. To get around this, I used Scikit-Learn's MultiOutputRegressor to wrap the model as a part of the pre-processing pipeline. One assumption made by MultiOutputRegressor is that the two targets are independent of one another. As I just mentioned, we know that DTC and DTS are related, so perhaps this is evidence to support that I should have built separate models for each.
All-in-all, I really enjoyed participating in this contest. The timing coincided with the first two months of COVID-19 quarantine lock-down and so it gave me something fun to work on in the evenings as we adjusted to working from home and having very limited external contact. This was the first machine learning contest I've competed in and I'm happy to have finished in the top ten. I think I came away with some great takeaways that will be useful to future projects.
Even though my model is not the top performer, I think I have a nice portfolio project as a result of participating. Recently, I built my first Flask web app (PySeisTuned2.0), and this project allowed me to learn how to build a Flask API for serving a machine learning model. Building predictive models is a lot of fun, but if nobody can use them once they are built, then you aren't very useful as a data scientist.
I think one of the reasons data science appeals to me so much is that it combines a number of my intellectual interests: coding, mathematics, statistics, physical and social science, and software development. Coding and programming has been an interest, hobby, and passion of mine since I was in middle school. It's a constant learning journey and it requires patience and persistance. Moments of joy usually result from hours of frustration. If there is anyone out there that has questions, I am more than happy to be a resource! I don't have all the answers, not by a long shot, but I like to help when I can. Feel free to use the contact link below to send me a note and I'll get back to you.
{% endblock %}


12 Comics That Will Ring a Bell With Anyone Who’s Ever Fallen in Love
Not everyone in the world is lucky enough to find their true love. That’s why its value is really immeasurable.  Just like illustrator Luong Thuy, who shows love in her touching and funny comics.
Bright Side likes these comics because they remind us of things that reveal the simplicity of human happiness.
12.
11.
10.
9.
8.
7.
6.
5.
4.
3.
2.
1.
What is true love for you?
Preview photo credit beisme08 / instagram


| fkAnalysis reference pages |
d2=CLUSTERMAHAL(features) d2=CLUSTERMAHAL(features,cluster)
d2=CLUSTERMAHAL(features) computes the mahalanobis distance between the feature vectors and the centroid of all features. Each row of the features matrix is a feature vector.
d2=CLUSTERMAHAL(features,cluster) computes the mahalanobis distance between the feature vectors and the centroid of the subset of features identified by the cluster index vector. Cluster can also be a cell array of index vectors, in that case the return value is a matrix of distances.
| inspect_ica | Toolbox page | process_eeg_ica |


6,198 Georeferenced data View records All records | In viewable area Description Norway About What does this map show?
Citation and licensing Default citation Natural History Museum, University of Oslo: Plecoptera, 2015-07-30. Accessed via http://www.gbif-uat.org/dataset/17e622b5-dfbb-487f-94c7-47cc8cb0823b on 2015-09-16 Rights Creative Commons Attribution (CC-BY) 4.0 License


whats the weather ??¿?¿
where ??
show me that weather
weather
temperature (celsius)
cloud coverage
humidity
rain chance
wind speed


CONTROLS
Use your arrow keys to navigate Pacman.
Press P to pause the game and click or press P again to resume.
GHOSTS
BLINKY
Blinky is the most aggressive ghost. He chases Pacman right away and aims directly to his position.
PINKY
Pinky is cool. And pink! And yes, he chases Pacman right from the start, but doesn't aim directly at him ;-)
INKY
Inky starts chasing Pacman, when he has already eaten 30 Pills.
CLYDE
Clyde starts chasing Pacman when he has eaten more than 2/3 of all the pills.